はじめに
プログラミングを学び始めたばかりの方にとって、Webアプリケーションフレームワークのルーティングは重要な基礎です。本記事では、PHPの代表的なフレームワークであるLaravelのルーティングの基本を解説しながら、Ruby on Railsのroutes.rbとの違いにフォーカスして説明します。
1. Laravelのルーティングとは?
Laravelにおけるルーティングは、アプリケーションのURLとコントローラーの処理を紐づける仕組みです。ルーティングはroutes/web.phpファイルに定義します。以下は、基本的なルーティングの例です。
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
主な特徴:
メソッドベース:Route::get
、Route::post
などHTTPメソッドごとにルートを定義。
クロージャ対応:簡単な処理なら匿名関数(クロージャ)内に直接記述可能。
グループ化:同じURLパターンやミドルウェアを使うルートをまとめられる。
公式ドキュメント:Routing - Laravel
クロージャ
関数内で定義した特定の変数を参照し続けることで
関数が状態を持てる仕組みを指す。
これにより、定義した変数を外側のスコープでも使用できる。
詳しくは以下を参照。
2. Railsのroutes.rb
との違い
Railsでは、config/routes.rb
ファイルを使ってルーティングを定義します。以下にRailsの基本的なルート定義例を示します。
Rails.application.routes.draw do
root "pages#home"
get "/about", to: "pages#about"
end
Laravelとの主な違い:
特徴 | Laravel | Rails |
---|---|---|
ルート定義の方法 | HTTPメソッドごとに個別定義 |
to:オプション で個別にアクション指定 |
クロージャ | クロージャで直接処理可能 | コントローラーを介さない処理は非推奨 |
ルートグループ | 明示的にRoute::group を使用 |
スコープや名前空間でまとめる |
3. 具体的な比較例
LaravelでのCRUDルーティング
Laravelでは、Route::resource
を使うことでCRUDルートを生成できます。
Route::resource('articles', ArticleController::class);
上記の1行で、以下のようなルートが自動生成されます。
HTTPメソッド | URL | アクション |
---|---|---|
GET | /articles | index |
GET | /articles/create | create |
POST | /articles | store |
GET | /articles/{article} | show |
GET | /articles/{article}/edit | edit |
PUT/PATCH | /articles/{article} | update |
DELETE | /articles/{article} | destroy |
RailsでのCRUDルーティング
Railsでは、resourcesメソッドを使用します。
resources :articles
同様に、CRUD用のルートが自動生成されます。
HTTPメソッド | URL | アクション |
---|---|---|
GET | /articles | index |
GET | /articles/new | new |
POST | /articles | create |
GET | /articles/id | show |
GET | /articles/id/edit | edit |
PUT/PATCH | /articles/id | update |
DELETE | /articles/id | destroy |
4. ルーティングのベストプラクティス
公式ドキュメントを参照:LaravelやRailsは頻繁にアップデートされます。最新の公式情報を確認しましょう。
RESTful設計を意識:リソースに基づいた設計を心がけると、ルート管理が簡単になります。
ルートファイルを整理:グループ化や名前空間を活用して見通しの良いルーティングを目指しましょう。
5. まとめ
LaravelとRailsのルーティングはどちらも強力で柔軟ですが、それぞれに独自の特徴があります。両者を比較しながら使い方を学ぶことで、フレームワークの設計思想や特徴を深く理解できるでしょう。
参考記事