サイトアイコンmaita tomoya dev io

Laravel 徹底解説

backend-frameworks

Laravel 徹底解説

概要と歴史

Laravelとは

Laravelは、Taylor Otwellが2011年にリリースしたPHP製のフルスタックWebフレームワークである。PHPフレームワークの中で最も人気があり、「The PHP Framework for Web Artisans(Web職人のためのPHPフレームワーク)」というキャッチフレーズを掲げている。

Taylor OtwellはもともとCodeIgniterを使っていたが、認証やルーティングなどの機能が不足していると感じ、「PHPで美しく、表現力豊かなコードを書けるフレームワーク」としてLaravelを開発した。Ruby on RailsやASP.NET MVCから強い影響を受けている。

主要なマイルストーン

出来事
2011年Laravel v1リリース
2012年Laravel v3(Artisan CLI、マイグレーション)
2013年Laravel v4(Composer採用、完全書き換え)
2015年Laravel v5(ディレクトリ構造刷新、Elixir)
2017年Laravel v5.5(LTS、Auto-Discovery)
2020年Laravel v8(Jetstream、モデルファクトリ刷新)
2022年Laravel v9(Symfony 6ベース)
2023年Laravel v10(PHP 8.1必須)
2024年Laravel v11(最小構成、Laravel Cloud発表)

強みと弱み

観点強み弱み
Eloquent ORM美しいAPI、リレーション定義が直感的N+1問題が発生しやすい
Bladeテンプレートシンプルで強力なテンプレートエンジンSPAとの統合は別途必要
Artisan CLIコード生成、マイグレーション、タスク実行カスタムコマンドが多くなると管理が大変
エコシステムForge、Vapor、Nova、Jetstream等の公式ツール一部は有料サービス
学習曲線ドキュメントが優秀、コミュニティが活発フルスタック機能の全容把握には時間がかかる
PHP世界のWebサイトの約77%で使用される言語言語としてのイメージが低い場合がある
テストPHPUnit統合、Feature/Unitテストの区分テストの実行速度
キュー・ジョブ標準搭載で設定が簡単大規模な場合は専用ツールが必要
セキュリティCSRF、XSS対策が標準PHPの脆弱性に依存する部分もある
求人市場世界的に豊富、日本でも需要ありSIer系ではSpring/Javaが優位

コアコンセプト解説

Eloquent ORM

EloquentはLaravelの中核をなすORM(Object-Relational Mapper)である。ActiveRecordパターンを採用し、RailsのActiveRecordに影響を受けている。

機能説明
モデル定義テーブルとPHPクラスの対応
リレーションhasOne, hasMany, belongsTo, belongsToMany等
スコープ再利用可能なクエリ条件
アクセサ/ミューテタ属性の取得/設定時のデータ変換
ソフトデリート論理削除
イベントcreating, created, updating, updated等のフック
コレクションクエリ結果の強力な操作メソッド群

Bladeテンプレート

Bladeは、Laravelのテンプレートエンジンである。PHPコードを直接書くことも可能だが、Blade独自のディレクティブにより、よりクリーンなテンプレートを記述できる。

主要なディレクティブ:
  @if / @elseif / @else / @endif     → 条件分岐
  @foreach / @endforeach              → ループ
  @extends('layout')                  → レイアウト継承
  @section('content') / @endsection   → セクション定義
  @yield('content')                   → セクション表示
  @component / @endcomponent          → コンポーネント
  {{ $variable }}                     → エスケープ出力
  {!! $html !!}                       → 非エスケープ出力

Artisan CLI

ArtisanはLaravelのコマンドラインツールである。

コマンド用途
make:modelモデル作成
make:controllerコントローラー作成
make:migrationマイグレーション作成
make:seederシーダー作成
make:middlewareミドルウェア作成
make:requestフォームリクエスト作成
make:jobジョブ作成
migrateマイグレーション実行
db:seedシーダー実行
route:listルート一覧表示
queue:workキューワーカー起動
schedule:runスケジューラー実行

サービスコンテナとサービスプロバイダ

LaravelのIoC(Inversion of Control)コンテナは、依存性注入の中核である。

サービスコンテナ: クラスの依存関係を解決し、インスタンスを生成する仕組み
  → コンストラクタに型宣言するだけで自動注入

サービスプロバイダ: サービスをコンテナに登録する場所
  → register(): バインディングの登録
  → boot(): 初期化処理

Laravel 11の変更点

Laravel 11は「最小構成」をテーマに大幅なスリム化が行われた。

変更点説明
ディレクトリ構造の簡素化Middleware、Consoleディレクトリ等が削除
bootstrap/app.phpアプリケーション設定の一元化
スリムなスケルトン不要なファイルが生成されなくなった
PHP 8.2必須モダンPHP機能の活用
ヘルスチェック標準搭載
年1回のリリースサイクルLTSモデルから年次リリースへ

Laravelエコシステム

公式ツール・サービス

