mcpField
I
interfaces-and-autowiring

interfaces-and-autowiring

github.com/dev-toolings開発22799 回インストール3 週間前に更新
リポジトリ

interfaces-and-autowiring について

interfaces-and-autowiringは、Symfonyのサービスインターフェース設計と依存性注入を扱う開発スキルです。実装の選択、デコレーター、タグ付きコレクション、スカラー注入、自動ワイヤリングの問題診断を扱います。

主な機能

  1. 01用途を絞ったサービスインターフェースの抽出
  2. 02エイリアスによる実装の選択
  3. 03デコレーターによる動作の追加
  4. 04スカラーとタグ付きサービスの注入
  5. 05debug:autowiringによる診断

活用シーン

  1. 01テストで置き換え可能なサービスの設計
  2. 02複数の実装から適切なものを選択
  3. 03ログ、キャッシュ、リトライの追加
  4. 04自動ワイヤリング失敗や型の曖昧さの解消

インストール

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

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill interfaces-and-autowiring

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

同梱ファイルreference.md

詳細

インターフェースと自動配線(Symfony)

使用する場面

  • サービスが具象クラスに依存しており、テストで差し替えたり置き換えたりする必要がある場合。
  • 1 つのインターフェースに複数の実装があり、適切な実装を注入する必要がある場合。
  • 既存のサービスにロギング、キャッシュ、リトライなどの横断的な振る舞いを追加する場合。
  • スカラー値、パラメーター、環境変数、または特定のタグが付いたすべてのサービスを注入する場合。
  • 自動配線が「cannot autowire」というエラーや、型が曖昧であるというエラーで失敗する場合。

デフォルトのワークフロー

  1. 利用側が実際に必要とする機能に絞ったインターフェースを抽出します。
  2. 実装が 1 つだけの場合は、自動配線でバインドします。
  3. 複数の実装がある場合は、名前付きエイリアスと #[Target] を使って、利用側ごとに実装を選択します。
  4. サービスに振る舞いを追加するには、編集したり拡張したりするのではなく、#[AsDecorator] を使います。
  5. #[Autowire] でスカラー値を、#[AutowireIterator] でタグ付きコレクションを注入します。
  6. 関連する型ごとに debug:autowiring で結果を確認します。

ガードレール

  • private readonly の依存関係をコンストラクターで注入します。セッターによる注入やコンテナーへのアクセスは行いません。
  • インターフェースは小さく保ちます。1 つのインターフェースにつき、利用側のニーズは 1 つにします。
  • デフォルトではサービスを final にし、拡張するのではなくデコレートします。
  • 一部の処理経路で使われない高コストな依存関係に限り、遅延サービスまたはサービスクロージャーを使用します。

段階的な開示

  • 実行方針とリスク管理には、このファイルを使用します。
  • 実装の詳細を深く確認する必要がある場合は、リファレンスを開きます。

出力要件

  • インターフェースと、各実装を選択するバインドまたはエイリアス。
  • 優先度を含むデコレーターまたはタグ付きコレクション。
  • 関連する型の debug:autowiring の出力。

リファレンス

  • reference.md

コメント