MVCモデルとそのメリットとは?具体例を用いて詳しくご紹介
今回は、Webアプリケーション開発でよく聞くMVCモデルについて、メリットやデメリットなども含めて説明をしていきます。M(Model)、V(View)、C(Controller)について認識し、今後の学習に役立てば幸いです。
-
Contents
MVCモデルとは?
WebアプリケーションやWebサイトなどの開発を簡単にする、フレームワークという枠組みで用いられる考え方のひとつです。Model(モデル)、View(ビュー)、Controller(コントローラー)という機能を分担させて開発をすることができるので、コード記述が分かりやすく整理され、業務を効率的におこなうことができます。
-
MVCそれぞれの役割
まずはこの項でMVCそれぞれの役割をお伝えし、次の項では具体例を用いてMVCモデルでの処理の流れを説明します。
-
Model(モデル)
データベースとデータのやり取りを処理する部分です。クライアント(Webアプリケーションなどを利用する人)がしたリクエストをControllerが制御し、Modelにデータの取り出しを指示します。ModelはControllerの指示に基づいてデータベースからデータを取り出し、Controllerにデータを送信するようになっています。
また、Modelでのデータ処理はControllerへのデータ送信だけではありません。Controllerから受け取ったデータをデータベースへ保管、更新、削除するだけの処理もできますし、データベースから受け取ったデータをControllerが扱いやすいデータに変換して送信することもできます。
加えて、Modelはデータベースそのものではなく、あくまでデータベースからデータを取り出したり、処理をする部分です。データベースと混同しないように注意しましょう。
-
View(ビュー)
クライアントがパソコンやスマートフォンなどで、実際に目にする画面の処理をする部分です。Modelで取り出したデータをControllerが受け取り、制御をしたあとにViewにデータを送信します。ViewがControllerから受け取ったデータはそのままでは表示されないので、HTMLやCSS、JavaScriptなどの処理をおこなって画面に表示をするようになっています。
-
Controller(コントローラー)
ModelとViewの制御・仲介をする部分です。クライアントからのリクエストをあらかじめ決まっている方法で処理をして(ルーティング)、Modelにデータの取り出しなどを指示し、Modelが取り出したデータを受け取ります。受け取ったデータをViewに送信し、Viewの機能でクライアントの画面に表示されるようになっています。
-
MVCモデルの具体例
ここではWebサイトを利用する際に、MVCモデルではどのような処理がされているのかを説明します。
Webブラウザを利用して見たいホームページをクリックします。
クライアントがクリックをして、WebサイトやWebページなどを見ようとすることをリクエストといい、クリックされたときのURLとControllerの処理をルーティングといいます。
今回の場合、クリックされたときのルーティングはR-Stoneのトップページを表示することになっているので、クリックによってControllerが反応し、Modelにデータベースからトップページのデータを取り出すように指示をします。
ModelはControllerの指示に基づきトップページのデータを取り出し、取り出したデータをControllerに送信、Controllerは受け取ったデータをViewに送ります。
データを受け取ったViewがHTMLなどの処理をおこない、クライアントの画面にトップページが表示されます。
クライアントがブラウザから特定のWebサイトなどに入るときは、クリック時のルーティングから、Controller→Model→Controller→Viewという処理の流れになっています。
次に、クライアントがどのような企業があるのかと思い、『求人検索』をクリックしたとします。
求人検索のアイコンは、求人検索のWebページURLを開くようにルーティングされています。そのため、ControllerはModelに求人検索ページのデータを要求し、同じような流れを経て、クライアントに求人検索の画面が表示されるようになっています。
クライアントがブラウザからWebサイトに入るときと違い、Webサイト内でリクエストをする際は、Viewで表示されたアイコンなどのルーティングから、Controller→Model→Controller→Viewという処理の流れになります。
一般的なMVCモデルでは、他のWebアプリケーションなどでも上述したような処理の流れになっています。
-
MVCモデルのメリットデメリット
MVCモデルのメリットとデメリットをお伝えします。
-
メリット
機能ごとにファイルを分けて開発をするため、コードが整理されて分かりやすくなり、機能の変更をする際も関連コードを簡単に探すことができます。また、MVCそれぞれを分業して開発することもできるため、作業の効率化にも役立ちます。
加えて、例えばModelでバグが発生した場合でも、ファイルで分けられているのでControllerやViewへはあまり影響を与えず、原因の特定もしやすくなっています。MVCモデルは、それぞれを分けることで効率的に開発ができ、保守性も高くなっている概念です。
-
デメリット
MVCモデルは各機能ごとに開発をすることになるため、M、V、Cの機能をしっかりと書き分ける必要があります。これらはコード記述に制約が増えることにつながり、場合によってはかえって時間がかかってしまうこともあるでしょう。また、そのような特徴から小規模なプロジェクトにはあまり向いていません。
さらに、機能拡張などを通してModelやControllerに部分的な負担がかかり、管理が大変になる、処理速度が遅くなってしまうなどの問題が発生する可能性があります。特にControllerは、ViewとModelを制御する役割を持っているため処理が大変になりがちです。
また、ControllerがModelからデータを呼び出すことが増える過ぎると、ModelがControllerに依存しているような状態になり、MVCモデルのメリットであるそれぞれの独立性を保てなくなる可能性があります。
これらの状況を回避するためには、機能拡張時に必要な処理を厳選・整理し、ControllerやModelの負担を増やさないようにする必要があります。また、ファサードパターンという、通常の処理とは違うControllerとModelのアクセスパターンを作ることで負担を軽減することも可能です。
-
作業効率を上げるために
MVCモデルは機能ごとでの分業が可能なため、大規模な開発ではチームごとに担当することができます。チームごとの開発では、それぞれに専門性の高い人員を配置することで設計、開発、保守、拡張などを柔軟に、効率良くおこなうことができるでしょう。
-
まとめ
MVCモデルを理解するためには、Model、View、Controllerの役割と、クライアントの要求に応えるルーティングの流れがあることを認識する必要があります。また、Modelのデータ呼び出しとデータベースを混同しやすい傾向があるので、その違いにも注意をしましょう。この記事が少しでもお役に立てば幸いです。