Model-View-ViewModel
略 : MVVM
https://docs.microsoft.com/en-us/archive/blogs/johngossman/introduction-to-modelviewviewmodel-pattern-for-building-wpf-apps
『iOS アプリ設計パターン入門』 より
2005 年に John Gossman (Microsoft の WPF および Silverlight アーキテクト) が提唱した GUI アーキテクチャ
Presentation Model パターンを WPF および Silverlight プラットフォーム向けに特殊化したもの
関義隆によると、Presentation Model パターンよりは Application Model パターンに類似しているのではないか、とのこと
Application Model パターンと類似しているが、Controller は存在しない
MVVM の特徴
大きなアプリケーションのためのアーキテクチャで、単純なアプリケーションでは実装コストがオーバーキル
大きなアプリケーションでも、データバインディングがメモリ効率に影響を与える可能性
View と ViewModel をデータバインディングで関連付ける
View と ViewModel が疎結合になるため、View がなくても ViewModel をテストしやすい
目的
WPF においては、次の 2 点
UI の実装とロジックの実装を分離して作業分担できるように (求められる専門性が異なる)
責務の分離により変更時に影響範囲を小さく
iOS で MVVM を採用する際の理由は、関数型リアクティブプログラミング (FRP) との相性が良いため、ということが多い
RxSwift や ReactiveSwift などの FRP に特化したライブラリを利用する