MVCモデルとは!特徴とメリットを解説!

記事更新日: 2020/12/12

ライター: ナガヤン

ハローエンジニア!SEライターのナガヤンです!

ソフトウェア開発をしていると「このフレームワークはMVCモデルが前提です」なんて会話があったりします。

MVCモデルとは何か、どんな時に役立つのかを解説します。

MVCモデルは、ソフトウェア設計のデザインパターン

MVCは、ソフトウェアの構成をModel(モデル), View(ビュー), Controller(コントローラー) の3つの領域に分けて考える設計モデルです。それぞれの頭文字をとってMVCモデルとよばれます。ソフトウェアアーキテクチャの一種とされることもあります。

ここで重要なのは、Model, View, Controller はそれぞれ次の役割を持つことです。

MVCのそれぞれの役割
  • Model:アプリケーションのシステム本体。
  • View:アプリケーションの出力。ユーザーへの表示を制御します。
  • Controller:アプリケーションの入力部分。

図にすると次のようになります。

記事や参考元によっては View や Controller の担当領域や矢印の意味や解釈が変わりますが、ここでは最もシンプルなモデルで考えていきましょう。

Model(モデル)

Model は、ビジネスロジックとよばれる、アプリケーションシステムの主要な処理を担当します。アプリケーションの機能や通信は、ここで行われます。

アプリケーション内における Controller からの入力に応じた入力値の処理や、View での表示に関するデータのやり取りを担当するほか、 データベースなど外部リソースとの通信もModelの領域です。

例えば、データベースとのやり取りをする場合は、Controllerで新しい情報が入力されたら一定の書式に変形してデータベースに登録する、Controller からデータの表示がリクエストされたらデータベースから読み取って View に表示する、などがModelで実行する内容です。

実際にユーザーが見やすい形式とデータベースで登録される形式が異なる場面はあります。例えば日付の場合、データベースでは「2020-12-12」という形式で登録されますが、ユーザーには「2020年12月12日」の方が見やすいとなれば、その変換処理をModelにて実行します。

View(ビュー)

View は、ユーザーに見せるべき内容や実行した結果の表示を担当します。ユーザーが見ている画面のレイアウトや表示の更新はここで行われます。

実際の例だと、Webサイトにおける動的なページなどがわかりやすいです。

例えば、Twitter や Facebook といったSNSだと、リアルタイムに最新の投稿が一番上に表示されて、ページの内容が更新されていきます。これは View から Model にリアルタイムにデータを更新するリクエストを出しており、Model から得た最新投稿のリストを View に反映しているという関係になっています。

Controller(コントローラー)

Controller は、ユーザーの入力を監視してModelとViewの制御を担当します。ユーザーが入力する部分は全てこの Controller にあたります。

例えば、入力フォームはControllerとViewのシンプルな構成で、「サーチバンク」と文字を入力すると、入力フォームに「サーチバンク」という文字が表示されます。これは Controller が キーボードからの入力を受け取り、入力フォームという View にテキストを表示している関係になっています。

文字の入力はキーボードの機能じゃないの?と思う方もいるかもしれませんが、実はそうではありません。

例えば入力フォームからフォーカスを外してキーボードを叩いても何も起こらないですよね?つまり、入力フォームではキーボードの入力をControllerが監視しているから、入力フォームのViewに入力に応じたテキストを出せているのです。

MVCモデルは、どう役に立つのか

では MVCモデルは実際にどのような場面で役に立つのでしょうか?

MVCモデルが私たちに伝えてくれるのは「入力と出力の分離」です。

入力と出力の機能を分割して構成しておくことで、保守性が高まり、安定した開発をできるようになります。

まとめ

MVCモデルはソフトウェア開発をするうえで、ソフトウェア設計において有効なパターンのひとつです。

ソフトウェア開発の際には、MVCパターンが適用できるか検討してみてはいかがでしょうか。

 

PR

サーチバンクではマシュマロ質問箱を設置しています。
スクールや就職に関する質問、技術的な質問やライター個人の趣味など内容に応じて適切なメンバーがお答え致します。
是非なんでもお気軽にお問い合わせ下さい。
https://marshmallow-qa.com/search_bank

この記事を書いたライター

ナガヤン

こんにちは、SEライターのナガヤンです!
サーチバンクをご覧いただき、ありがとうございます。

現役システムエンジニアの私だからこそできる、便利で楽しくなる情報を発信していきます!

これからの働き方を考えるメディア「JobTier」にて、対談記事を書いていただきました!

この記事に関連するラベル

ページトップへ