Railsコントローラ入門:アクションとリクエストライフサイクルを初心者向けに徹底解説!
生徒
「Railsのコントローラって何をする役割なんですか?」
先生
「コントローラは、ユーザーのリクエストを受け取って、どの処理をするか判断する部分です。たとえば、お問い合わせページを開いたり、データを保存したりするときに使います。」
生徒
「実際にはどういう仕組みで動いてるんですか?」
先生
「いい質問ですね。今回は、アクションの仕組みと、Railsのリクエストライフサイクルについて、わかりやすく解説していきましょう。」
1. Railsのコントローラとは?
Rails(レイルズ)のコントローラは、ユーザーから送られてきたリクエストを受け取り、 「どの処理を実行するか」「どの画面を表示するか」を判断する役割を持っています。 たとえば「一覧ページを開きたい」「入力した内容を保存したい」といった操作は、 すべてコントローラを通して処理されます。
Webアプリは基本的に、「URLにアクセスする → 処理が行われる → 結果が返る」という流れで動いています。 その中でコントローラは、リクエスト内容を確認し、必要に応じてデータを取り出し、 最終的に画面や結果を返す交通整理役のような存在です。
class HelloController < ApplicationController
def index
@message = "はじめてのRailsコントローラ"
end
end
この例では、HelloControllerというコントローラの中にindexアクションがあります。
ユーザーが対応するURLにアクセスすると、このアクションが呼ばれ、
@messageの内容を画面に表示する準備が行われます。
「リクエストを受け取って、次の処理につなげる場所」がコントローラだと覚えておくと理解しやすいです。
2. アクションとは?
Railsのコントローラの中には、「アクション」と呼ばれる処理の入り口があります。 アクションはメソッドとして書かれ、ユーザーがURLにアクセスしたり、フォームの送信ボタンを押したりしたときに呼び出されます。 ざっくり言うと、URLごとに動く処理の名前がアクションだと思うと分かりやすいです。
たとえば「本の一覧を見たい」というリクエストが来たら、一覧を表示するためのアクション(よく使われるのはindex)が動きます。
アクションの中では、表示に必要なデータを用意したり、画面に渡す準備をしたりします。
初心者の方は「アクション=ページごとの担当者」とイメージすると覚えやすいでしょう。
class BooksController < ApplicationController
def index
# 本の一覧を取得する処理
@books = Book.all
end
end
上の例では、BooksControllerのindexがアクションです。
ユーザーが/booksにアクセスすると、このindexが呼び出され、
@booksに本の一覧を入れて、ビューに渡す準備をします。
「@が付いた変数(インスタンス変数)は、画面で使うために用意するもの」と覚えておくとスムーズです。
# イメージ:/books にアクセスしたときの流れ(例)
# 1) BooksController の index が呼ばれる
# 2) @books に一覧データが入る
# 3) 画面(ビュー)で @books を使って一覧を表示する
このように、アクションは「リクエストを受けて、必要な準備をして、結果を返す」ための中心になります。 どのアクションが動くかを把握できると、Railsの画面遷移や処理の流れが一気に読みやすくなります。
3. リクエストライフサイクルの流れ
「リクエストライフサイクル」とは、ユーザーがページを開いたりボタンを押したりしたときに、 Railsの中でどんな順番で処理が進むかをまとめた流れのことです。 Webアプリは見た目は一瞬で動いているように見えますが、裏側では「道案内 → 受付 → 処理 → 画面作成 → 返却」という作業を毎回きちんと行っています。 この順番を知っておくと、エラーが起きたときに「今どの段階で止まっているのか」が想像しやすくなります。
まずは難しく考えず、Railsの基本ルートとして、次の流れをそのまま覚えるのがおすすめです。 とくに「ルーティング」と「コントローラ」と「ビュー」のつながりが見えるようになると、Railsの仕組みが一気に理解しやすくなります。
- ユーザーがブラウザでURLにアクセス(例:
/books) - Railsがルーティング(道順)を見て、どのコントローラ・アクションを使うか決定
- 該当するコントローラとアクションが呼び出される
- 必要があればデータベースを読み書きする(データを探す・保存する)
- ビュー(画面表示のテンプレート)が呼ばれて、HTMLが生成される
- そのHTMLがブラウザに返り、画面に表示される
たとえば「本の一覧ページ」を開く場合でも、実際はこの順番で毎回動いています。 つまり、Railsは「いきなり画面を出している」のではなく、順番に処理を積み重ねて、最後に表示しているということです。 この考え方が分かると、コントローラで何を用意して、ビューで何を表示するのかが整理しやすくなります。
# /books にアクセスしたときのイメージ(例)
# 1) ルーティングが BooksController#index を選ぶ
# 2) コントローラが @books を用意する
# 3) ビューがHTMLを作って返す
初心者のうちは、まず「ルーティングで行き先が決まる」「コントローラで準備する」「ビューで表示する」という3点を押さえるだけでも十分です。 そこにデータベースの読み書きが加わると、Webアプリらしい動きになります。 この一連の流れを知っておくことが、Railsでアプリ開発を進めるときの土台になります。
4. アクションの種類と例
Railsでは、よく使われるアクションの名前がある程度決まっています。 これらは画面表示とデータ操作の流れを整理するための共通ルールのようなもので、 初心者の方はまず「どんな役割のアクションがあるのか」を知るだけでも十分です。 名前と役割がセットになっているので、コードを読んだときに意味を想像しやすくなります。
index:一覧を表示する(例:記事一覧、商品一覧)show:1件だけ表示する(例:記事の詳細ページ)new:新しいデータを作るための入力画面を表示するcreate:入力された内容を保存するedit:既存データを編集する画面を表示するupdate:編集した内容を保存するdestroy:データを削除する
たとえばブログアプリの場合、「一覧を見る → 詳細を見る → 新しく投稿する」といった操作は、
これらのアクションを組み合わせることで自然に実現できます。
すべてを一度に覚える必要はなく、indexとshowから慣れていくのがおすすめです。
class PostsController < ApplicationController
def show
# 1件分の記事を表示する処理
end
end
このように、アクション名を見るだけで「何をする画面なのか」が分かるのがRailsの特徴です。 決まった名前を使うことで、アプリ全体の構成も読みやすくなり、後から見返したときも理解しやすくなります。
5. 実行結果を確認してみよう
たとえば、次のようなアクションを作ったとします。
class HelloController < ApplicationController
def greet
render plain: "こんにちは、Rails!"
end
end
このgreetアクションは、シンプルにテキストを表示します。ブラウザで/hello/greetにアクセスすると、次のように表示されます。
こんにちは、Rails!
6. コントローラの命名ルール
Railsではコントローラの名前は複数形にするのが基本ルールです。たとえば、「本」を扱うならBooksController、「ユーザー」ならUsersControllerのようにします。
このように決まった形に従うことを「Railsの規約(コンベンション)」と呼びます。初心者のうちはこのルールに素直に従っておくと、うまく動作しやすくなります。
7. アクションが呼び出されるタイミング
アクションが呼ばれるのは、ルーティングで定義されたURLにアクセスされたときです。ルーティングとは「どのURLが、どのアクションにつながっているか」を定義する場所です。
たとえば次のように書くと、/hello/greetというURLで、HelloControllerのgreetアクションが動きます。
get 'hello/greet', to: 'hello#greet'
8. コントローラとアクションの理解はアプリ開発の第一歩
今回紹介したように、Railsのコントローラとアクション、そしてリクエストライフサイクルは、Webアプリの基礎の基礎です。難しい言葉もありますが、例えを交えて理解していくことで、自然と仕組みが見えてくるようになります。
まずはindexやshowなどの基本的なアクションから覚えて、少しずつ自分のアプリに応用してみましょう。