MVVM
MVVM(Model-View-ViewModel)パターンは、ソフトウェアの設計パターンの1つです。
MVC(Model-View-Controller)モデルでは、VとCの分離が必要となりますが、Windowsアプリや
Androidアプリに準備されているフレームワークではその分離が難しいです。
例えば、Androidのフレームワークでは、ActivityやFragmentがViewとControllerの両方の役割を果たします。これらのクラスは、UIのレイアウトを管理し、ユーザー入力を処理し、データをModelから取得します。これらの理由から、ViewとControllerの分離は難しいと言えます。
同様に、Windowsのフレームワークでは、ViewとControllerの役割が混在しており、UIイベントは通常、Viewの範囲で処理されます。
概要
MVVMはアプリケーションの構造を3つの主要なコンポーネントに分割します。
- Model(モデル)
- View(ビュー)
- ViewModel(ビューモデル)
コンポーネントの内容
-
Model(モデル):アプリケーションのデータとビジネスロジックを表します。モデルはデータベース、ファイル、APIなどからデータを取得し、それをアプリケーション内で使用できる形式に変換します。
-
View(ビュー):ユーザーに表示されるUI部分です。ビューはユーザーの操作を受け取り、それをViewModelに伝えます。
-
ViewModel(ビューモデル):ViewとModelの間の接続役を果たします。ViewModelはViewからの入力を間接的に受け取り、それに基づいてModelを更新します。具体的には、ViewがViewModelのメソッドを呼び出すことで入力を受け取ります。また、ModelのデータをViewが表示できる形式に変換します。
MVCとの違い
MVVMにおいて、MVCと違ってVが入力も管理します。Cが制御していたキー入力部分も含めての対応となります。
MVCに比較し、WindowsアプリやAndroidアプリに提供されているフレームワークでの実現がしやすいです。