LaravelでWebアプリケーションを開発する上で、まず理解しておきたいのが「ルーティング」の仕組みです。
ルーティングとは、「URLと処理内容のマッピング」を定義する仕組みで、アプリケーションの“入口”を管理する非常に重要な役割を担っています。
この記事では、Laravelのルーティングの基本について、初心者にもわかりやすく解説します。
ルーティングとは?
「ルーティング(Routing)」とは、ユーザーがアクセスしたURLに対して、どのコントローラーやビューを返すかを定義する機能です。Laravelでは、routes/
ディレクトリ内にあるファイルでルーティングを設定します。
主に使われるのは以下の2つ:
-
web.php
:Webアプリケーション用のルート -
api.php
:API用のルート
Laravelのルート定義はとても直感的でシンプル。例えば、以下のように書くだけで /hello
というURLにアクセスできるようになります。
// routes/web.php
Route::get('/hello', function () {
return 'こんにちは、Laravel!';
});
ルートのHTTPメソッド
Laravelでは以下のようなHTTPメソッドに対応しています:
-
Route::get()
:主に表示用のリクエスト -
Route::post()
:フォーム送信やデータ登録用 -
Route::put()
/Route::patch()
:更新処理用 -
Route::delete()
:削除処理用
例えば、フォームからの送信処理は以下のように記述します。
Route::post('/submit', function () {
// データ処理
});
ルートとコントローラーの紐づけ
ルートには匿名関数だけでなく、コントローラーメソッドを指定することも可能です。
// コントローラーのルート定義
Route::get('/users', [UserController::class, 'index']);
このように書くことで、コントローラーの index
メソッドが実行されます。
さらに、コントローラーをグルーピングすることで、より見通しの良い設計が可能になります。
Route::controller(UserController::class)->group(function () {
Route::get('/users', 'index');
Route::get('/users/{id}', 'show');
});
ルートパラメータ
URLの一部を変数として受け取りたいときは、ルートパラメータを使います。
Route::get('/user/{id}', function ($id) {
return "ユーザーIDは {$id} です";
});
オプションパラメータも ?
を使って指定可能です。
Route::get('/post/{id?}', function ($id = null) {
return $id ? "記事ID: {$id}" : "記事IDが指定されていません";
});
名前付きルートとルートヘルパー
ルートに名前をつけることで、アプリ内でURLをハードコーディングせずに呼び出せるようになります。
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Blade内でのリンク生成:
<a href="{{ route('dashboard') }}">ダッシュボードへ</a>
ミドルウェアとルーティング
ルートに対してミドルウェアを適用することで、認証やアクセス制御が可能になります。
Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index']);
});
auth
ミドルウェアが適用されているため、未ログインユーザーはこのページにアクセスできません。
まとめ
Laravelのルーティングは、柔軟性と拡張性を兼ね備えた非常に強力な機能です。
シンプルなルートから、コントローラー連携、パラメータ、ミドルウェアの適用まで、段階的に学ぶことで効率的なアプリケーション設計が可能になります。
ルーティングを理解することは、Laravelを使いこなすための第一歩です。まずは基本を押さえ、実際にルートをいくつか定義してみることから始めてみましょう。