ゼロからiOSアプリを作る場合、どう作るかということについて考えてみる。
今ならSwiftUIは使うだろう。では、その後は?
SwiftUIならMVVMでなくても良いという話があったなと思って改めて調べてみると何度か読んだ記憶のある記事を発見。
「SwiftUIでMVVMを採用するのは止めよう」と思い至った理由
【SwiftUI】なぜ、MVVMをやめて、The Composable Architecture(TCA)を採用するのか?
改めて読んでみると、MVVM、ViewModelとはなんぞやというのが難しいなと思った。自分がイメージしたViewModelはどうやらViewModelではないらしい。ViewModelにはロジックは書かない。ViewModelはModelの影というのが一番しくりきた。そういえば昔、モデルはじゃあどういう構成にすればいいんやと思ったのを思い出した。実際によく見るViewModelはViewのための色々をやってくれている(Composeしている)もので、ViewModelという名前は正しくないとしても、Viewのために色々やってくれるなにかの置き場はやはりあった方が便利そうだ。
TCAの良さは、単方向データフローというのは置いておいて、reducerが関数になっていることで、Viewと1:1の関係の何かを持たなくて良いこと(なのでcomposable)だと理解したが、記事中でresendingメソッドとして合成しているあたりは、RxSwiftみを感じて学習コストの高さを感じる。おそらく他にも色々と便利なのだろうが、趣味プロジェクトならともかく現時点では導入しづらい。
単方向なデータフローというだけならViewModel(でもViewStoreでも名前はおいておいて)で、実現できると思っていたが、composableであるという点が利点だとするとなるほどそれは確かにとなるのでTCAを使いたい気持ちにもなってきた。
とにかくViewModelという名前は使わない方が良いかなと思いつつ、TCAを使わないのであれば構成はそのままで良いのか?というところはもう少し考えたい。
今日はここまで