MVCについて知ろう

MVCについて知ろう

2022年2月22日

MVCModelViewControllerの略です。ウェブアプリケーションを構成する様々な方法論の一つで、コンポーネントを3つに分けた代表的なパターンです。有名なウェブフレームワークであるSpring Frameworkで使用されていることで知られており、細かい違いはありますが、様々なウェブフレームワークが似たパターンを採用しています。

他のフレームワークには何があるの?

  • 似たパターンとしてはMVTパターンがあります。PythonベースのフレームワークDjangoで使用される構成パターンで、ModelViewTemplateの略です。各役割はMVCパターンとほぼ一致しますが、マッチングの基準が異なります。

MVCとMVTの違い

image

  • 上の図を見れば、MVCMVTの関係がどのように異なるかがわかります。
  • DjangoViewSpringではControllerであることがわかりますね!
  • さらにSpringでのViewDjangoではTemplateであることもわかります。

まあ、ここまでで違いも分かったことですし、そろそろMVCが何かを見てみましょうか?

Model, View, Controller そして User

image

Model, View, Controllerの関係を簡単に表現すると上の画像のようになりますが、実際には矢印がさらに色々な方向に伸びることができます。

ここで重要なのは矢印の方向ではなく、流れを見ていただきたいのです。

Model

まずはModelを見てみましょう。Modelはデータを保持するオブジェクト、エンティティを指す言葉で、データベースに保存する実際のデータのクラスが含まれるオブジェクトです。

簡単に言えば、データベースと通信する友達と考えれば良いでしょう。

CRUD操作が行われるすべてのオブジェクトの情報を保持していなければならず、ViewControllerについて参照してはいけません。

View

ユーザーに表示されるUIを保持するオブジェクトです。RestFulなAPIが主流となり、近年ではSpringで直接HTMLを保持することは少なくなりました。Vue.js、ReactといったフロントエンドフレームワークがSpring MVCのViewを担当していると考えるべきでしょう!

ユーザーから最初に入力を受け取り、Controllerに送る役割を担います。

HTMLのinputcheckboxsubmitボタンなどのユーザー入力タグ、データベースから取得したデータをユーザーに表示する部分などを処理します。

Controller

ユーザーからのリクエストを受け取り、適切にデータを処理し(Model)、Viewを呼び出す、または非同期通信の場合、状況に応じた形式(JSON/XML..etc)で応答する役割を果たします。

まとめ

  • 今日は簡単にMVCパターンについて学びました。
  • 初めての技術ブログを作成する上で、一つの投稿にどれほどの労力が必要なのかを知ることができました。
  • 次回のトピックでは、Spring MVCパターンについてもう少し詳しく調べてみたいと思います。