【サポーターズCoLab勉強会】【iOS】今更聞けないMVPとMVVMの違い
https://supporterzcolab.com/event/339/
に行ってきたので、そのときのレポート
資料
以下、講演を聴きながらのメモ
MVPとMVVMの違いについて
iOSアプリ開発におけるMVPについて
View
presenterからデータをとって表示したり
Presenter
データを持ってるものからデータを取得する
PresenterはViewの参照を持つというのが、
他のアーキテクチャ(MVVM)とは違うところ
Viewでタップされたら、
Presenterが必要なロジックを用いてデータをModelとかから取得する。
PresenterからViewに値を渡す役割はViewControllerが担う。
iOSアプリ開発におけるMVVMについて
ViewModelはviewの参照をするわけではなくて、DataBindingによってViewが値を参照する。
Viewは、DataBindingで画面に反映させる。
ボタンがタップされたときなどに
タップされたことをViewModelに伝えて、
ロジック処理をしたあとに、プロパティ(DataBindingしている値)を更新する。
MVVMでのユニットテストについて
referenceを持っているのは、
VMからModel側のみ
NotificationCenterは自前でインスタンス化すれば
そのインスタンスを知っている範囲内のみで通知することができる
NotificationCenter.defaultというものがよく知られいるが
それはアプリケーション全体に通知してしまう。
Q & A
Q1.
アーキテクチャ選定の際はどのようにしている
A1.
AbemaTVでは、MVPもMVVMもFLUXも使っている
利点として、変更とかあっても、大人数で行なっているときに、コンフリクトしにくいとかがある。
どのアプリケーションについてもこのアーキテクチャが良いというのはなくて、
こういうアプリケーション設計にしたいから、ということを考えて
MVPかMVVMなのかとかを考えて行く。
Q2.
自前でやるときとライブラリを使うときの基準は?
A2.
開発体制や作りたいアプリによるところがあるのだが、
副業とかで何かアプリを作成しているときに
ライブラリのインストールとかも承認してもらったりとかあるんだったら
自前で作ったりとかもする。
本当はRxとか使ったりするのがいいかなとも思っている。