← Back to list

di-configuration
by s4k10503
Unityによるアバターシステムクライアント
⭐ 0🍴 0📅 Jan 24, 2026
SKILL.md
name: di-configuration description: Configures VContainer DI settings. MUST use proactively when adding new services, use cases, repositories, or modifying dependency injection. Also triggers on "DI", "VContainer", "LifetimeScope". allowed-tools: Read, Grep, Glob, Edit
DI Configuration
Execution Mode
調査フェーズ推奨: 既存DI設定確認時はサブエージェントでコンテキスト節約。
調査フェーズ(Exploreサブエージェント)
既存登録状況の確認が必要な場合:
runSubagent(
description: "既存DI設定確認",
prompt: """
以下の調査を実行し、結果をサマリーで返してください:
1. Assets/Scripts/Composition/Installers/ 配下のLifetimeScopeファイル一覧を取得
2. 各LifetimeScopeの登録内容を把握:
- Singleton登録一覧
- Scoped登録一覧
- インターフェースバインディング
3. 新規追加対象: [クラス名]
## 返却フォーマット
- 既存登録状況(同様のパターンがあるか)
- 推奨登録先(どのLifetimeScopeか)
- 推奨Lifetime(Singleton/Scoped)
"""
)
実装フェーズ(メイン)
調査結果に基づき、メインコンテキストでDI登録を実装。
References
DI設定の詳細は以下を参照:
- 依存性注入ガイド: docs/Spec/dependency-injection.md
既存実装の参考:Assets/Scripts/Composition/Installers/
Quick Reference
| Lifetime | 対象 | 登録場所 |
|---|---|---|
| Singleton | UseCase, Service, Repository | MainSceneLifetimeScope |
| Singleton | CameraAdapter, Coordinator | 各Page固有Installer |
| Scoped | Presenter, EventHandler | PageScopeManager |
Camera Adapter登録パターン
Camera AdapterはPage固有のInstallerに登録する(SharedではなくPage単位):
| Adapter | 登録先Installer |
|---|---|
| CinemachineAvatarCameraAdapter | AvatarEditPageInstaller |
| CinemachineTPSCameraAdapter | RoomPageInstaller |
| CinemachineOverheadCameraAdapter | RoomEditPageInstaller |
Registration Patterns
// インターフェース → 実装
builder.Register<HttpApiClientService>(Lifetime.Singleton)
.As<IRequestSenderService>();
// UseCase
builder.Register<LoginUseCase>(Lifetime.Singleton)
.AsImplementedInterfaces();
// MonoBehaviour
builder.RegisterComponent(uiDocument);
New Dependency Checklist
- Domain層にインターフェース追加
- Infrastructure層で実装クラス作成
- LifetimeScopeで登録
- コンストラクタインジェクションで受け取り
- テストでモック差し替え確認
新Feature追加時のDI設定
新しいFeature(例: Features/Shop/)を追加する場合:
1. Installerの作成判断
| 条件 | アクション |
|---|---|
| Feature固有のUseCase/Serviceがある | {FeatureName}Installer.cs を作成 |
| Shared層で十分 | 既存Installerに追加 |
2. 登録先
| 対象 | 登録先 | Lifetime |
|---|---|---|
| Feature固有UseCase | {FeatureName}Installer | Singleton |
| Feature固有Service | {FeatureName}Installer | Singleton |
| Presenter | PageScopeManager | Scoped |
3. MainSceneLifetimeScope への追加
// Composition/Installers/MainSceneLifetimeScope.cs
using var featureInstaller = new {FeatureName}Installer();
featureInstaller.Install(builder);
参照パターン
既存Feature実装を参照: Assets/Scripts/Composition/Installers/{Avatar,Room}SystemInstaller.cs
Score
Total Score
55/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
✓最近の活動
1ヶ月以内に更新
+10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon
