アプリケーションを開発する際に採用されるモデルの一つとしてMVCモデルというものがあります。
MVCモデルとはプログラムを3つの役割に分けてそれぞれ開発していくという考え方であり、アプリケーションの開発の際に採用されることが多いモデルです。
不慣れだとどこで何をやっているか分かりにくい点がありますが、慣れてくるとプログラムを3つの役割に分けて開発していくので、コードを書くべき箇所が明確になるため開発がしやすくなります。
MVCモデルとは何か?
まずMVCモデルについて説明します。
MVCモデルとはプログラムをModel、View、Controllerの3つに分けて開発をする考え方で、それぞれ決まった役割があります。
プログラムを役割ごとに分けて開発することでコードの責任範囲が明確となり、プログラムを書きやすくなるだけではなく、保守もしやすくなります。
また、新しい機能を作る際に既存のプログラムの流用もしやすく、機能追加も容易にできるようになります。
MVCを一人で担当することも可能ですが、MVCを担当を分けて開発するのにも向いており、画面とそれ以外などと担当者を分けることで、開発者の強みを活かしてプログラムを開発していくことも出来ます。
次の章からMVCのそれぞれの役割について紹介していきます。
M(Model)
MVCモデルのM(Model)ではプログラムの処理の実態やデータベースとのやり取りなどを書きます。
データベースアクセスに使うSQLをべた書きすることもありますが、SQLを外部ファイルとして分けて記述することで、保守性を高める場合もあります。
処理の実体を記述するために最もコードのステップ数が多くなる傾向にあり、MVCの中でも最も作るのが大変な箇所と言ってもいいでしょう。
V(View)
V(View)では、画面のインターフェースを定義します。
つまりどのような画面の見た目にするのかを記述します。
HTML、CSS、Javascriptといったユーザーの見た目そのものの記述や、見た目の制御の記述を行うのがV(View)での役割です。
また、Controllerに処理のリクエストを行う役割とModelで行った処理結果を受け取って表示する役割も持っています。
Controllerに処理のリクエストを行う際には一般的にはformタグを使い、指定のURLにSubmitすることでリクエストを行います。
C(Controller)
C(Controller)はViewでリクエストされたURLを識別し、Modelの処理を呼び出すという、ViewとModelの橋渡し的な役割を持ちます。
Viewが処理をリクエスト→
Controllerがリクエストを受け取る→
Modelの処理を実行して処理結果をControllerに返す→
ControllerがModelの処理結果をViewに返す→
Controllerから受け取った処理結果をViewで画面に表示する
このようにControllerはViewとModelをつなぐ重要な役割を持っています。
Controllerのコードのステップ数はそこまで多くありませんが、利用するフレームワークや言語によってどのようにViewに処理結果を渡すかの理解をきちんと行わないと、うまくViewに値が渡せずに期待通りの動作になりません。
なので、ControllerでどのようにViewに値を返すのかをきちんと理解したうえで開発の仕事を行うことが重要になります。
まとめ
今回はMVCモデルについて説明を行いました。
各モデルの特徴は以下の通りです。
Model:
プログラムのロジックやデータベースとのやり取りなど処理の実体を書く
View:
画面の表示やControllerから受け取った値の表示を行う
Controller:
Viewから送信されるリクエストを受け取り、Modelに処理を依頼し、Modelの処理結果をViewに返す
MVCモデルを採用する上で起こりがちなのがControllerとModelの役割が曖昧になってしまうことです。
例えばModelでやるべき処理をControllerで記述することでソースが読みにくくなることがあります。
しかし、これはModelとControllerでやるべきことをきちんと理解していないことから起こることであり、ModelとControllerの役割を明確に分けてプログラムを開発することを意識すれば防げる問題であります。
ControllerはあくまでもViewとModelの間の受け渡しをする部分で、ここでModelで行うべき処理を行う必要がないことをしっかりと理解しておけば、Controllerのソースが読みにくくなる問題を防げるはずです。
MVCモデルはプログラム開発の役割を分けることで開発と保守を容易にする考え方です。
この考え方をきちんと理解し、MVCモデルを導入したために余計に分かりにくいプログラムになったということが起こらないよう、MVCモデルを採用する際はきちんとMVCモデルについて理解することが必要です。
今回の記事はここまでとなります。
また次の記事でお会いしましょう。