カテゴリ: Laravel 更新日: 2025/12/12

Laravelのコントローラルーティングとは?初心者でもわかるresource・actionルートの使い方

Laravelのコントローラルーティングとは?resource・actionルートの使い方
Laravelのコントローラルーティングとは?resource・actionルートの使い方

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

生徒

「Laravelで、URLと処理を分けるコントローラって便利そうですが、ルートの書き方が色々あってよくわかりません…」

先生

「Laravelでは、ルートとコントローラを組み合わせて、スッキリとした書き方ができるんですよ。特にresourceルートとactionルートという2つの便利な方法があります。」

生徒

「それってどう違うんですか?初心者でも使いやすい方法を教えてください!」

先生

「それでは今回は、コントローラルーティングの基本と、2種類の書き方について一緒に学んでいきましょう!」

1. Laravelのコントローラルーティングとは?

1. Laravelのコントローラルーティングとは?
1. Laravelのコントローラルーティングとは?

コントローラルーティングとは、Laravelでルート(URLの入口)とコントローラ(処理をまとめた部分)を組み合わせて、効率よくルーティングを管理する方法です。

たとえば、フォームの入力を受け取ったり、データを一覧表示したりするときに、処理をコントローラに分けて記述することで、ルートファイルがスッキリします。

2. 単一アクションのルーティング(actionルート)

2. 単一アクションのルーティング(actionルート)
2. 単一アクションのルーティング(actionルート)

まずは基本的なコントローラルートの書き方を見てみましょう。actionルートでは、1つのルートに対して、コントローラの1つのメソッド(関数)を指定します。


use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HelloController;

Route::get('/hello', [HelloController::class, 'index']);

このコードでは、/helloというURLにアクセスすると、HelloControllerindexメソッドが実行されます。

コントローラの中身は次のように書きます。


namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
    public function index()
    {
        return 'こんにちは、コントローラからのメッセージです';
    }
}

3. 複数の処理をまとめて管理するresourceルート

3. 複数の処理をまとめて管理するresourceルート
3. 複数の処理をまとめて管理するresourceルート

resourceルートを使うと、1行で「一覧表示・新規作成・保存・編集・更新・削除」などの処理をまとめて設定できます。


use App\Http\Controllers\UserController;

Route::resource('users', UserController::class);

この1行で、次のようなURLとアクションが自動的に作られます。

  • GET /users → index()
  • GET /users/create → create()
  • POST /users → store()
  • GET /users/{id} → show()
  • GET /users/{id}/edit → edit()
  • PUT/PATCH /users/{id} → update()
  • DELETE /users/{id} → destroy()

このように、7つのルートが一気に定義されるので、効率的で見やすいコードになります。

4. resourceルート用のコントローラの書き方

4. resourceルート用のコントローラの書き方
4. resourceルート用のコントローラの書き方

resourceルートに対応するには、7つのメソッドをコントローラに用意します。以下は一部の例です。


namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        return 'ユーザーの一覧表示';
    }

    public function show($id)
    {
        return 'ユーザーの詳細(ID: '.$id.')';
    }

    public function create()
    {
        return '新規ユーザー作成フォーム';
    }

    // その他のメソッドも同様に記述します
}

必要な処理ごとにメソッドを用意しておけば、Laravelが自動的にルーティングしてくれるのです。

5. 特定のメソッドだけ使いたいとき

5. 特定のメソッドだけ使いたいとき
5. 特定のメソッドだけ使いたいとき

resourceルートの便利なところは、必要なメソッドだけを選んで使うこともできる点です。


Route::resource('users', UserController::class)->only([
    'index', 'show'
]);

このようにonly()で指定すれば、indexshowだけが有効になります。逆に、except()を使えば除外もできます。


Route::resource('users', UserController::class)->except([
    'destroy'
]);

6. コントローラルートを使うメリット

6. コントローラルートを使うメリット
6. コントローラルートを使うメリット
  • ルート定義がスッキリして読みやすくなる
  • 処理を1か所にまとめられて再利用しやすい
  • 大規模アプリでも管理しやすくなる
  • コーディングのミスを減らせる

