MVCフレームワークって一体何?わかりやすく解説します!
Web開発を行っている人はMVCフレームワークという言葉をよく耳にするのではないでしょうか。
MVCフレームワークとは「MVCモデル」という概念を使ったフレームワークのことです。
現場ではMVCフレームワークがほぼ必須になっているので、MVCの知識を持っていなければなりません。
MVCモデルとは一体どのようなものなのでしょうか。メリットやそれぞれの役割など、詳しく解説していきます。
目次
MVCフレームワークとは
MVCとはModel(M)、View(V)、Controller(C)のことです。
主にデータの処理を行うModel、ユーザーが入出力を行うView、ViewとModelを制御するController。
このようにそれぞれ役割をもたせた3つのプログラムに分けて設計していく方式を、MVCモデルと呼びます。
MVCモデルを採用したフレームワークが、MVCフレームワークということですね。
MVCを使うメリット
MVCを採用するメリットを見てみましょう。
分業しやすい
機能ごとの独立性が高いため分業しやすいということが挙げられます。
例えばViewは見た目を作る部分なので、Viewの制作はデザイナーさんに任せてしまおう!!ということが可能です。
変化に強い
MVCでは表示部分とデータ部分が分かれています。
なので、例えば見た目のデザインをまったく別のものにしようということになっても、ModelやControllerは仕様が変わらない限りそのまま使えます。
Viewの部分だけ修正すればデザインの変更は完了です。
MVCにはこのようなメリットがあります。それでは次は、MVCモデルの各機能を詳細に見ていきましょう。
URLを受け渡すルーティング
MVCの前に、まずはルーティングを解説します。
ルーティングとは、ブラウザから送られてきたURLで、MVCのどの部分のどの処理をすればいいのかを判断する部分です。
例えば、誰かがココカラエンジニアのトップページのURL「https://se-shine.net/」をブラウザに入力します。
するとルーティングを設定しておくことで、「https://se-shine.net/のURLが送られてきたからココカラエンジニアのトップページをブラウザに表示させるという処理を見つければいいんだな」とコンピューターが理解できるというわけです。
こうしてルーティングがURLをMVCへと受け渡してくれるので、その後の様々なやりとりがうまくいって最終的にブラウザにWebページが表示されます。
データの処理や操作を担当、Model
Modelはデータの処理や操作を担当する部分で、データベースへのアクセスや、データベースを検索して目的のデータを取得するためにSQLという言語を扱ったりします。
また、データの検証(バリデーション)や関連付け(アソシエーション)などの細かい処理もModelの役割です。
このようなビジネスロジックを担当するいわばシステムの本体部分にあたり、自らが入出力や表示といった処理を行うことはできませんがとても重要な部分なんですね。
最終的な出力を担当、View
Viewは、最終的な出力の描画を担当する部分で、多くの場合はHTMLです。Controllerでデータ(変数)を定義してデータベースからデータを取得し、Viewで記述してデータを表示させることも可能です。
また、入力フォームを作成してそこにユーザーが名前やコメントなどの情報を入力すれば、Controllerが情報を受け取ってデータベースへ送信することもできます。
ModelとViewをつなぐ管理者、Controller
Controllerは、Viewとモデルをつなぐ役割です。
例えばViewにユーザーの名前を表示させたいと思ったら、Controllerでユーザー情報一覧が入ったデータベースのテーブルからユーザーのデータを取得します。
そうるすとユーザーの情報が入ったデータを対応したViewで使用することができるので、ユーザーの名前を表示することができます。
あくまでも自分自身では表示やロジックの実行は行わず、Viewからの入力に応じて必要なロジックの実行をModelに依頼する、というのがControllerの役割です。
ファットコントローラーにならないように、データベースにアクセスしないような細かい処理でもModelにやらせて、Controllerには値を受け取る処理を書きます。
ルーティング、MVCの連携イメージ
ルーティングからMVCの説明をしてきました。すべての流れを整理してみましょう。
- ブラウザからURLが送られてくる
- ルーティングが、URLからどのControllerを呼び出すか判断
- 呼び出されたControllerがModelと連携してデータを処理
- Modelのビジネスロジックの呼び出しやデータベースのデータを取得
- 処理結果をViewに引き渡す
- ブラウザにWebページが表示される
このような流れで、ブラウザにWebページが表示されます。
リクエストされたURLによってページが変わる例を紹介
では最後に、送られてきたURLによって表示されるページが変わるという実例を見てみましょう。
ココカラエンジニアのトップページに飛ぶには、まずユーザーが「https://se-shine.net/」というURLをブラウザから送信します。
するとルーティングやMVCがやりとりをしてWebページが表示されます。
トップページを閲覧していて興味のあるページが見つけたら、リンクを踏んでお目当てのページに飛びますよね。
例えばこの「意外と知らない?〜」のページを閲覧したいなと思い、クリック。
クリックすると「https://se-shine.net/coding-programming-chigai/」というURLがリクエストされ、ルーティングが対応するコントローラーを見つけ出してModelとデータのやり取りをしてViewに値を送り、「https://se-shine.net/coding-programming-chigai/」のページを表示させます。
こうして、私たちはただ見たいページのリンクをクリックするだけで、ルーティング・MVCがうまく連携して目的のWebページを表示してくれているんです。
まとめ
MVCという概念について解説してきました。理解してもらえましたか?
- Modelはデータの処理やデータベースとやりとをする
- Viewはブラウザでの入出力を担当
- ControllerはModelとViewをつなぐ管理者
このようなイメージです。色々なメリットがあり便利な概念なので覚えておくといいでしょう。
勉強コンテンツやLINE@であなたをサポート
ココカラエンジニアでは初心者向けの勉強のコンテンツを用意していますので、ぜひご活用ください。
また、LINE@では就職・転職に関しての質問を受け付けています。また、解決できないエラーなどプログラミングについての相談にも乗りますので、ぜひお気軽にご登録ください。