🎯 この項の目的
Railsアプリが「どうやって画面を表示しているのか」を理解すること。
ブラウザでURLを開いた瞬間、Railsの中では「ある一定の流れ」が毎回起きています。
その流れを理解すると、
👉 「エラーが起きたとき、どこを見ればいいか」
👉 「なぜこのファイルが呼ばれるのか」
が分かるようになります💡
🧩 1. Webアプリの世界では「会話」が起きている
まず大前提として、ブラウザとサーバーは「会話(リクエストとレスポンス)」をしています。
💬 例:
あなたがブラウザで「投稿一覧ページ」を開くとき、
ブラウザがサーバー(Rails)にこう話しかけます👇
「ねぇ /posts のページを見せて!」(リクエスト)
すると、Railsが答えます👇
「はい、これが投稿一覧ページです!」(レスポンス)
この“やりとり”が、1回のアクセスで行われているんです。
🧭 2. リクエストの流れを「宅配の流れ」でイメージしてみよう
Railsの中での処理の流れは、宅配便のようにバトンが渡されていくイメージです📦
👩💻 ユーザー(ブラウザ) ↓ 📫 ルーティング(住所係) ↓ 🎮 コントローラ(司令塔) ↓ 📦 モデル(データ倉庫) ↓ 🎨 ビュー(見た目担当) ↓ 🌐 ブラウザに結果を返す(レスポンス)
では、順番に見ていこう!
📫 3. ルーティング(住所係)
役割:
「このURLに来たリクエストを、どのコントローラ・アクションに渡すか」を決めます。
📄 例:routes.rb
Rails.application.routes.draw do resources :posts end
👉 /posts にアクセスしたら PostsController#index に行く、
というルールを自動で作ってくれます。
💡 たとえ:
ルーティングは“受付係”。
「お客様、投稿一覧ですね?こちらの担当におつなぎします」と案内してくれます。
🎮 4. コントローラ(司令塔)
役割:
ルーティングから依頼を受けて、「次に何をするか」を判断します。
必要ならモデルに「データを取ってきて!」と頼み、
最後にビューに「結果を表示して!」と命令します。
📄 例:posts_controller.rb
class PostsController < ApplicationController
def index
@posts = Post.all # モデルにデータを取りに行く
end
end
💡 たとえ:
コントローラは「現場監督」。
倉庫係(モデル)に指示を出し、デザイナー(ビュー)に渡すまで全体を管理します。
🧱 5. モデル(データ倉庫)
役割:
データベースとやり取りをする場所。
たとえば投稿一覧を表示したいときは、投稿データを全部取り出して返します。
📄 例:post.rb
class Post < ApplicationRecord end
💡 たとえ:
モデルは「倉庫係」。
在庫(データ)を整理して、コントローラに渡す。
ここで「このデータは空っぽじゃない?」「保存できる?」などのチェックも行います。
🎨 6. ビュー(見た目担当)
役割:
コントローラからもらったデータをもとに、HTMLページを作ります。
📄 例:index.html.erb
<h1>投稿一覧</h1> <% @posts.each do |post| %> <p><%= post.title %></p> <% end %>
💡 たとえ:
ビューは「デザイナー」。
倉庫から届いたデータを見やすく並べて、
完成したページをユーザーに届けます。
🌐 7. ブラウザへレスポンス(返却)
ビューで作られたHTMLが、最後にブラウザへ返されます。
そして、あなたの目に「投稿一覧ページ」として表示されるんです✨
💬 つまり:
リクエスト(お願い) → Rails内部での処理 → レスポンス(結果表示)
🧠 8. 処理の全体像をもう一度整理!

💬 9. 実際のリクエスト例(コードで流れを追う)
📍 ブラウザで
http://localhost:3000/posts
にアクセスしたとき👇
1️⃣ ルーティング
→ /posts → PostsController#index が呼ばれる
2️⃣ コントローラ
def index @posts = Post.all end
3️⃣ モデル
→ データベースから全投稿データを取得
4️⃣ ビュー
<% @posts.each do |post| %> <p><%= post.title %></p> <% end %>
5️⃣ ブラウザにHTMLが返る
→ 「投稿一覧ページ」が表示される🎉
🌱 まとめ
Railsの1リクエストは、
ブラウザ → ルーティング → コントローラ → モデル → ビュー → ブラウザ
という“一本道の流れ”で動いています。
これを理解すると、
「どこでデータを取って」「どこで画面を作っているか」が明確になります。
💡 一言でまとめると:
Railsは「リクエストがバトンのように渡されるチームプレー」で動いている。
それぞれが役割を果たして、最後にユーザーへ“完成品”を届けているんだ☃️✨