章: 第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/配下でファイル分割を検討してください
次回は コントローラとアクション を学びます。リクエストを受け取り適切なレスポンスを返す司令塔の設計を整理しましょう。