ツール用途備考
Laravel Forgeサーバープロビジョニング・デプロイ有料サービス
Laravel Vaporサーバーレスデプロイ(AWS Lambda)有料サービス
Laravel Nova管理パネル構築有料
Laravel Jetstream認証スカフォールド無料
Laravel Breeze軽量認証スカフォールド無料
Laravel Cashierサブスクリプション課金(Stripe/Paddle)無料
Laravel Scout全文検索無料
Laravel HorizonRedisキューの監視無料
Laravel Telescopeデバッグ・監視ツール無料
Laravel SanctumAPI認証(SPA/モバイル)無料
Laravel LivewireリアクティブUI(PHP only)無料
Inertia.jsSPA開発(React/Vue + Laravel)無料
Laravel SailDocker開発環境無料
Laravel Herdローカル開発環境(macOS/Windows)無料版あり

Livewire vs Inertia.js

フロントエンド開発のアプローチとして、LaravelにはLivewireとInertia.jsの2つの選択肢がある。

観点LivewireInertia.js
概念PHPでリアクティブUISPA(React/Vue)+ Laravel
JavaScript不要(PHPのみ)React/Vue/Svelteを使用
学習コスト低い(PHPだけでOK)中(フロントエンドFWの知識が必要)
パフォーマンスAJAX通信でDOM更新SPA的な高速遷移
適したケース管理画面、CRUD系モダンなUI/UX

適しているユースケース

Laravelが適しているケース

  • フルスタックWebアプリ: ECサイト、SaaS、SNS
  • API開発: RESTful API、GraphQL API
  • 管理画面付きWebサービス: Nova/Filamentによる素早い構築
  • コンテンツ管理: ブログ、メディアサイト
  • SaaS: マルチテナント、課金管理(Cashier)
  • リアルタイム通信: Broadcasting(Pusher/WebSocket)

適していないケース

  • 超高パフォーマンス要件: Go、Rustの方が適切
  • マイクロサービス: 軽量なフレームワークの方が適切
  • 機械学習: Pythonの方が適切
  • 非PHP環境: チームがPHPに不慣れな場合

採用企業の実例

企業用途備考
9GAGコンテンツプラットフォーム大規模トラフィック
Barracudaセキュリティ製品エンタープライズ
About YouECプラットフォームドイツのファッションEC
Alisonオンライン学習プラットフォームEdTech
RatioFinTechプラットフォーム金融
Invoice Ninja請求書管理SaaSオープンソースSaaS
BASEECプラットフォーム日本のEC
noteコンテンツプラットフォーム日本のメディア

パフォーマンス特性

リクエスト処理速度

構成リクエスト/秒(概算)
Laravel(PHP-FPM)約500-2,000 req/s
Laravel Octane(Swoole)約5,000-15,000 req/s
Laravel Octane(RoadRunner)約4,000-12,000 req/s

Laravel Octane

Laravel 8.x以降で導入されたOctaneは、アプリケーションを常駐プロセスとして実行することで、リクエストごとのブートストラップコストを排除し、大幅なパフォーマンス向上を実現する。

観点通常のPHP-FPMOctane(Swoole)
リクエスト処理毎回ブートストラップ初回のみ
パフォーマンス基準5-10倍向上
メモリ管理リクエスト終了で解放メモリリークに注意
並行処理プロセスベースコルーチンベース

他フレームワークとの比較

観点LaravelRailsDjangoSpring Boot
言語PHPRubyPythonJava/Kotlin
ORMEloquentActiveRecordDjango ORMSpring Data JPA
テンプレートBladeERB/SlimJinja2Thymeleaf
CLIArtisanrailsmanage.pySpring Initializr
管理画面Nova/FilamentActiveAdminDjango Admin自作
キューLaravel QueueSidekiq/Solid QueueCelerySpring Batch
学習曲線
求人(日本)増加中多い増加中多い

学習ロードマップ

Laravel初学者向け

  1. PHPの基礎: OOP、名前空間、Composer
  2. Laravelの基本: ルーティング、コントローラー、ビュー
  3. Eloquent: モデル、マイグレーション、リレーション
  4. Blade: テンプレート、コンポーネント
  5. 認証: Breeze or Jetstream
  6. バリデーション: FormRequest、カスタムルール
  7. テスト: Feature Test、Unit Test
  8. キュー/ジョブ: 非同期処理
  9. API開発: Sanctum、API Resources
  10. デプロイ: Forge or Docker

まとめ

Laravelは、PHP最人気のフレームワークとして確固たる地位を築いている。Eloquentの直感的なAPI、Bladeの美しいテンプレート、Artisanの生産性、そして豊富な公式エコシステムにより、フルスタックWebアプリケーション開発において極めて高い生産性を実現する。

特に以下の場合にLaravelを推奨する。

  • PHPで本格的なWebアプリケーションを開発したい
  • フルスタック開発を一つのフレームワークで完結させたい
  • 管理画面付きのWebサービスを素早く構築したい
  • 既存のPHPプロジェクトをモダン化したい

Laravel 11の「最小構成」への移行と、Livewire/Inertia.jsによるモダンなフロントエンド対応により、Laravelは今後もPHP Webフレームワークのトップであり続けるだろう。


参考リンク