🙌

【Rails】MVC(モデル/ビュー/コントローラ)の関係を理解する

2022/02/10に公開

MVCとは、model,view,controllerの頭文字を取ったものです。RailsでWebアプリケーションを作るときに大切な概念です。今日はMVC(モデル/ビュー/コントローラ)の関係を理解する記事を書いていきます。

  • Railsチュートリアル始めたけど、MVCがあまり理解できない
  • なんとなくわかるけど説明はできない

そんな方におすすめの記事です。

MVC(モデル/ビュー/コントローラ)の関係

MVCの関係を図に表すと以下のようになります。

Image from Gyazo

画像引用元:https://www.javadrive.jp/rails/ini/index7.html

  • Browser:ユーザーが閲覧する部分
  • Model:データを扱う部分
  • View:ユーザーが見える結果を扱う部分
  • Controller:Browserからのリクエストを処理して、ビューとモデルの連携をする部分
  • Database:データが格納されている場所

この図のサイクルをぐるぐると回して、Webアプリの機能を実装しています。

コントローラーとルーティングの関係

上記では、Controller:Browserからのリクエストを処理して、 と記述しました。
具体的には、ルーティングが、Browserからのリクエストを処理する役割を担っています。

Browserからのリクエストを処理する流れは以下になります。

  1. ユーザーからのリクエストがURLとして届く
  2. そのURLをもとに、routes.rbに記述されたコードを参照する
  3. 参照したルーティングに割り当てられた、コントローラのアクション(indexとかnewとか)を呼び出す
  4. アクションに書かれた処理を実行する
  5. ブラウザに結果が返される

これがコントローラーとルーティングの関係です。

モデルは、データを参照したり、格納したいときに使う

コントローラのアクションにて、データを参照したり、格納したいときはデータベースとのやりとりが発生するので、モデルを使うことになります。

Railsでは、データベースにテーブル(usersとかboardsとか)が用意されているので、「usersテーブルのid:3のデータを取ってきて!」とか、「id:5にデータを格納して!」と処理していくわけですね。

ビューは、取得したデータを使ってHTMLに変換する

コントローラのアクションにて、データを変数に代入した後(データを扱わない場合もある)は、その変数を使ってブラウザに表示したい画面を記述していきます。
たくさんのビューを用意して、どのビューを表示させたいのか指定するのもコントローラーの役割です。

これで、「ユーザーからのリクエストを処理してその結果を返す」 という流れができています。

まとめ

  • Browser:ユーザーが閲覧する部分
  • Model:データを扱う部分
  • View:ユーザーが見える結果を扱う部分
  • Controller:Browserからのリクエストを処理して、ビューとモデルの連携をする部分
  • Database:データが格納されている場所

これらを駆使して、Webアプリケーションができていることがわかったかと思います。
MVC(モデル/ビュー/コントローラ)の関係を理解することができたでしょうか?

Discussion