【エムブイブイエム】
MVVM(エムブイブイエム) とは?
最終更新:
💡 画面の状態と操作を、ViewModelで整理する
Model・View・ViewModelに役割を分け、画面とデータやロジックの結び付きを整理する設計パターン。ViewModelが表示用の状態や操作を提供し、Viewがバインディングなどで利用する。
📌 このページのポイント
- Modelはデータと業務ロジック、Viewは画面と表示の振る舞いを担当する
- ViewModelは表示用の状態・プロパティ・操作を提供する
- バインディングは一方向や双方向など、用途に応じた方式を使う
- ViewModelを画面部品から独立させ、ロジックをテストしやすくする
3つの役割は何なの?
Modelはデータや業務上のルール、Viewは画面の構造や表示の振る舞い、ViewModelは画面に渡す状態や操作を担当するよ。ViewはViewModelを利用し、ViewModelはModelやサービスを使う。画面部品への依存を分けるのが大切なんだ
データバインディングはいつも双方向?
ViewModelは何を持つの?
表示する値や読み込み中といった状態、保存などの操作を提供するよ。例えばModelの価格1000を、表示用の「¥1,000」に整える構成もある。変換を別の層に置く方法もあるので、全ての変換を必ずViewModelに入れるという意味ではないんだ
Viewには何も処理を書かないの?
業務ロジックは分けるけど、画面の構造や表示に関する処理はViewの役割だよ。アニメーションなど、画面部品に関わる振る舞いを持つこともある。ViewModelには画面部品を直接操作させず、状態や操作を通じて連携するんだ
MVVMなら画面のテストも全部いらなくなる?
まとめ:ざっくりこれだけ覚えればOK!
「MVVM」って出てきたら「画面とデータの間に、表示用の状態や操作を持つViewModelを置く設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Model-View-ViewModel」 = モデル・ビュー・ビューモデル
💬 データや業務処理のModel、画面のView、表示用の状態や操作を提供するViewModelの名前を組み合わせたものだよ