第30回: ルーティング設計 — URLと処理を「一覧できる地図」に整える

章: 第4章: Laravelフレームワーク

アプリが大きくなるほど、どのURLがどの処理を呼ぶか分からなくなっていませんか?

ルーティングの定義が散漫になると、バグ修正の際にどのファイルを触ればいいか迷いが生じます。Laravelのルーティングを正しく設計することで、アプリの全体構造を一目で把握できる「地図」が手に入ります。

ルーティングが整理されていないと何が起きるか

ルートが無秩序に増えると、同じURLパターンが重複したり、認証が必要なエンドポイントに認証なしでアクセスできたりする設計ミスが生まれやすくなります。LaravelのRoute::resourceやグループ機能を活用すると、こうした問題を構造的に防げます。

ルーティング設計の良い例・悪い例

観点 悪い例 良い例
CRUD定義 get/post/put/delete を個別に手書き Route::resource で一括定義
認証ガード 各ルートに個別で auth を追加 middleware('auth')->group() でまとめる
命名 名前なしルート ->name('posts.index') で明示
可読性 routes/web.php に全部書く 機能ごとにファイルを分割

チェックポイント: php artisan route:list を実行して全ルートを一覧表示しましょう。URIの重複・名前の欠落・未認証のルートがないかをコードレビューの前に必ず確認します。

コードサンプル


<?php
use App\Http\Controllers\PostController;

Route::get('/', fn() => view('welcome'));
Route::get('/posts', [PostController::class, 'index'])->name('posts.index');

// RESTリソースをまとめて定義
Route::resource('posts', PostController::class);

// グループ化(認証必須)
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
});

まとめ & 次のステップ

  • Route::resource を使うとCRUD操作を1行で定義でき、見落としが減ります
  • middleware()->group() で認証・権限の適用範囲を明確に絞れます
  • ->name() で名前付きルートにすることでリンク生成がリファクタリングに強くなります
  • php artisan route:list を定期的に実行し、ルートの整合性を確認しましょう
  • ルートが増えてきたら routes/ 配下でファイル分割を検討してください

次回は コントローラとアクション を学びます。リクエストを受け取り適切なレスポンスを返す司令塔の設計を整理しましょう。

Related Articles