Laravelのコントローラルーティングは、アプリの規模が大きくなるほど効果を発揮します。最初は覚えることが多いですが、少しずつ慣れていきましょう。

まとめ

まとめ
まとめ

Laravelのコントローラルーティングは、開発を進めるうえで欠かせない基礎となるしくみであり、URLと処理を自然に結びつける重要な役割を果たします。とりわけ、単一アクションで構成するactionルートと、複数の画面や操作を一括で扱えるresourceルートは、初心者でも使いやすい構造を備えています。これらを理解すると、アプリケーション全体の流れが見えやすくなり、処理を整理しながら開発を進められるようになります。

とりわけresourceルートのように、一行で七つのルートが自動生成される仕組みは、画面数が増えるほど便利さが際立ちます。ひとつひとつルートを追加していた作業を省けるので、記述が美しくまとまり、変更時の修正範囲も最小限に抑えられます。また、onlyやexceptを使えば必要な処理だけを柔軟に取り出せるため、無駄のない構成でアプリケーションを保てます。

さらに、コントローラ側ではindexやshow、createといった定型的なメソッド名が決まっているため、複数人のチームで開発するときでも迷いなく役割を共有できます。役割が明確で規則性があるので、検索や修正といった作業も効率的に行うことができます。初心者であっても、この規則性を理解すれば、機能追加のたびにどこを編集すべきかがすぐに判断できるようになります。

また、Laravelのコントローラルーティングは、単なるルート設定にとどまらず、アプリケーション全体を整理するための“地図”のような存在です。複雑な処理を整理し、見通しのよい開発につなげるための土台をつくるポイントとして押さえておくと、のちの拡張や改善作業にも大きく役立ちます。

下記は、今回学んだ内容を振り返るために書いた簡易的なサンプルコードです。resourceルートと単一actionルートがどのように共存できるのかを、実際の記述に寄せてまとめています。

ルートとコントローラのサンプルコード


use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HelloController;
use App\Http\Controllers\UserController;

Route::get('/hello', [HelloController::class, 'index']);

Route::resource('users', UserController::class)->only([
    'index', 'show', 'create'
]);

Route::resource('members', UserController::class)->except([
    'destroy'
]);

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        return 'ユーザー一覧';
    }

    public function show($id)
    {
        return 'ユーザー詳細: ' . $id;
    }

    public function create()
    {
        return 'ユーザー作成ページ';
    }
}

このように、Laravelのルーティングとコントローラは役割がはっきりと分かれており、扱い方を理解すれば開発の流れがとてもなめらかになります。コントローラに処理を集約し、ルートには“どの処理を呼び出すか”だけを記述することで、アプリケーション全体が自然と整理されていきます。操作が増えても混乱せず、あとから内容を確認したいときも迷わず目的の処理を探せるようになります。

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

生徒

「今回の学びで、どうしてLaravelのルーティングが大事なのか少しわかった気がします。特にresourceルートが一行で七つの処理をまとめられるのは、とても便利ですね。」

先生

「そうですね。処理を整理するだけでなく、どの部分がどの役割を持っているのかが明確になるので、結果的に開発も読みやすく保てるんですよ。規模が大きくなるほど、そのメリットが大きくなります。」

生徒

「actionルートとresourceルートの違いも理解できました。単一の処理だけならaction、複数の画面を扱うときやCRUD操作がそろっているときはresource…という使い分けが自然なんですね。」

先生

「ええ、その通りです。まずは基本の七つのメソッドに慣れて、必要なときにonlyやexceptを使い分けできるようになると、一気にLaravelが扱いやすくなりますよ。」

生徒

「はい!今日の内容を実際のアプリで試しながら、もっと理解を深めていきたいです。」

先生

「ぜひ実践してみてください。実際に手を動かすと、ルートとコントローラの関係がより立体的に見えてきますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Laravelのコントローラルーティングとは何ですか?初心者向けにわかりやすく説明してほしいです

Laravelのコントローラルーティングとは、URLと処理を分離して管理する仕組みで、URLはルートに書き、実際の処理はコントローラのメソッドにまとめる方法です。ルートファイルがスッキリし、アプリが大きくなっても管理しやすくなるメリットがあります。
関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)