MVCについて知ろう
MVC
はModel
、View
、Controller
の略です。ウェブアプリケーションを構成する様々な方法論の一つで、コンポーネントを3つに分けた代表的なパターンです。有名なウェブフレームワークであるSpring Framework
で使用されていることで知られており、細かい違いはありますが、様々なウェブフレームワークが似たパターンを採用しています。
他のフレームワークには何があるの?
- 似たパターンとしては
MVT
パターンがあります。PythonベースのフレームワークDjango
で使用される構成パターンで、Model
、View
、Template
の略です。各役割はMVC
パターンとほぼ一致しますが、マッチングの基準が異なります。
MVCとMVTの違い
- 上の図を見れば、
MVC
とMVT
の関係がどのように異なるかがわかります。 Django
のView
はSpring
ではController
であることがわかりますね!- さらに
Spring
でのView
がDjango
ではTemplate
であることもわかります。
まあ、ここまでで違いも分かったことですし、そろそろMVC
が何かを見てみましょうか?
Model, View, Controller そして User
Model, View, Controllerの関係を簡単に表現すると上の画像のようになりますが、実際には矢印がさらに色々な方向に伸びることができます。
ここで重要なのは矢印の方向ではなく、流れを見ていただきたいのです。
Model
まずはModelを見てみましょう。Modelはデータを保持するオブジェクト、エンティティを指す言葉で、データベースに保存する実際のデータのクラスが含まれるオブジェクトです。
簡単に言えば、データベースと通信する友達と考えれば良いでしょう。
CRUD操作が行われるすべてのオブジェクトの情報を保持していなければならず、View、Controllerについて参照してはいけません。
View
ユーザーに表示されるUIを保持するオブジェクトです。RestFulなAPIが主流となり、近年ではSpringで直接HTMLを保持することは少なくなりました。Vue.js、ReactといったフロントエンドフレームワークがSpring MVCのViewを担当していると考えるべきでしょう!
ユーザーから最初に入力を受け取り、Controllerに送る役割を担います。
HTMLのinput
、checkbox
、submit
ボタンなどのユーザー入力タグ、データベースから取得したデータをユーザーに表示する部分などを処理します。
Controller
ユーザーからのリクエストを受け取り、適切にデータを処理し(Model)、Viewを呼び出す、または非同期通信の場合、状況に応じた形式(JSON/XML..etc)で応答する役割を果たします。
まとめ
- 今日は簡単にMVCパターンについて学びました。
- 初めての技術ブログを作成する上で、一つの投稿にどれほどの労力が必要なのかを知ることができました。
- 次回のトピックでは、Spring MVCパターンについてもう少し詳しく調べてみたいと思います。