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

Railsのresourceとresourcesの違いとは?単数・複数ルーティングの使い分け解説

resource vs resources:単数・複数の違いと使い分け実例
resource vs resources:単数・複数の違いと使い分け実例

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

生徒

「Railsのルーティングで、resourceresourcesってどう違うんですか?」

先生

「簡単に言うと、1つのデータに対して使うのがresourceで、たくさんのデータに対して使うのがresourcesですよ。」

生徒

「見た目が1文字違うだけなのに、どうして使い分ける必要があるんですか?」

先生

「それには理由があるんです。具体例と一緒に、単数と複数のルーティングの違いを見ていきましょう!」

1. resourceとresourcesの違いとは?

1. resourceとresourcesの違いとは?
1. resourceとresourcesの違いとは?

Railsのルーティングでは、resource(単数)とresources(複数)という2つの書き方があります。

resource(単数)は、「そのユーザーに1つしか存在しないもの」に使います。たとえば「プロフィール」など。

resources(複数)は、「たくさん作れるもの」に使います。たとえば「記事」や「コメント」など。

2. resourcesの基本とルーティング

2. resourcesの基本とルーティング
2. resourcesの基本とルーティング

まずはresourcesの使い方から見てみましょう。これは「たくさんのデータを扱うルーティング」です。


resources :articles

この一行で、次のようなルートが自動生成されます。


GET     /articles          → 一覧(index)
GET     /articles/new      → 新規作成フォーム(new)
POST    /articles          → 作成(create)
GET     /articles/:id      → 詳細(show)
GET     /articles/:id/edit → 編集フォーム(edit)
PATCH   /articles/:id      → 更新(update)
DELETE  /articles/:id      → 削除(destroy)

特徴は、:idが付く点です。データが複数あるので、「どのデータか」を区別するためにIDが必要になります。

3. resourceの基本とルーティング

3. resourceの基本とルーティング
3. resourceの基本とルーティング

次に、resourceの例を見てみましょう。これは「ひとり1つしか持たない」ようなデータに使います。


resource :profile

この場合に自動生成されるルートは以下のようになります。


GET     /profile          → 詳細(show)
GET     /profile/new      → 新規作成フォーム(new)
POST    /profile          → 作成(create)
GET     /profile/edit     → 編集フォーム(edit)
PATCH   /profile          → 更新(update)
DELETE  /profile          → 削除(destroy)

ここでは:idがありません。「どれを編集するか?」を指定する必要がないからです。常に「自分のプロフィール1つ」しか扱わない前提だからですね。

4. resourceを使うべきケースとは?

4. resourceを使うべきケースとは?
4. resourceを使うべきケースとは?

resourceは、以下のような「1人1つしか持たない情報」に使うと分かりやすく、コードもすっきりします。

  • ユーザーのプロフィール
  • マイページ
  • 設定画面(アカウント設定など)

たとえば、プロフィールの画面であれば、URLは/profileだけで済みます。IDを指定しなくていいので、セキュリティ的にも安心です。

5. resourcesを使うべきケースとは?

5. resourcesを使うべきケースとは?
5. resourcesを使うべきケースとは?

resourcesは、「たくさんのデータを管理する」場面に使います。代表的な例は次の通りです。

  • 記事(articles)
  • コメント(comments)
  • ユーザー一覧(users)
  • 商品(products)

たとえば、複数のブログ記事を表示するなら、/articlesで一覧、/articles/3で3番目の記事を表示、という風にURLを分けて使います。

6. controllerの命名規則の違い

6. controllerの命名規則の違い
6. controllerの命名規則の違い

resourcesを使うと、コントローラは複数形(例:ArticlesController)になります。

resourceを使うと、コントローラは単数形で(例:ProfilesController)と複数になりますが、扱うデータは1つだけです。これはRailsの命名規則に従っています。

7. 実際のコードで比較してみよう

7. 実際のコードで比較してみよう
7. 実際のコードで比較してみよう

では、resourceresourcesをそれぞれ使った場合のルーティングを比較してみましょう。

resource(単数)

# routes.rb
resource :profile

GET     /profile      → profiles#show
GET     /profile/edit → profiles#edit
PATCH   /profile      → profiles#update
resources(複数)

