第2回「Rails基礎力を固める 模擬問題で学ぶ試験対策」Railsのルーティング

みなさん、こんにちは。

Railsのアプリケーションでは、ユーザーが送るリクエストが「どのコントローラの、どのアクションに渡されるのか」を決定する仕組みを ルーティング(Routing) と呼びます。これは、Railsの処理の入り口となる重要な要素であり、アプリケーション全体の流れを制御する交通整理のような役割を果たします。どのURLでどんな動作を行うかを定義するこの仕組みは、開発の基盤を支える大切な構成要素の一つです。Railsのルーティングは、シンプルさと一貫性を重視して設計されています。特に、resources による RESTful なルート定義は、Rails の設計思想である「規約より設定(Convention over Configuration)」を体現する機能のひとつです。これにより、開発者は最小限の記述で CRUD 操作(作成・読み取り・更新・削除)を自然に扱うことができます。

また、Rails ではルートを柔軟にカスタマイズできるため、シンプルな構成から複雑なネスト構造まで幅広く対応できます。たとえば、親子関係を持つモデルを扱う際のネストされたルートや、可読性を保つための shallow: true オプションなどは、実務でも頻繁に登場する知識です。これらはすべて、Rails 試験でも定番の出題範囲です。ルーティングの理解度は、単なる文法知識にとどまらず、「アプリケーション全体をどう設計するか」という視点にも直結します。

今回も、模擬問題を通じて、Rails のルーティングについて整理し、実務でも役立つ理解を深めていきましょう。

【問題1】resourcesの自動生成ルート

問題

次のルーティングを定義した場合、正しいパスとHTTPメソッドの組み合わせはどれか。

resources :articles
  1. GET /articles → articles#index
  2. POST /articles/:id → articles#create
  3. GET /articles/:id/edit → articles#edit
  4. DELETE /articles/new → articles#destroy

正解

1 と 3

解説

resources :articles を定義すると、RailsはRESTの原則に従って、次の 7 つのルートを自動生成します。それぞれが CRUD(作成・読み取り・更新・削除)操作に対応しており、これだけで基本的な Web アプリの動作が成立します。

  • index:すべての記事を一覧表示する(GET /articles)
  • new:新しい記事を作成するフォームを表示する(GET /articles/new)
  • create:記事を新規登録する(POST /articles)
  • show:特定の記事を表示する(GET /articles/:id)
  • edit:既存の記事を編集するフォームを表示する(GET /articles/:id/edit)
  • update:記事を更新する(PATCH または PUT /articles/:id)
  • destroy:記事を削除する(DELETE /articles/:id)

このように、resources を使うことで Rails は標準的な URL と HTTP メソッドの組み合わせを自動生成することで、統一的で理解しやすい設計を促進しています。試験では、HTTPメソッドとURLの組み合わせを正確に覚えておくことがポイントです。

【問題 2】ネストされたリソースと shallow: true

問題

次のルーティング定義のうち、ネストを浅くして可読性を保つものはどれか。

resources :authors do
  resources :books, shallow: true
end
  1. GET /authors/:author_id/books
  2. GET /books/:id
  3. DELETE /authors/:author_id/books/:id
  4. GET /authors/books/:id

正解

1 と 2

解説

shallow: true を指定すると、ネストされたリソースのうち「index」「new」「create」アクションは親(author)に紐づけた形でルートが生成されます。 一方で、「show」「edit」「update」「destroy」などは、親リソースのIDを必要としないため、よりシンプルなURLになります。

# 生成されるルート例
GET    /authors/:author_id/books        → books#index
POST   /authors/:author_id/books        → books#create
GET    /books/:id                       → books#show
PATCH  /books/:id                       → books#update
DELETE /books/:id                       → books#destroy

このように、必要な箇所だけをネストすることでURLが短くなり、ルートの可読性・保守性が向上します。試験では「どのアクションが親リソースを必要とするか」を理解しておくことが重要です。

 【問題 3】ルートヘルパーと名前付きルート

問題

次のルーティングが定義されています。/login というURLにアクセスするためのヘルパーメソッドとして正しいものはどれですか?

get “login”, to: “sessions#new”, as: “login”
  1. login_url
  2. sessions_new_path
  3. new_login_path
  4. login_path

正解

1 と 4

解説

as: オプションで指定した名前が名前付きルートヘルパーとして利用できます。

この場合、as: “login” により以下の2つのメソッドが生成されます。

Railsでは、ビューやコントローラ内でURLを直接書くのではなく、名前付きルートヘルパーを使うのが推奨です。URL構成を変更してもヘルパー名は変わらないため、コードの保守性が大幅に向上します。

目次

 まとめ

Rails のルーティングは、アプリケーション全体の設計と動作を決める重要な要素です。試験では「resources の自動生成ルート」や「shallow オプションの挙動」、さらに「名前付きルートヘルパー」など、規約に基づいた URL 設計の理解が問われます。

  • resources の7つのアクション(index, new, create, show, edit, update, destroy)は必ず覚える
  • HTTPメソッドとURLの対応関係を正確に把握しておく(GET / POST / PATCH / DELETE)
  • shallow: true を使うと「親リソースを省略できるアクション」がある点を確認する
  • as: オプションで生成される xxx_path / xxx_url の違いを理解しておく(相対URLと絶対URL)
  • ルートヘルパーを活用することで、URL 変更に強いコードが書ける

Rails の思想である 「規約より設定(Convention over Configuration)」 を意識し、 resources によるルート設計の基本を確実に自分のものにしておきましょう。

Rails7認定ベーシック試験について

全国300か所で通年実施しています。詳細は以下をご覧ください。
https://railsce.com/rails7basic

また、450ページを超える教科書も安価に出版しています。学習にあたってご活用ください。詳細は以下をご覧ください。

Rails 7 技術者認定ベーシック試験公式教科書ベータ版
著者:小澤昌樹 発行:Rails技術者認定試験運営委員会
価格(税込):ペーパーバック版 2,497円 Kindle版 1250円
ページ数:471ページ
https://www.amazon.co.jp/dp/B0FZFYLRZ2/

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次