概要
このセクションでは、公式ドキュメントだけでは分からないLaravelの内部実装や、パッケージ開発に特化した上級トピックを扱います。ソースコードを読み解きながら、実践的な設計パターンや拡張方法を解説します。パッケージ開発
Laravelパッケージ開発
サービスプロバイダーを核としたパッケージ開発の基礎から、設定・ビュー・マイグレーションの公開まで網羅します。
Orchestra TestbenchでLaravelパッケージをテストする
Orchestra Testbenchを使ってパッケージのテスト環境を構築し、サービスプロバイダー・ファサード・DBを検証します。
Testbench Workbenchでパッケージ開発を進める
実アプリに近い検証環境を作り、ルート・マイグレーション・サービス起動を備えた開発フローを構築します。
パッケージのバージョン互換性管理
LaravelとPHPのバージョンアップに対応するパッケージメンテナンス戦略とGitHub Actionsのテストマトリクス設定。
GeneratorCommand — カスタム make: コマンドの実装
パッケージ独自の
make: コマンドをGeneratorCommandを継承して実装する方法を解説します。パッケージ設定のマージとキャッシュ
浅いマージと再帰的な置換の違いを読み解き、公開済み設定と設定キャッシュを考慮して保守します。
パッケージのマイグレーション公開と更新
公開と直接読み込みの違い、日時変更と再公開のリスク、既存利用者へのスキーマ変更を解説します。
パッケージビューの上書きと更新
ビューの検索順序、公開済みテンプレートの互換性、Bladeキャッシュを考慮した更新手順を解説します。
パッケージのルート登録とキャッシュ
ミドルウェアと名前の分離、設定変更とルートキャッシュ再作成の関係を解説します。
パッケージのキャッシュとoptimizeへの統合
独自タスクの登録キー、除外指定、実行順序、失敗時の扱いを解説します。
パッケージの公開アセットと更新
JavaScript・CSSの配布、タグの選択範囲、上書きとComposer更新時の再公開を解説します。
パッケージ翻訳の上書きと更新
PHP翻訳の部分上書き、JSON翻訳の共有キー、公開済み翻訳を壊さない更新方法を解説します。
パッケージのサービス解決後フック
callAfterResolving()による遅延設定と解決済みサービスへの反映、冪等性の注意点を解説します。
パッケージのArtisanコマンド登録と依存解決
登録・インスタンス生成・実行の違いと、handle()への依存注入による副作用の分離を解説します。
パッケージのイベントリスナー登録とキャッシュ
明示登録と自動検出の違い、二重登録の回避、event:cacheの対象と更新時の検証を解説します。
パッケージサービスのライフサイクル設計
scopedの内部実装、singletonが保持する依存関係、長寿命ワーカーでの状態分離を解説します。
パッケージのミドルウェア登録と適用範囲
エイリアス登録と適用の分離、グループの上書き回避、キャッシュ時の検証を解説します。
パッケージのBlade拡張とコンパイルキャッシュ
独自ディレクティブと条件式の実行タイミング、更新時のキャッシュ管理を解説します。
パッケージのStorageドライバー登録と再解決
生成処理の登録、ディスクの保持と再解決、fakeとは別に必要な検証を解説します。
フレームワーク内部
Laravel 11以降のアプリケーション構造
Slim Application Skeletonの全貌と、Application::configure()からApplicationBuilderまでの内部実装を解説します。
Macroableトレイト
既存のLaravelクラスに独自メソッドを追加するMacroableトレイトの仕組みと活用パターン。
Conditionableトレイト
when()/unless()メソッドの内部実装と、流暢なAPIを設計するための活用パターン。
Illuminate\Support\Manager — ドライバーシステムの解剖
Laravel 4.0から続くドライバーシステムの核心クラス。カスタムドライバーの登録方法からMultipleInstanceManagerまで。
Pipelineパターン
Illuminate\Pipeline\Pipelineクラスの仕組みと、複数の処理ステップをチェーンで構成するパターン。
InteractsWithDataトレイト
パッケージ開発で自前クラスにデータアクセスAPIを実装するためのトレイト設計を解説します。
tap() ヘルパーと Tappable トレイト
Laravelのtap()ヘルパーとTappableトレイトの使い方と実装パターン。
PHPアトリビュート
Laravel 13で導入・強化されたPHPアトリビュートを使って、ジョブやモデルの設定を宣言的に記述する方法。
once() ヘルパーの内部実装
Once・OnceableクラスによるWeakMapキャッシュの仕組みと、EloquentのPreventsCircularRecursionへの応用。
Eloquent 深掘り
Eloquentのカスタムキャスト
CastsAttributesインターフェースを実装したカスタムキャスト。Value Objectパターン、インバウンドキャスト、Castablesも紹介。
Eloquent Observers とモデルイベント
Eloquentモデルが発火するイベントの仕組みと、Observerクラスによるイベントの一元管理。
Eloquentのスコープ
ローカルスコープとグローバルスコープの仕組み。SoftDeletingScopeなどの内部実装から実践的なユースケースまで。
Collection Deep Dive
Laravel Collectionの実装を、歴史・クラス構造・PHPDoc Generics・読み進め方の観点で解説します。
コレクションの高階メッセージ
コレクションの高階メッセージ(Higher-order Messages)の仕組みと実践的な使い方。
MCP・AI
LaravelでMCPサーバーを作る
laravel/mcpパッケージを使って本番運用できるMCPサーバーを構築する。ツール・リソース・プロンプトの実装から認証まで。
AI SDKのカスタムプロバイダーを作る
Laravel AI SDKのソースコードを読み解き、標準で提供されていないAIサービスに対応するカスタムプロバイダーを実装。
Boostのカスタムエージェントを作る
Laravel Boostの拡張アーキテクチャを深掘りし、カスタムエージェントを作成する方法を解説します。
認証・バリデーション・その他
カスタム認証ガードの実装
Guard・StatefulGuardインターフェースを実装してカスタム認証ガードを作る方法をソースコードレベルで解説。
カスタムバリデーションルール
ルールオブジェクトやクロージャでバリデーション機能を拡張する方法を内部実装まで踏み込んで解説。
レート制限のカスタマイズ
RateLimiterファサードを深掘りし、ユーザー別・プラン別・IPアドレス別のカスタムレート制限を実装。
Pestを使った高度なテスト
Expectation API・データセット・フェイク・Mockeryまで、Pestの高度な使い方を体系的に解説。