# routes.rb
resources :articles

GET     /articles          → articles#index
GET     /articles/:id/edit → articles#edit
PATCH   /articles/:id      → articles#update

8. URLの形がわかりやすいのがポイント

8. URLの形がわかりやすいのがポイント
8. URLの形がわかりやすいのがポイント

resourceresourcesの最大の違いは「URLの形」に現れます。

特にRESTfulな設計では、「人が見てわかるURL」が重要です。単数なら/profile、複数なら/articles/5という風に、URLだけで意味が伝わります。

そのため、Railsのルーティング設計ではこの違いをしっかり使い分けることが大切です。

まとめ

まとめ
まとめ

resourceとresourcesを理解するとRailsの設計が一気に読みやすくなる

この記事では、Railsのルーティングにおけるresourceresourcesの違いについて、具体例を交えながら詳しく学んできました。どちらもRailsで頻繁に使われるルーティング定義ですが、「単数か複数か」という小さな違いが、URL設計やコントローラ設計、さらにはアプリ全体の分かりやすさに大きな影響を与えます。

resourcesは、複数のデータを扱うことを前提としたルーティングで、記事やコメント、商品一覧など、同じ種類のデータが何件も存在するケースに適しています。URLには:idが含まれ、「どのデータを操作するのか」が明確になるため、一覧表示や詳細表示、編集、削除といった基本的なCRUD操作を自然な形で表現できます。RailsのRESTful設計を学ぶうえで、まず最初に理解しておきたいルーティングと言えるでしょう。

一方でresourceは、「そのユーザーに一つだけ存在するもの」を表現するためのルーティングです。プロフィール、設定画面、マイページなど、「常に自分自身のデータだけを扱う」ケースでは、IDをURLに含める必要がありません。その結果、/profileのようにシンプルで直感的なURLになります。これは可読性だけでなく、誤って他人のIDを指定してしまうリスクを減らすという意味でも、安全な設計につながります。

Railsでは「URLの形そのものが仕様書になる」と言われることがあります。単数ルーティングか複数ルーティングかを正しく選ぶことで、URLを見ただけで「これは一覧なのか」「これは自分専用の情報なのか」が自然と伝わります。そのため、resourceとresourcesの使い分けは、単なる書き方の違いではなく、アプリケーション設計そのものに関わる重要な判断ポイントなのです。

また、コントローラの役割を考えるうえでも、この違いは役立ちます。複数データを扱うresourcesではindexやshowといったアクションが中心になりますが、resourceでは「常に一つの対象」を扱う前提でコードを書くことができます。その結果、条件分岐が減り、コードがすっきり整理されるというメリットもあります。

まとめとしてのサンプルルーティング

ここで、今回学んだ内容を踏まえたシンプルなルーティング例をもう一度確認してみましょう。単数と複数を使い分けることで、URLと役割がはっきり分かれます。


# routes.rb

# 1人につき1つだけ持つ情報
resource :profile

# 複数作成・管理する情報
resources :articles

GET     /profile          → profiles#show
GET     /profile/edit     → profiles#edit
PATCH   /profile          → profiles#update

GET     /articles         → articles#index
GET     /articles/:id     → articles#show
GET     /articles/:id/edit → articles#edit

このように定義することで、URLを見ただけで「これは自分専用の画面」「これは一覧や個別記事を扱う画面」という意図が明確になります。RailsらしいRESTfulな設計を実現するためにも、resourceとresourcesの違いを意識したルーティング設計が重要です。

先生と生徒の振り返り会話

生徒

「resourceとresourcesって、ただの書き方の違いだと思っていましたけど、URLの意味まで変わるんですね。」

先生

「そうなんです。RailsではURL設計がとても重要なので、単数か複数かを正しく選ぶことが読みやすさにつながります。」

生徒

「プロフィールみたいに一つしかない情報は、resourceを使う方が自然だと分かりました。」

先生

「その理解はとても良いですね。設計の段階で迷ったら、『これは一人につき一つか?複数か?』と考えると判断しやすくなります。」

生徒

「これからは、ルーティングを書くときにURLの意味も意識しながらRailsの設計をしてみます。」

関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
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
データベース
データベース正規化とは?初心者でもわかるデータ重複を防ぐSQL設計の基本