ATSU Tech Blog

Ruby on Rails, Pythonなどの記事を書いています。

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

MVCとは、model,view,controllerの頭文字を取ったものです。RailsでWebアプリケーションを作るときに大切な概念です。今日は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(モデル/ビュー/コントローラ)の関係を理解することができたでしょうか?



この記事の説明がわかりやすかった!ここ間違ってるよ!次こんな記事を書いて欲しい!などあればコメント、DMよろしくお願いします。LGTMもぜひ。

Ruby on Railsを中心に「なんとなくの理解で使っているもの」を取り上げて解説しています。そのほかの記事もぜひご覧ください。

ほかの記事

  1. Rubyのハッシュとシンボル、キーの関係について、わかりやすく解説する
  2. Rubyにおける「クラス」と「オブジェクト」の関係について分かりやすく解説してみる

  3. git addとcommit、pushの関係をわかりやすく説明する【Gitコマンド解説①】

Twitterもやってますので、フォローしていただけたらうれしいです。 卓球、心理学、哲学、Webサービス、好きな音楽、カメラ、登山、ランニング、読んだ本など何でもつぶやいてます。 https://twitter.com/atsushi101011