JQ Blog

RailsにおけるMVC

MVCはモデル/ビュー/コントローラーの頭文字を取ってMVCと呼ばれていて、各役割について処理を分割する。分割することでフロントエンドとバックエンドの業務を分けてさらに効率的な作業が可能になる。
MVCパターンの基本的な流れとしては下記のようになる。

Alt text

(参照 - MVCパターン再考)

MVCの目的

  • コードの再利用性を高める: ビジネスロジックをモデルに詰め込むことで、コードの再利用性を上げる
  • 処理の分割: 分割することでフロントエンドとバックエンドの業務を分け、さらに効率的な作業が可能になる

MVCの役割

コントローラ

Alt text (参照 - RailsにおけるMVC(モデル/ビュー/コントローラ))

利用者がブラウザ経由でRailアプリケーションにリクエストを送信すると、まずはWebサーバでそのリクエストを受け取る。そのリクエストはURLとして届くようになる。届いたURLを分析し、どのコントローラーに含まれるアクションを実行すればいいのかを判断する時に使われるのが「routes.rb」ファイルである。コントローラーのアクションが呼び出されるとそのアクションによって必要なモデルを呼び出したりビューをレンダーしたりする。

モデル
  • データベース管理
  • ビジネスロジックを実行

Railsのモデルはデータベースとのやり取りを行うクラスのことであり、データベースはテーブルの集合でできている。

テーブルの例

ID ユーザー名 ユーザー年齢
1 鈴木 36
2 佐藤 30
3 高橋 32

モデルのクラスはテーブルの各カラムをそれぞれのインスタンスとして持ち、活用できるようになる。
例えば、

インスタンス1
1
鈴木
36
インスタンス2
2
佐藤
30
インスタンス3
3
高橋
32

のようになる。モデルを使うと、直感的で記述しやすいコードでデータベースの処理ができる。 MVCの流れに戻ってみると、コントローラーにある何かのアクションから呼ばれ、必要なロジックを行う。

Alt text

(参照 - RailsにおけるMVC(モデル/ビュー/コントローラ))

ビュー

Alt text
(参照 - RailsにおけるMVC(モデル/ビュー/コントローラ))

モデルを通して取得したデータをコントローラーに返し、コントローラーは変数としてビューにデータを渡す。ビューは渡されたデータを活用してHTML文書を作成、またコントローラーに返す。

結果を返す

返したビューはコントローラーによってブラウザを通してクライアントに見えるようになる。

Alt text

(参照 - RailsにおけるMVC(モデル/ビュー/コントローラ))

参照

RailsにおけるMVC(モデル/ビュー/コントローラ)
Railsのmodelを徹底解説!知っておくべき3つの知識も紹介
Rails controllerを徹底解説!知っておくべき3つの知識も紹介
MVCのおさらいと、RailsのMVCについて説明する