mcpField
L
laravel-architecture

laravel-architecture

github.com/fusengine開発34142 回インストール2 週間前に更新
リポジトリ

laravel-architecture について

laravel-architectureは、Laravel開発者向けにプロジェクト構成、依存性注入、設定、開発環境、本番デプロイを扱うアーキテクチャスキルです。ガイドとコードテンプレートを備え、MCPサーバー、ツール、リソース、プロンプト用のテンプレートも含みます。

主な機能

  1. 01プロジェクト構成とレイヤー設計のガイド
  2. 02サービスコンテナと依存性注入の解説
  3. 03設定と開発環境のガイド
  4. 04Artisan、ファイルシステム、並行処理の資料
  5. 05デプロイ、ログ、エラー処理のガイド
  6. 06MCPサーバーテンプレート

活用シーン

  1. 01新しいLaravelプロジェクトの構成設計
  2. 02サービス、リポジトリ、依存性注入の実装
  3. 03開発環境とデプロイの設定
  4. 04LaravelプロジェクトでのMCPサーバー作成

MCP 対応

MCPの参考資料と、MCPサーバー、ツール、リソース、プロンプトを作成するテンプレートが含まれます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fusengine/agents --skill laravel-architecture

インストール後、Claude Code で/laravel-architectureを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
artisan.md
concurrency.md
configuration.md
container.md
context.md
contracts.md
deployment.md
envoy.md
errors.md
facades.md
filesystem.md
helpers.md
homestead.md
installation.md
lifecycle.md
logging.md
mcp.md
octane.md
packages.md
pennant.md
processes.md
providers.md
releases.md
sail.md
structure.md
references/templates/
AppServiceProvider.php.md
ArtisanCommand.php.md
Envoy.blade.php.md
McpServer.php.md
octane-config.md

詳細

Laravel アプリケーションのアーキテクチャ全体を網羅します。プロジェクト構成 (Actions、Contracts、DTOs、Services、Repositories のレイアウト)、サービス コンテナと依存性注入、サービスプロバイダーとファサード、 環境設定、開発環境(Sail、Valet、Homestead、 Octane)、Artisan CLI、ファイルシステム/プロセス/コンテキスト、機能フラグ(Pennant)、 MCP サーバー、並行処理、本番環境へのデプロイ(Envoy、 ロギング、エラー処理、パッケージ作成を含む)を扱います。

Laravel アーキテクチャパターン

エージェントのワークフロー(必須)

実装を始める前に、3 つのエージェントを並列で起動します。それぞれ個別に Agent を呼び出し、name を指定してください。

  1. fuse-ai-pilot:explore-codebase - 既存のアーキテクチャを分析します
  2. fuse-ai-pilot:research-expert - Context7 で Laravel のパターンを検証します
  3. mcp__context7__query-docs - サービスコンテナと DI のパターンを確認します

実装後、検証のために fuse-ai-pilot:sniper を実行します。


概要

Laravel のアーキテクチャでは、関心事の明確な分離、依存性注入、保守しやすいコード構成を重視します。このスキルでは、プロジェクト構成から本番環境へのデプロイまで、あらゆる内容を扱います。

使用する場面
  • 新しい Laravel プロジェクトを構成する
  • サービス、リポジトリ、アクションを実装する
  • 依存性注入を設定する
  • 開発環境を構成する
  • 本番環境にデプロイする

重要なルール

  1. コントローラーは薄く保つ - ビジネスロジックはサービスに委譲します
  2. インターフェースは app/Contracts/ に配置する - 実装と同じ場所に置かないでください
  3. ファサードより DI を優先する - テストしやすいようにコンストラクターインジェクションを使用します
  4. ファイルは FUSE_SOLID_MAX_LINES 以内に収める - SOLID に従い、大きなファイルは分割します
  5. 環境を分離する - .env はコミットしません

アーキテクチャ

