はじめに
MVCモデルについて勉強した内容をまとめてみた。
情報処理試験ではよく見かけるワードだが、誰かに説明するとなると難しい。。。
目次
MVCとは
メリット・デメリット
動作イメージ
MVCとは
アプリケーションをModel、View、Controllerという3つの役割に分け、それぞれの分担を明確化させるアーキテクチャ(ソフトウェア構造)
Model→データの処理を担当
View→ユーザーが直接触れる部分。画面への表示や入力した値をcontrollerへ渡す
Controller→ModelとView間でデータの引き渡しや機能の呼び出しを行なう
メリット・デメリット
まずはメリットから。自分が製造を通して感じたメリットは以下の2つ。
①保守性の向上
各々の役割がハッキリしてるので、エラーがあった時の原因を突き止めやすい
例:Modelの抽出結果は正しいのに、画面に表示された値が想定と異なる
→Viewに問題がある可能性が高い
②役割の独立性
Model、View、Controllerはそれぞれ独立しているので、各々を個別に開発することができる
例:顧客に画面イメージを確認してもらうために、Viewのプロトタイプを作成する
テーブルレイアウトがあるので、Modelの定義を先行して行なう
次にデメリット。
①役割の分割が大変
何をどこに書くのかを設計者・製造者が理解していないと、プログラムの構造が歪になってしまう。そうなると、上記のメリットを享受できなくなる。
なお私が躓いたのは、ControllerとModelの分割。Modelに書くべき処理をControllerに書いてしまい、Controllerの規模が膨れ上がってしまった。
これはFat Controllerと呼ばれるアンチパターンだと後に知った。何をどこに書くべきなのか、メンバーはしっかりと理解すべき。
動作イメージ
次は実際の機能を例にして、Model/View/Controllerがどのような処理をしているのかを見ていく。
検索条件を入力して「検索」ボタンをクリックすると、検索条件に紐づく結果が画面に表示される
というよくある検索画面をイメージして、以下の図を見ていただきたい。
図解のセンスはいったん保留にするとして、手順としては以下の順番で処理が行われている。
手順
1.ユーザーが画面で検索条件を入力し、「検索」ボタンをクリックする
2.Viewは検索条件をControllerへ引き渡す
3.ControllerはModelに定義されたメソッド操作を呼び出す
4.Modelはデータ抽出を実行
5.Modelは抽出結果をControllerへ返す
6.ControllerはViewへ結果の表示命令を出す
7.Viewは検索結果を表示する
大まかな流れとしてはこの認識で問題ない。
この図を見ると、冒頭で説明した
Model→データの処理を担当
View→ユーザーが直接触れる部分。画面への表示や入力した値をcontrollerへ渡す
Controller→ModelとView間でデータの引き渡しや機能の呼び出しを行なう
の役割を理解しやすいと思う。
終わりに
この記事では、MVCの概要について解説した。
初めての投稿ということもあり、お見苦しい点は見受けられると思うが、今後も投稿を継続することで徐々に改善していきたい。
ご指摘等あれば、コメントください。
最後までお読みいただきありがとうございました!