MVC
アプリケーションを、データと処理を扱うモデル、表示を担うビュー、利用者の入力を受け付けて制御するコントローラーの3つに分けるアーキテクチャパターン。表示部分の変更に柔軟に対応できる。
イマシルちゃんの解説
お店に例えると、モデルは倉庫と帳簿、ビューはお店のショーウィンドウ、コントローラーはお客さんの注文を受ける店員さん、って感じかな。
役割を分けておけば、ショーウィンドウの飾り付けを変えても、倉庫や帳簿には影響しないよね。
MVCも、画面のデザインを変えるときに、中身の処理をいじらなくて済むんだよ!
より深い解説
定義
MVC(Model-View-Controller)は、POSAでも紹介されている、GUIを持つアプリケーションの代表的なアーキテクチャパターンである。アプリケーションを次の3つのコンポーネントに分ける。
| コンポーネント | 役割 |
|---|---|
| モデル(Model) | データの管理と、業務の処理(ビジネスロジック) |
| ビュー(View) | モデルのデータを利用者に表示する |
| コントローラー(Controller) | 利用者からの入力を受け付け、モデルやビューを制御する |
動きの流れ
- 利用者がボタンを押すなどの操作をする
- コントローラーが入力を受け取り、モデルに処理を依頼する
- モデルがデータを更新する
- ビューが更新されたモデルのデータを表示し直す
利点
- 表示(ビュー)と処理(モデル)が分かれているので、画面のデザインを変えても、処理を変更せずに済む
- 1つのモデルに対して、複数のビュー(一覧表示とグラフ表示など)を用意できる
- 役割ごとに分担して開発やテストを進めやすい
Webアプリケーションでの利用
多くのWebアプリケーションのフレームワーク(Ruby on Rails、Spring MVC、Laravelなど)が、MVCかそれに近い構造を採用している。Webの場合は、コントローラーがHTTPのリクエストを受け取り、モデルでデータを処理し、ビュー(HTMLのテンプレート)で応答を作る、という流れになる。
POSAのほかのパターンとの見分け方
「データの管理」「利用者への情報表示」「利用者からの入力と制御」の3つに分ける、GUIのシステム、表示部分の変更に柔軟、という言葉があれば、MVCである。