こんにちは、セブテク編集部です。
Web開発を行っている方は、MVCフレームワークという言葉をよく耳にするのではないでしょうか。
MVCモデルはアプリケーションを開発する上で非常に重要な概念です。
今回はMVCモデルとはどのようなものなのか、どんなメリットがあるのかを解説していきます。
MVCモデルってなに?どんなメリットがあるの?
MVCモデルとはプログラムの書き方の一つであり、プログラムを「Model(モデル)」「View(ビュー)」「Controller(コントローラー)」この3つの役割に分けて開発を行う方法です。
機能に応じてファイルを区分してプログラムを書くため、分業してプログラムを書いたり仕様変更がしやすいなどといったメリットがあります。
PHPの「Laravel」やRubyの「Ruby on Rails」など、非常に多くのフレームワークがこのMVCモデルを採用しています。
MVCモデルのそれぞれの役割とは
M:Model(モデル)
- データベースとデータのやり取りを行う
- アプリケーションが行うデータの操作
モデルの役割は、データベースを通じてデータのやり取りや操作を行うものです。
データの取得、更新、削除、新規作成といったデータベースとのデータのやり取りや、日付のフォーマットの指定などといった、アプリケーションが扱うデータの操作の役割はモデルに区分します。
V:View(ビュー)
- Webブラウザに表示するHTMLを動的に生成する
ビューの役割は名前のとおり、Webページを画面に表示させるためのものです。
「動的に生成」というのは、ユーザーによって表示させる画面の内容が変わるなどといった流動性があることを指します。
例えば、FacebookなどのSNSのタイムラインはユーザーによって表示させる内容が違いますよね。
こういった処理も含めた、画面上に出力するためのプログラムをビューに区分します。
C:Controller(コントローラー)
・ユーザーの入力に基づきモデルとビューを制御する
Webページを表示させるためにはデータベースから必要な情報を取得し、その情報をもとに画面を生成しなければいけません。
その橋渡しとなるのがコントローラーの役割で、ユーザーの入力に基づきモデル・ビューが何の処理をすべきかコントロールをします。
実際の流れを図で理解しよう
最後に実際のプログラムの流れを図を使って説明します。
以下はMVCモデルの一例を図解したものです。
それぞれがどんな役割をしているのか見てみましょう。
- コントローラー → ユーザーのアクセスに応じてモデルとビューに処理を命令
- モデル → コントローラーからの命令によりデータベースにアクセスし、データベースの操作・参照により必要な値を取り出しビューに値を渡す
- ビュー → モデル同様に、コントローラーからの命令によりユーザーが求めるページを表示する。ページの中身となるデータはモデルから受け取る
上記のように、役割に応じたプログラムがそれぞれ実行され、最終的にユーザーの操作に応じた結果が画面に表示される流れとなっています。
また、MVCモデルを採用しているフレームワークでは、ファイルがどこに保存されているかわかりやすいように、モデル・ビュー・コントローラーそれぞれにディレクトリを分けてファイルを管理します。
それぞれの役割に応じてプログラムを書くため、分業してプログラムを書いたり、仕様変更する際には特定のファイルだけ修正することが可能となっています。
さいごに
実際にはフレームワークやプロジェクトの方針などにより、それぞれにどこまでの役割を担わせるかは大きく変わるため、この記事で説明した通りとは一概には言えません。
しかし、MVCモデルという概念があることを理解した上でフレームワークを利用することは、効率的にコードを書いたり、視認性の高いコードを書く上で重要なことのため、今回はフレームワークの初学者向けにこの記事を書きました。