カテゴリ: Rails 更新日: 2026/01/12

Railsルーティング超入門:routes.rbの基本と読み方【保存版】

Railsルーティング超入門:routes.rbの基本と読み方【保存版】
Railsルーティング超入門:routes.rbの基本と読み方【保存版】

先生と生徒の会話形式で理解しよう

生徒

「WebアプリってどうやってURLと処理を結びつけてるんですか?」

先生

「それはルーティングという仕組みを使っています。Railsではroutes.rbというファイルにルールを書くことで、URLとコントローラをつなげることができますよ。」

生徒

「ルールって難しそうですね…。初心者でもわかりますか?」

先生

「もちろん!ルーティングの基本から丁寧に解説していきましょう!」

1. ルーティングとは?Railsのroutes.rbって何?

1. ルーティングとは?Railsのroutes.rbって何?
1. ルーティングとは?Railsのroutes.rbって何?

ルーティングとは、URL(ページのアドレス)から「どの処理を実行するのか」を決めるための仕組みです。言い換えると、Webアプリの中でユーザーがどのページを開いたときに、どのコントローラが動くのかを案内する“交通整理”のような役割を持っています。

Railsでは、このルールを config/routes.rb に書きます。ここに記述された内容がアプリ全体の「道しるべ」となり、ブラウザから送られたリクエストを正しい処理へ導きます。たとえば、/users というURLにアクセスされたときに UsersControllerindex アクションを動かすといった設定ができます。

ごく簡単な例として、次のようなルートを書くと、ブラウザからのアクセスに応じてコントローラが呼び出されます。


# 「/hello」にアクセスすると greetings_controller の hello アクションを呼び出す例
get 'hello', to: 'greetings#hello'

このように、ルーティングは「URL → 実行する処理」の対応表であり、Railsアプリを動かすための最初の入り口となるとても重要な設定です。初心者でも少しずつ書き方を覚えていけば、アプリの構造が理解しやすくなり、開発もぐっと進めやすくなります。

2. 超基本!ルーティングの書き方

2. 超基本!ルーティングの書き方
2. 超基本!ルーティングの書き方

Railsでルーティングを書くときは、config/routes.rb に「どのURLでどの処理を呼び出すか」を1行ずつ書いていきます。まずは、最も基本的な書き方から見てみましょう。


get 'users', to: 'users#index'