app/
├── Actions/              # Single-purpose action classes
├── Contracts/            # Interfaces (DI)
├── DTOs/                 # Data transfer objects
├── Enums/                # PHP 8.1+ enums
├── Events/               # Domain events
├── Http/
│   ├── Controllers/      # Thin controllers
│   ├── Middleware/       # Request filters
│   ├── Requests/         # Form validation
│   └── Resources/        # API transformations
├── Jobs/                 # Queued jobs
├── Listeners/            # Event handlers
├── Models/               # Eloquent models only
├── Policies/             # Authorization
├── Providers/            # Service registration
├── Repositories/         # Data access layer
└── Services/             # Business logic

リファレンスガイド

コアアーキテクチャ
リファレンス使用する場面
container.md依存性注入、バインド、解決
providers.mdサービスの登録、ブートストラップ
facades.md静的プロキシ、リアルタイムファサード
contracts.mdインターフェース、疎結合
structure.mdディレクトリ構成
lifecycle.mdリクエスト処理の流れ
設定とセットアップ
リファレンス使用する場面
configuration.md環境、設定ファイル
installation.md新規プロジェクトのセットアップ
upgrade.mdバージョンアップ、破壊的変更
releases.mdリリースノート、バージョン管理
開発環境
リファレンス使用する場面
sail.mdDocker 開発
valet.mdmacOS ネイティブ開発
homestead.mdVagrant(レガシー)
octane.md高性能サーバー
ユーティリティとツール
リファレンス使用する場面
artisan.mdCLI コマンド、カスタムコマンド
helpers.mdグローバルヘルパー関数
filesystem.mdファイルストレージ、S3、ローカル
processes.mdシェルコマンドの実行
context.mdリクエストスコープのデータ共有
高度な機能
リファレンス使用する場面
pennant.md機能フラグ
mcp.mdModel Context Protocol
concurrency.md並列実行
操作
リファレンス使用するタイミング
deployment.md本番環境へのデプロイ
envoy.mdSSH タスクの自動化
logging.mdログチャンネル、フォーマット
errors.md例外処理
packages.mdパッケージの作成

テンプレート

テンプレート目的
UserService.php.mdサービス + リポジトリパターン
AppServiceProvider.php.mdDI バインディング、ブートストラップ
ArtisanCommand.php.mdCLI コマンド、シグネチャ、I/O
McpServer.php.mdMCP サーバー、ツール、リソース、プロンプト
PennantFeature.php.mdフィーチャーフラグ、A/B テスト
Envoy.blade.php.mdSSH デプロイの自動化
sail-config.mdDocker Sail の設定
octane-config.mdFrankenPHP、Swoole、RoadRunner

機能マトリクス

機能リファレンス優先度
サービスコンテナcontainer.md高
サービスプロバイダーproviders.md高
ディレクトリ構造structure.md高
設定configuration.md高
インストールinstallation.md高
Octane (パフォーマンス)octane.md高
Sail (Docker)sail.md高
Artisan CLIartisan.md中
デプロイdeployment.md中
Envoy (SSH)envoy.md中
ファサードfacades.md中
コントラクトcontracts.md中
Valet (macOS)valet.md中
アップグレードガイドupgrade.md中
ログlogging.md中
エラーerrors.md中
ライフサイクルlifecycle.md中
ファイルシステムfilesystem.md中
ヘルパーhelpers.md低
Pennant (フラグ)pennant.md低
コンテキストcontext.md低
プロセスprocesses.md低
並行処理concurrency.md低
MCPmcp.md低
パッケージpackages.md低
リリースreleases.md低
Homesteadhomestead.md低

クイックリファレンス

サービスのインジェクション
public function __construct(
    private readonly UserServiceInterface $userService,
) {}
サービスプロバイダーのバインディング
public function register(): void
{
    $this->app->bind(UserServiceInterface::class, UserService::class);
    $this->app->singleton(CacheService::class);
}
Artisan コマンド
php artisan make:provider CustomServiceProvider
php artisan make:command ProcessOrders
環境変数へのアクセス
$debug = env('APP_DEBUG', false);
$config = config('app.name');

