Androidアプリ設計パターン入門を読んだ

この本を読みました.Androidアーキテクチャ周りの知識があまりなくても読みやすく,凄くためになる本でした.

peaks.cc

構成

本の構成は以下の三部構成になっていました.

  1. アプリの設計を知る
  2. 生きた設計を見る
  3. 設計を考える

以下で少し学んだ内容をまとめていきたいと思います.(もしかしたら間違った解釈をしている可能性があります)

1. アプリの設計を知る

MVVMパターン

MVVMパターンの概略図を図1に示します.

流れをざっくり文字化すると,

  • Viewで何かしらactionがあったら,ViewModelを呼ぶ
  • ViewModelはactionに対応した処理をModelに対して行う
  • Modelは処理を実行した後,ViewModelに結果を返すか通知を返す
  • ViewModelはその結果を受け取り,自身の状態を変更する
  • Viewの状態はViewModelとbindされており,ViewModelが変更されるとViewも変更される


f:id:MitubaEX:20180209191852p:plain
図1 MVVMパターンの概略図


このアーキテクチャの特徴はViewModelからViewへの参照が無い点です.これによりView部分とLogic部分を切り離せています.

しかし参照がないことで苦しむ面もあります.本で取り上げられていた事例として,Snackbarの例がありました.前提として,ViewModelはViewの参照を持っていません.なのでViewModelからViewに対して,処理の完了通知を表示する処理を実行できません.そこで本では,Viewにcallbackを登録しておきViewModelの値が変わったら,ViewにSnackbarを出力するようにしていました.

なるほど.

MVPパターン

MVPパターンの概略図を図2に示します.


f:id:MitubaEX:20180209200202p:plain
図2 MVPパターンの概略図


図2からわかるように,ViewとPresenterに参照があります.実際にはContractというインターフェースが,間にありますが省略しています.MVPはあんまり印象に残ってないのですが,PresenterがViewを触れるので,直接データをViewに送れます.

申し訳ない.

2. 生きた設計を見る

ここでは,どういったプロジェクトでアーキテクチャを使ったかなどの興味深い話が載っていました. 勉強になったこととしては,

Fluxは少し知っているつもりでしたが,改めて勉強になりました.

是非読んでみてください.

3. 設計を考える

Androidのライブラリが紹介されていました.

詳しくは本で

感想

MVVM,MVPを少し知ることができて嬉しかったです.Rxの理解がなかなか足りなくて,今後勉強しないとなぁとか思いました.