GUIアーキテクチャの変遷について理解する
MVC→MVP→MVVM、FLUX、SAMなどいろんな用語が出てきてよく分からなかったので、自分の理解用と他の人に説明を求められたときに楽ができるようにまとめたい。
MVCやらFluxやらMVVMやらのGUIアーキテクチャを状態管理フレームワークとして理解するの面白い
状態管理フレームワーク
データの流れを構造化するためのフレームワーク。
データの流れが複雑になって追えなくなるのを解消するために利用される。
これらの関心はデータの流れや状態管理にあるので、アプリケーションフレームワークがReactだろうがAnguglarだろうが思想は共通である。
- Flux
- Redux
- SAM(State-Action-Model)
- MVC(Model-View-Controller)
- MVVM(Model-View-ViewModel)
各アーキテクチャの図解も載せられていて、それぞれの概要を把握するのには十分
ただ、細かい違いや思想の違いまではわからない。
現代の環境(高度なブラウザAPIなど)では、PDS(Presentation Domain Separation)の必要性は低い。
MVCが時代遅れと言われるのは、これが理由
Controllerがやるべき責務はもはやView(ブラウザAPI)に内包されているので、わざわざMVCで分ける意味がない。
それどころか、分けなくて良いものを無理やり分けようとすることになるのでうまくいかないことが多いというネガティブなデメリットが多い(FatViewController問題など)
当初(MVCが提唱されたのは1979年)のMVCはマウスカーソルがどのView要素上に位置するかController側でハンドリングしていたが、現代のWebブラウザはそれを全て自動で行っている。
https://ja.wikipedia.org/wiki/Model_View_ViewModel
「MVC->MVP->MVVM->Flux->SAM」な流れについて
MVVMに関する資料
SAM(State|Action|Model)の原典っぽいやつ
SAMに関する理解が書かれたブログ
Reduxに向かう方向性でMVC->Flux->Reduxでの解説
図解が良い