interfaces-and-autowiring について
interfaces-and-autowiringは、Symfonyのサービスインターフェース設計と依存性注入を扱う開発スキルです。実装の選択、デコレーター、タグ付きコレクション、スカラー注入、自動ワイヤリングの問題診断を扱います。
主な機能
- 01用途を絞ったサービスインターフェースの抽出
- 02エイリアスによる実装の選択
- 03デコレーターによる動作の追加
- 04スカラーとタグ付きサービスの注入
- 05debug:autowiringによる診断
活用シーン
- 01テストで置き換え可能なサービスの設計
- 02複数の実装から適切なものを選択
- 03ログ、キャッシュ、リトライの追加
- 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 つだけの場合は、自動配線でバインドします。
- 複数の実装がある場合は、名前付きエイリアスと
#[Target]を使って、利用側ごとに実装を選択します。 - サービスに振る舞いを追加するには、編集したり拡張したりするのではなく、
#[AsDecorator]を使います。 #[Autowire]でスカラー値を、#[AutowireIterator]でタグ付きコレクションを注入します。- 関連する型ごとに
debug:autowiringで結果を確認します。
ガードレール
private readonlyの依存関係をコンストラクターで注入します。セッターによる注入やコンテナーへのアクセスは行いません。- インターフェースは小さく保ちます。1 つのインターフェースにつき、利用側のニーズは 1 つにします。
- デフォルトではサービスを
finalにし、拡張するのではなくデコレートします。 - 一部の処理経路で使われない高コストな依存関係に限り、遅延サービスまたはサービスクロージャーを使用します。
段階的な開示
- 実行方針とリスク管理には、このファイルを使用します。
- 実装の詳細を深く確認する必要がある場合は、リファレンスを開きます。
出力要件
- インターフェースと、各実装を選択するバインドまたはエイリアス。
- 優先度を含むデコレーターまたはタグ付きコレクション。
- 関連する型の
debug:autowiringの出力。
リファレンス
reference.md
コメント
Markdown 対応