みなさん、こんにちは。
Railsのアプリケーションでは、ユーザーが送るリクエストが「どのコントローラの、どのアクションに渡されるのか」を決定する仕組みを ルーティング(Routing) と呼びます。これは、Railsの処理の入り口となる重要な要素であり、アプリケーション全体の流れを制御する交通整理のような役割を果たします。どのURLでどんな動作を行うかを定義するこの仕組みは、開発の基盤を支える大切な構成要素の一つです。Railsのルーティングは、シンプルさと一貫性を重視して設計されています。特に、resources による RESTful なルート定義は、Rails の設計思想である「規約より設定(Convention over Configuration)」を体現する機能のひとつです。これにより、開発者は最小限の記述で CRUD 操作(作成・読み取り・更新・削除)を自然に扱うことができます。
また、Rails ではルートを柔軟にカスタマイズできるため、シンプルな構成から複雑なネスト構造まで幅広く対応できます。たとえば、親子関係を持つモデルを扱う際のネストされたルートや、可読性を保つための shallow: true オプションなどは、実務でも頻繁に登場する知識です。これらはすべて、Rails 試験でも定番の出題範囲です。ルーティングの理解度は、単なる文法知識にとどまらず、「アプリケーション全体をどう設計するか」という視点にも直結します。
今回も、模擬問題を通じて、Rails のルーティングについて整理し、実務でも役立つ理解を深めていきましょう。
【問題1】resourcesの自動生成ルート
問題
次のルーティングを定義した場合、正しいパスとHTTPメソッドの組み合わせはどれか。
| resources :articles |
- GET /articles → articles#index
- POST /articles/:id → articles#create
- GET /articles/:id/edit → articles#edit
- 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 |
- GET /authors/:author_id/books
- GET /books/:id
- DELETE /authors/:author_id/books/:id
- 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” |
- login_url
- sessions_new_path
- new_login_path
- login_path
正解
1 と 4
解説
as: オプションで指定した名前が名前付きルートヘルパーとして利用できます。
この場合、as: “login” により以下の2つのメソッドが生成されます。
- login_path → 相対URL(例:/login)
- login_url → 絶対URL(例:http://localhost:3000/login)
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/




