Laravel は、MVCのWebアプリケーション開発用の自由かつオープンソースのPHPで書かれたWebアプリケーションフレームワークである。様々なコミュニティのコンポーネントを使用しており、特にSymfonyは9つのコンポートを利用するなど重要な基盤となっている。LaravelはMITライセンスの下でリリースされており、そのソースコードはGitHubにホスティングされている[3]。マイクロソフトの.NETの開発に関わっていたTaylor Otwell が開発し、Taylorを中心としたコミュニティーが活発な開発を続けている[4]。
2023年12月現在、GitHubでのスター獲得数がPHP, Ruby, Python等のバックエンド系プログラミング言語のフレームワーク中で最も多いなど、人気のフレームワークの1つとなっている[5]
[6]。
2024年3月12日、laravel.comにおいて、バージョン11がリリースされたことが発表された[7]。
今後も約12ヶ月毎にバージョンアップを行い、Symfonyのリリースの2ヶ月後を目途にLaravelのリリースも行われる予定となっている[8]。
特徴
主要なWebアプリケーションフレームワークの中では後発のフレームワークであるLaravelのバージョン1は2011年6月にリリースされた。バージョン1のリリース後、バージョン2(2011年11月)バージョン3(2012年2月)と早いペースでリリースされた後、バージョン4(2013年5月)ではコードがゼロベースから書き直され、当時スタンダードになりつつあったパッケージ管理システムのComposerを採用し、PHPの歴史のあるフレームワークであるSymfonyのコンポーネントを利用するなど、抜本的な変更が行われた。[9]
2015年2月にリリースされたバージョン5.0はもともとバージョン4.3としてリリースが予定されていたところ、変更点が大きいということでメジャーバージョンアップ扱いになった経緯がある。[9]
コミュニティーの活発な活動を背景に、1年に1度以上のメジャーバージョンアップがあり、またマイナーバージョンアップでも繰り返し機能追加等が行われている。セキュリティフィックスの期限も比較的短期間であるために、Laravelで作られたWebアプリケーションは常に最新のバージョンに対応していく必要がある。バージョン5.5やバージョン6はLTS(Long Term Support)となっており、これらはセキュリティフィックスの期限が3年間となっていたため、LTSのバージョンを利用するユーザは他のバージョンから比較して多かった[10]。しかし、当初LTSの予定だったバージョン9はLTSではなくなり、またバージョン10もLTSではなかったため、利用するユーザはEOLまでに今後リリースされる新しいバージョンへ対応していく必要がある。
LaravelはフルスタックのWebアプリケーションフレームワークであり、ルーティング、リエクスト処理、ビュー、クエリビルダー、ORM(オブジェクト関係マッピング)、DI(依存性の注入)、認証等のユーザ管理、ユニットテスト、ブラウザテスト等、現代的なフレームワークが要求される一通りの機能を実装している。またコンソールからArtisanコマンド(Ruby on Railsのrailsコマンドに相当)を利用することにより、コントローラやビューの雛形の作成、データベーススキーマの作成等、一通りの作業を行うことができる。また、ユーザのオリジナルのArtisanコマンドを作成したり、コントローラ等の通常のコード内からArtisanコマンドを呼び出すといったこともできる。
バージョン
- LTS(Long Term Support) のリリースはバグフィックスが2年間、セキュリティフィックスは3年間
- LTSではない通常のリリースはバグフィックスが18ヵ月、セキュリティフィックスは2年間[38]
- バージョン6より、セマンティックバージョニング[39]を採用したため、バージョンナンバーのインクリメントはバージョン5系の時代と大きく異なる。
バージョン別機能比較 (Laravel 1 to 4)[1]
バージョン |
Laravel 1 |
Laravel 2 |
Laravel 3 |
Laravel 4
|
認証(Auth) |
○ |
○ |
○ |
○
|
キャッシュ |
○ |
○ |
○ |
○
|
Eloquent |
○ |
○ |
○ |
○
|
MySQL |
○ |
○ |
○ |
○
|
PostgreSQL |
○ |
○ |
○ |
○
|
SQLite |
○ |
○ |
○ |
○
|
SQLServer |
- |
- |
○ |
○
|
マイグレーション |
- |
- |
○ |
○
|
IoCコンテナ |
- |
○ |
○ |
○
|
Config |
○ |
○ |
○ |
○
|
Formヘルパー |
○ |
○ |
○ |
○
|
HTMLヘルパー |
○ |
○ |
○ |
○
|
URLヘルパー |
○ |
○ |
○ |
○
|
ルーティング |
○ |
○ |
○ |
○
|
コントローラー |
- |
○ |
○ |
○
|
モデル |
○ |
○ |
○ |
○
|
ビュー |
○ |
○ |
○ |
○
|
モデル間のリレーションシップ |
- |
○ |
○ |
○
|
リダイレクト |
○ |
○ |
○ |
○
|
レスポンス |
○ |
○ |
○ |
○
|
String(文字列)ヘルプ関数 |
○ |
○ |
○ |
○
|
バリデーション |
- |
○ |
○ |
○
|
ユニットテスト |
- |
- |
○ |
○
|
Bladeテンプレートエンジン |
- |
- |
○ |
○
|
DB Seeding |
- |
- |
- |
○
|
キュー |
- |
- |
- |
○
|
メール |
- |
- |
- |
○
|
ファサード(Facade) |
- |
- |
- |
○
|
コマンドライン(CLI) |
- |
- |
○ |
○
|
拡張性 |
モジュールライブラリ |
モジュールライブラリ |
バンドルライブラリ |
Composerパッケージ
|
Laravel 4 と Laravel 5 のディレクトリ構造の違い[40][41]
Laravel 4 |
Laravel 5
|
app/commands |
app/Console
|
app/config |
config
|
app/controllers |
app/Http/Controllers
|
app/database |
database
|
app/lang |
resources/lang
|
app/models |
app
|
app/start |
無し
|
app/storage |
storage
|
app/tests |
tests
|
app/views |
resources/views
|
app/filters.php |
廃止(app/Providers/FilterServiceProviderに定義)
|
app/routes.php |
app/Http/routes.php(5.2以降はapp/routes/api.phpに定義)
|
app/database/production.sqlite |
storage/database.sqlite(ファイルはないので自分で作る必要あり)
|
他のWebアプリケーションフレームワークとの比較と動向
- バックエンドのフレームワークにおいて、PHPのLaravel、PythonのDjango、RubyのRuby on Railsが3大バックエンドフレームワークと見なされることもある[42]。
- Stack Overflowの質問数でも他のPHPのWebアプリケーションフレームワークがシェアを落とす中、Laravelはシェアを上げており、事実上のPHPのWebアプリケーションフレームワークのデファクトスタンダードと言える状態になっている。[43]
- Laravelはベンチマークにおいて他の主要なPHPのWebアプリケーションフレームワークと比較した際、時間あたりのリクエストの処理数は少なく、メモリ使用量は多めである傾向がある[44][45][46][47]。
カンファレンス
Laraconは Laravelのコンベンション(カンファレンス)のことである[48]。様々なスポンサーの追加支援を受けたUserScape[49]によって大規模にオーガナイズ化されて開かれている[50][51][52]。
ライセンス
LaravelはMITライセンス[76]の下にライセンスされているオープンソースのソフトウェアである[77]。すなわち、Laravelを誰でも自由・無制限に扱って良い。ただし、著作権表示および本許諾表示をLaravelのすべての複製または重要な部分に記載しなければならない。作者または著作権者は、ソフトウェアに関して一切の責任を負わない。
名前の由来
Laravelの名前は『ナルニア国物語』に登場するナルニア国の王都、ケア・パラベルにちなむ[78]。
関連するフレームワーク
Laravelを軽量化したマイクロフレームワークとして、Lumenがある。[79]
関連項目
脚注
外部リンク