この1行には、実は3つの要素が含まれています。

  • get … 「どんな種類のアクセスか」を表すキーワード(ここではページを表示するときのアクセス)
  • 'users' … ブラウザでアクセスするURLのパス(例:/users
  • to: 'users#index' … 「UsersControllerindex アクションを呼び出す」という意味

つまり、「/users というURLにアクセスが来たら、UsersController の index アクションを動かしてください」という日本語の文章を、1行のコードにしたものが上記のルートです。初めて見ると少し難しく感じますが、慣れてくると「URL → 処理」の対応関係がとても分かりやすく見えてきます。

もう少しイメージをつかむために、「自己紹介ページ(/about)を表示するだけ」のルートも見てみましょう。


get 'about', to: 'pages#about'

この場合は、「/about にアクセスされたら、PagesControllerabout アクションを表示する」という意味になります。このように、1URLにつき1行ずつ対応を書くのが、ルーティングの超基本の形です。まずはこの書き方に慣れておくと、後から出てくる少し複雑なルールも理解しやすくなります。

3. resourcesでルートを自動生成しよう

3. resourcesでルートを自動生成しよう
3. resourcesでルートを自動生成しよう

ユーザー一覧や詳細表示、登録や更新など、「よくある一連の操作」を毎回1行ずつ書くのは大変です。そこで登場するのがresourcesという書き方です。Railsのルーティングでは、この1語でまとめて複数のルートを自動生成できます。


resources :users

たったこれだけで、次のような7つのルーティングが自動的に用意されます。


GET    /users          → users#index   (ユーザー一覧ページ)
GET    /users/:id      → users#show    (ユーザー詳細ページ)
POST   /users          → users#create  (新規ユーザー作成)
PATCH  /users/:id      → users#update  (ユーザー情報の更新)
PUT    /users/:id      → users#update  (更新の別名)
DELETE /users/:id      → users#destroy (ユーザー削除)
GET    /users/new      → users#new     (新規登録フォーム)
GET    /users/:id/edit → users#edit    (編集フォーム)

つまり、「ユーザー情報の一覧表示・詳細表示・新規作成・編集・削除」といった基本的な操作用ルートを、1行でまとめて定義できるのがresources :usersのメリットです。もしこれを1つずつ手書きすると、次のように行数が増えてしまいます。


# resourcesを使わずに書いた場合のイメージ
get    'users',          to: 'users#index'
get    'users/:id',      to: 'users#show'
post   'users',          to: 'users#create'
patch  'users/:id',      to: 'users#update'
delete 'users/:id',      to: 'users#destroy'
get    'users/new',      to: 'users#new'
get    'users/:id/edit', to: 'users#edit'

どちらも意味は同じですが、resourcesを使うとroutes.rbがスッキリ読みやすくなり、「このモデルは標準的なCRUD操作ができます」という意思表示にもなります。初心者のうちは、resources :usersを見たら「ユーザーに関する基本ルート一式が揃っているんだな」とイメージできれば十分です。まずはresourcesに慣れておくことで、Railsルーティングの全体像がつかみやすくなります。

4. namespaceでURLをグループ化しよう

4. namespaceでURLをグループ化しよう
4. namespaceでURLをグループ化しよう

namespace(ネームスペース)は、「管理画面用のURL」と「一般ユーザー向けのURL」をきれいに分けたいときに使う仕組みです。URLの頭に決まった言葉(プレフィックス)をつけてグループ化できるので、大きくなったRailsアプリのルーティングを整理するのにとても役立ちます。

たとえば、管理者だけが使うユーザー管理画面を作りたい場合は、次のように書きます。


namespace :admin do
  resources :users
end

この1ブロックを書くと、URLは次のように「/admin付き」に変わります。


/admin/users          → Admin::UsersController#index
/admin/users/:id      → Admin::UsersController#show
/admin/users/new      → Admin::UsersController#new
/admin/users/:id/edit → Admin::UsersController#edit
…(他のアクションも同様に admin 配下へ)

ポイントは、Admin::UsersController という「Admin という名前のグループに属したコントローラ」が自動的に前提になることです。ディレクトリ構成としては app/controllers/admin/users_controller.rb のように階層を分けておくと、管理画面用の処理が1か所にまとまり、後から見返したときも「ここが管理者用のルートなんだな」とすぐに分かります。

一般ユーザー向けの画面は /users、管理者向けの画面は /admin/users とURLの見た目もはっきり分かれるので、ブラウザでの動作確認もしやすくなります。最初は「admin という専用エリアを作るスイッチ」と捉えておくとイメージしやすく、Railsルーティングの整理にも大きく役立ちます。

5. constraintsで条件付きルーティング

5. constraintsで条件付きルーティング
5. constraintsで条件付きルーティング

constraints(コンストレイント)を使うと、アクセスする人やURLの形式によって、ルートを分けて設定できます。

たとえば、「スマートフォンからのアクセスは別の処理にしたい」というときに使えます。


constraints(lambda { |req| req.user_agent =~ /iPhone/ }) do
  get 'home', to: 'mobile#home'
end

この例では、ユーザーのブラウザ情報(user_agent)に「iPhone」が含まれていたら、モバイル用のmobile#homeにルーティングされます。

6. rootでトップページを設定しよう

6. rootでトップページを設定しよう
6. rootでトップページを設定しよう

rootは、Webアプリの「入り口」つまりトップページの設定です。


root 'home#index'

この設定をすると、「http://あなたのサイト/」にアクセスしたときにHomeControllerindexアクションが呼ばれます。

7. ルーティング確認コマンド

7. ルーティング確認コマンド
7. ルーティング確認コマンド

ルーティングの内容はコマンドで確認できます。以下のコマンドをターミナルで実行してみましょう。


bin/rails routes

すると、現在設定されているルーティングの一覧が表示されます。URL・HTTPメソッド・コントローラがひと目で分かります。

8. ルーティングの順番に注意

8. ルーティングの順番に注意
8. ルーティングの順番に注意

routes.rbでは、上から順番にマッチするルートを探していくので、似たようなルートがあるときは、より具体的なルートを先に書くのがコツです。


get 'posts/new', to: 'posts#new'
get 'posts/:id', to: 'posts#show'

こうしないと、先にposts/:idが読まれてしまい、「new」が「id」として解釈される危険があります。

関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.2
Java&Spring記事人気No2
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう