2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】MVCをレストランに例えて理解してみる

2
Last updated at Posted at 2026-08-13

MVCの理解に向けて

はじめまして、Nと申します。
Ruby on Railsの学習にあたり、MVCの仕組みを理解する試みを記事にしてみました。
自分なりに解釈してみて例えにすることで理解を深める狙いです。
初めてのアウトプットのため至らぬ点が多いかと思いますが、是非ご一読頂けますと幸いです。
また、間違って覚えてそうなところは是非教えて頂けると大変嬉しいです!

そもそもMVCとは

ソフトウェアやWebアプリの設計モデルのこと。
「Model(モデル)」「View(ビュー)」「Controller(コントローラー)」の3つの役割に分けて作るため、その頭文字をとってMVCモデルと呼ばれる。

レストランで例えたそれぞれの役割

実際に現在開発中の筋トレ記録アプリをもとにレストランで例えて理解してみたいと思います。

近日中に筋トレ記録アプリも公開できるよう邁進中です‥!

ブラウザ(ユーザー)
レストランにきたお客さん
Controllerくん
ホールスタッフ
Modelくん
厨房スタッフ
Viewくん
盛付けスタッフ
  • お客さん(ユーザー)が注文
    • ベンチプレス60kg、5回、3セットを記録したい!
  • 注文が入るとホールのControllerくんが注文を受ける
    • @workout.saveにより新規登録を受け付ける
  def create
    @workout = Workout.new(workout_params)
    if @workout.save
      @exercises = Exercise.all
      render format: :turbo_stream
    else
      @exercises = Exercise.all
      render :new, formats: :turbo_stream
    end
  • Modelくんが厨房で注文内容を確認し、問題なければ食材庫(DB)に料理の材料を保存する
    • @workout.saveが成功すると、Controllerが次の処理に進む
class Workout < ApplicationRecord
  belongs_to :exercise
  validates :exercise_id, {presence: true}
  validates :weight, {presence: true}
  validates :reps, {presence: true}
  validates :sets, {presence: true}
  validates :date, {presence: true}
end
  • @workout.saveが成功したら、ControllerくんがViewくんに盛り付けをお願いする
    • 料理の材料を保存する=@workout.saveが成功
    <% @workouts.each do |workout| %>
        <p class="workout-item">
            <%= workout.exercise.name %><br>
            <%= workout.weight %>kg
            ×
            <%= workout.reps %>
            x
            <%= workout.sets %>セット<br>
            <% if workout.memo.present? %>
                今日のメモ:<%= workout.memo %>
            <% end %>
        </p>
    <% end %>
  • 出来上がったものをControllerくんがお客さんに提供する
    • ブラウザに返す

学びになったポイント

  • 見た目をいじろうとおもってもViewだけじゃなく、Controller側で適切な処理やデータを用意する必要がある
    • 最後にViewが表示するためにはControllerが運ばないといけない
    • なのでControllerで書いている内容が間違っているとViewに正しく届かない
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?