Academic-cap Rails Learning

4. 🚀 リクエストの流れ

🎯 この項の目的


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は「リクエストがバトンのように渡されるチームプレー」で動いている。
それぞれが役割を果たして、最後にユーザーへ“完成品”を届けているんだ☃️✨



次の章に行く前に...

この章で学んだ知識を覚えよう!

この章で学んだことを、Xでアウトプットしましょう ✨

対応するクイズに挑戦して理解を定着させましょう💡

クイズを解く