Laravel 13 の注意事項

更新されたスタック
  • Symfony 7.4 と 8.0 を同時にサポート (HttpFoundation、Console、Mailer)
  • PHP 8.3 以上が必須 (8.2 はサポート終了)
  • Beanstalk ドライバーには pda/pheanstalk 7.x / 8.x が必要 (5.x はサポート終了)
  • 現在の安定版: 13.33 (2026 年 9 月)
Cache::touch() API

値を再計算せずに TTL を更新する新しいメソッドです。

Cache::touch('user:123', 3600);
Cache::touch('user:123', now()->addHour());
動的ルーティングのための Queue::route()

ジョブクラスごとの宣言的ルーティング (Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts')) と Queue::forward() (13.26 以降) については [[laravel-queues]] を参照してください。

ネストされたモデルの boot → LogicException

Laravel 13 では、モデルが自身の boot 中にインスタンス化されると (モデルの boot()またはトレイトのboot*()内でのnew static())、LogicException` がスローされます。そのロジックは boot サイクルの外に移動してください。

13.x の新機能 (13.1 → 13.33)
  • php artisan dev (13.16 以降): サーバー、queue:listen、Pail、Vite を 1 つのターミナルで実行します。AppServiceProvider::boot() 内の Illuminate\Foundation\DevCommands::artisan('horizon', 'horizon') でカスタマイズでき、php artisan dev:list で一覧表示できます (Node 22.13 以上が必要)
  • #[BindWhen(Impl::class, static fn () => ...)] (13.22 以降): インターフェース上で宣言する条件付きバインディング — PHP 8.5 が必要
  • ほとんどのマネージャー (Cache::store()、Queue、Log、Mail、Auth::guard() など) で Enum (UnitEnum) をサポート (13.3 → 13.7)
  • Guzzle 8 をサポート (13.26 以降)

Laravel 12 → 13 への移行

トピック変更前 (12)変更後 (13)
PHP の最小バージョン8.28.3
PHPUnit1112 (13 もサポート)
Pest34 (PHP 8.4 以上では 5)
CSRFVerifyCsrfTokenPreventRequestForgery (Sec-Fetch-Site によるオリジンチェック)
キャッシュプレフィックスアンダースコアデフォルトでハイフン (後方互換性のために CACHE_PREFIX、REDIS_PREFIX、SESSION_COOKIE を設定)
Beanstalkpheanstalk 5.xpheanstalk 7.x / 8.x
Symfony7.x7.4 / 8.0
モデルの boot許容されていたモデルの boot 中のネストされたインスタンス化 → LogicException
Config—新しい cache.serializable_classes (許可リストによるハードニング、デフォルトは false)
# Backward-compatible cache prefixes when upgrading from L12
CACHE_PREFIX=laravel_cache_
REDIS_PREFIX=laravel_database_
SESSION_COOKIE=laravel_session
// config/cache.php — deserialization hardening
'serializable_classes' => [
    App\DTO\PaymentDto::class,
    App\DTO\OrderDto::class,
],

ベストプラクティス

推奨
  • DTO と値オブジェクトには final readonly class を使用する (PHP 8.3 以上)
  • コンストラクタプロモーション + interface による注入 (依存関係の逆転)
  • ジョブやリクエストをまたいでメタデータを伝播するには Context::add() でログを記録する
  • 本番環境では serializable_classes を設定する
  • App::make() よりも app(Contract::class) を優先する (厳密な型付け)
非推奨
  • モデル自身の boot 中にモデルをインスタンス化する (boot() 内の new static() → L13 では LogicException)
  • 絶対パスをハードコードする (base_path()、storage_path() を使用する)
  • Repository と Service を混在させる (責務ごとに1つ)
  • new ConcreteClass() でコンテナをバイパスする
  • L12 からのアップグレード時にキャッシュプレフィックスの変更を無視する

コメント