create-ai-project 1.11.2 → 1.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents-en/acceptance-test-generator.md +13 -13
- package/.claude/agents-en/code-reviewer.md +8 -10
- package/.claude/agents-en/design-sync.md +6 -5
- package/.claude/agents-en/document-reviewer.md +8 -7
- package/.claude/agents-en/integration-test-reviewer.md +5 -4
- package/.claude/agents-en/prd-creator.md +7 -6
- package/.claude/agents-en/quality-fixer-frontend.md +3 -14
- package/.claude/agents-en/quality-fixer.md +9 -20
- package/.claude/agents-en/requirement-analyzer.md +8 -7
- package/.claude/agents-en/rule-advisor.md +57 -128
- package/.claude/agents-en/task-decomposer.md +4 -10
- package/.claude/agents-en/task-executor-frontend.md +4 -16
- package/.claude/agents-en/task-executor.md +5 -16
- package/.claude/agents-en/technical-designer-frontend.md +17 -15
- package/.claude/agents-en/technical-designer.md +13 -15
- package/.claude/agents-en/work-planner.md +9 -14
- package/.claude/agents-ja/acceptance-test-generator.md +9 -15
- package/.claude/agents-ja/code-reviewer.md +3 -11
- package/.claude/agents-ja/design-sync.md +2 -6
- package/.claude/agents-ja/document-reviewer.md +4 -9
- package/.claude/agents-ja/integration-test-reviewer.md +2 -5
- package/.claude/agents-ja/prd-creator.md +3 -7
- package/.claude/agents-ja/quality-fixer-frontend.md +2 -13
- package/.claude/agents-ja/quality-fixer.md +7 -18
- package/.claude/agents-ja/requirement-analyzer.md +5 -8
- package/.claude/agents-ja/rule-advisor.md +57 -128
- package/.claude/agents-ja/task-decomposer.md +4 -10
- package/.claude/agents-ja/task-executor-frontend.md +3 -15
- package/.claude/agents-ja/task-executor.md +3 -17
- package/.claude/agents-ja/technical-designer-frontend.md +17 -15
- package/.claude/agents-ja/technical-designer.md +13 -15
- package/.claude/agents-ja/work-planner.md +9 -14
- package/.claude/commands-en/build.md +2 -2
- package/.claude/commands-en/design.md +1 -1
- package/.claude/commands-en/implement.md +8 -8
- package/.claude/commands-en/plan.md +3 -3
- package/.claude/commands-en/project-inject.md +4 -4
- package/.claude/commands-en/{refine-rule.md → refine-skill.md} +47 -48
- package/.claude/commands-en/{sync-rules.md → sync-skills.md} +29 -29
- package/.claude/commands-ja/build.md +2 -2
- package/.claude/commands-ja/design.md +1 -1
- package/.claude/commands-ja/implement.md +8 -8
- package/.claude/commands-ja/plan.md +3 -3
- package/.claude/commands-ja/project-inject.md +4 -4
- package/.claude/{commands/refine-rule.md → commands-ja/refine-skill.md} +25 -25
- package/.claude/{commands/sync-rules.md → commands-ja/sync-skills.md} +28 -28
- package/{docs/rules-en/coding-standards.md → .claude/skills-en/coding-standards/SKILL.md} +21 -108
- package/{docs/rules-en/documentation-criteria.md → .claude/skills-en/documentation-criteria/SKILL.md} +40 -42
- package/{docs/adr/template-en.md → .claude/skills-en/documentation-criteria/references/adr-template.md} +1 -1
- package/{docs/design/template-en.md → .claude/skills-en/documentation-criteria/references/design-template.md} +11 -31
- package/{docs/plans/template-en.md → .claude/skills-en/documentation-criteria/references/plan-template.md} +4 -4
- package/{docs/prd/template-en.md → .claude/skills-en/documentation-criteria/references/prd-template.md} +1 -1
- package/{docs/rules-en/frontend/technical-spec.md → .claude/skills-en/frontend/technical-spec/SKILL.md} +17 -13
- package/{docs/rules-en/frontend/typescript.md → .claude/skills-en/frontend/typescript-rules/SKILL.md} +17 -12
- package/{docs/rules-en/frontend/typescript-testing.md → .claude/skills-en/frontend/typescript-testing/SKILL.md} +11 -6
- package/{docs/rules-en/architecture/implementation-approach.md → .claude/skills-en/implementation-approach/SKILL.md} +7 -2
- package/{docs/rules-en/integration-e2e-testing.md → .claude/skills-en/integration-e2e-testing/SKILL.md} +15 -18
- package/{docs/rules-en/project-context.md → .claude/skills-en/project-context/SKILL.md} +7 -3
- package/.claude/skills-en/subagents-orchestration-guide/SKILL.md +224 -0
- package/.claude/skills-en/task-analyzer/SKILL.md +131 -0
- package/{docs/rules-en/rules-index.yaml → .claude/skills-en/task-analyzer/references/skills-index.yaml} +34 -20
- package/{docs/rules-en/technical-spec.md → .claude/skills-en/technical-spec/SKILL.md} +6 -6
- package/{docs/rules-en/typescript.md → .claude/skills-en/typescript-rules/SKILL.md} +15 -10
- package/{docs/rules-en/typescript-testing.md → .claude/skills-en/typescript-testing/SKILL.md} +10 -4
- package/{docs/rules-ja/coding-standards.md → .claude/skills-ja/coding-standards/SKILL.md} +12 -99
- package/{docs/rules-ja/documentation-criteria.md → .claude/skills-ja/documentation-criteria/SKILL.md} +18 -5
- package/.claude/skills-ja/documentation-criteria/references/adr-template.md +64 -0
- package/.claude/skills-ja/documentation-criteria/references/design-template.md +261 -0
- package/{docs/plans/template-ja.md → .claude/skills-ja/documentation-criteria/references/plan-template.md} +38 -38
- package/{docs/prd/template-ja.md → .claude/skills-ja/documentation-criteria/references/prd-template.md} +33 -33
- package/{docs/rules-ja/frontend/technical-spec.md → .claude/skills-ja/frontend/technical-spec/SKILL.md} +13 -9
- package/.claude/skills-ja/frontend/typescript-rules/SKILL.md +315 -0
- package/{docs/rules-ja/frontend/typescript-testing.md → .claude/skills-ja/frontend/typescript-testing/SKILL.md} +93 -5
- package/{docs/rules/architecture/implementation-approach.md → .claude/skills-ja/implementation-approach/SKILL.md} +10 -5
- package/{docs/rules-ja/integration-e2e-testing.md → .claude/skills-ja/integration-e2e-testing/SKILL.md} +5 -8
- package/{docs/rules-ja/project-context.md → .claude/skills-ja/project-context/SKILL.md} +7 -3
- package/.claude/skills-ja/subagents-orchestration-guide/SKILL.md +212 -0
- package/.claude/skills-ja/task-analyzer/SKILL.md +131 -0
- package/{docs/rules-ja/rules-index.yaml → .claude/skills-ja/task-analyzer/references/skills-index.yaml} +34 -19
- package/{docs/rules-ja/technical-spec.md → .claude/skills-ja/technical-spec/SKILL.md} +6 -6
- package/{docs/rules-ja/typescript.md → .claude/skills-ja/typescript-rules/SKILL.md} +16 -11
- package/{docs/rules-ja/typescript-testing.md → .claude/skills-ja/typescript-testing/SKILL.md} +11 -5
- package/CLAUDE.en.md +6 -6
- package/CLAUDE.ja.md +6 -6
- package/CLAUDE.md +19 -28
- package/README.ja.md +39 -10
- package/README.md +39 -10
- package/package.json +1 -1
- package/scripts/set-language.js +35 -53
- package/scripts/setup-project.js +4 -1
- package/.claude/agents/acceptance-test-generator.md +0 -316
- package/.claude/agents/code-reviewer.md +0 -193
- package/.claude/agents/document-reviewer.md +0 -182
- package/.claude/agents/prd-creator.md +0 -186
- package/.claude/agents/quality-fixer.md +0 -295
- package/.claude/agents/requirement-analyzer.md +0 -161
- package/.claude/agents/rule-advisor.md +0 -194
- package/.claude/agents/task-decomposer.md +0 -291
- package/.claude/agents/task-executor.md +0 -270
- package/.claude/agents/technical-designer.md +0 -343
- package/.claude/agents/work-planner.md +0 -181
- package/.claude/commands/build.md +0 -78
- package/.claude/commands/design.md +0 -27
- package/.claude/commands/implement.md +0 -79
- package/.claude/commands/plan.md +0 -43
- package/.claude/commands/project-inject.md +0 -76
- package/.claude/commands/review.md +0 -78
- package/.claude/commands/task.md +0 -13
- package/.claude/commands-ja/refine-rule.md +0 -206
- package/.claude/commands-ja/sync-rules.md +0 -116
- package/.claude/settings.local.json +0 -74
- package/docs/adr/template-ja.md +0 -64
- package/docs/design/template-ja.md +0 -285
- package/docs/guides/en/sub-agents.md +0 -343
- package/docs/guides/ja/sub-agents.md +0 -343
- package/docs/guides/sub-agents.md +0 -306
- package/docs/plans/20250123-integration-test-improvement.md +0 -993
- package/docs/rules/ai-development-guide.md +0 -260
- package/docs/rules/documentation-criteria.md +0 -180
- package/docs/rules/project-context.md +0 -38
- package/docs/rules/rules-index.yaml +0 -137
- package/docs/rules/technical-spec.md +0 -47
- package/docs/rules/typescript-testing.md +0 -188
- package/docs/rules/typescript.md +0 -166
- package/docs/rules-ja/architecture/implementation-approach.md +0 -136
- package/docs/rules-ja/frontend/typescript.md +0 -131
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
# AI開発者ガイド - 技術的判断基準とアンチパターン集
|
|
2
|
-
|
|
3
|
-
## 技術的アンチパターン(赤信号パターン)
|
|
4
|
-
|
|
5
|
-
以下のパターンを検出したら即座に停止し、設計を見直すこと:
|
|
6
|
-
|
|
7
|
-
### コード品質のアンチパターン
|
|
8
|
-
1. **同じようなコードを3回以上書いた** - Rule of Threeに違反
|
|
9
|
-
2. **単一ファイルに複数の責務が混在** - 単一責任原則(SRP)違反
|
|
10
|
-
3. **同じ内容を複数ファイルで定義** - DRY原則違反
|
|
11
|
-
4. **依存関係を確認せずに変更** - 予期しない影響の可能性
|
|
12
|
-
5. **コメントアウトでコード無効化** - バージョン管理を活用すべき
|
|
13
|
-
6. **エラーの握りつぶし** - 問題の隠蔽は技術的負債
|
|
14
|
-
7. **型アサーション(as)の多用** - 型安全性の放棄
|
|
15
|
-
|
|
16
|
-
### 設計のアンチパターン
|
|
17
|
-
- **「一旦動くように」という思考** - 技術的負債の蓄積
|
|
18
|
-
- **継ぎ足し実装** - 既存コードへの無計画な追加
|
|
19
|
-
- **不確実技術の楽観的実装** - 未知要素を「たぶん動く」前提で設計
|
|
20
|
-
- **対処療法的修正** - 根本原因を解決しない表面的な修正
|
|
21
|
-
- **無計画な大規模変更** - 段階的アプローチの欠如
|
|
22
|
-
|
|
23
|
-
## フォールバック処理に関する設計原則
|
|
24
|
-
|
|
25
|
-
### 基本原則:Fail-Fast
|
|
26
|
-
分散システムにおいて、フォールバック処理よりもプライマリコードの信頼性向上を優先する設計思想。
|
|
27
|
-
|
|
28
|
-
### フォールバック実装の判断基準
|
|
29
|
-
- **原則禁止**: エラー時の無条件フォールバックは実装しない
|
|
30
|
-
- **例外的許可**: Design Docで明示的に定義された場合のみ実装
|
|
31
|
-
- **レイヤー責務**:
|
|
32
|
-
- インフラ層: エラーを必ず上位に投げる(フォールバック判断なし)
|
|
33
|
-
- アプリケーション層: ビジネス要件に基づく判断を実装
|
|
34
|
-
|
|
35
|
-
### フォールバック過多の検出
|
|
36
|
-
- 同一機能で3つ目のcatch文を書く時点で設計見直しを必須とする
|
|
37
|
-
- フォールバックを実装する前にDesign Docでの定義を確認
|
|
38
|
-
- エラーは適切にログ出力し、失敗を明確にする
|
|
39
|
-
|
|
40
|
-
## Rule of Three - コード重複の判断基準
|
|
41
|
-
|
|
42
|
-
Martin Fowler「Refactoring」に基づく重複コードの扱い方:
|
|
43
|
-
|
|
44
|
-
| 重複回数 | 対応 | 理由 |
|
|
45
|
-
|---------|------|------|
|
|
46
|
-
| 1回目 | インライン実装 | 将来の変化が予測できない |
|
|
47
|
-
| 2回目 | 将来の統合を意識 | パターンが見え始める |
|
|
48
|
-
| 3回目 | 共通化実施 | パターンが確立された |
|
|
49
|
-
|
|
50
|
-
### 共通化の判断基準
|
|
51
|
-
|
|
52
|
-
**共通化すべきケース**
|
|
53
|
-
- ビジネスロジックの重複
|
|
54
|
-
- 複雑な処理アルゴリズム
|
|
55
|
-
- 一括変更が必要になる可能性が高い箇所
|
|
56
|
-
- バリデーションルール
|
|
57
|
-
|
|
58
|
-
**共通化を避けるべきケース**
|
|
59
|
-
- 偶然の一致(たまたま同じコード)
|
|
60
|
-
- 将来異なる方向に進化する可能性
|
|
61
|
-
- 共通化により可読性が著しく低下
|
|
62
|
-
- テストコード内の簡単なヘルパー
|
|
63
|
-
|
|
64
|
-
### 実装例
|
|
65
|
-
```typescript
|
|
66
|
-
// ❌ 1回目の重複で即共通化
|
|
67
|
-
function validateUserEmail(email: string) { /* ... */ }
|
|
68
|
-
function validateContactEmail(email: string) { /* ... */ }
|
|
69
|
-
|
|
70
|
-
// ✅ 3回目で共通化
|
|
71
|
-
function validateEmail(email: string, context: 'user' | 'contact' | 'admin') { /* ... */ }
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## よくある失敗パターンと回避方法
|
|
75
|
-
|
|
76
|
-
### パターン1: エラー修正の連鎖
|
|
77
|
-
**症状**: エラーを修正すると新しいエラーが発生
|
|
78
|
-
**原因**: 根本原因を理解せずに表面的な修正
|
|
79
|
-
**回避方法**: 5 Whysで根本原因を特定してから修正
|
|
80
|
-
|
|
81
|
-
### パターン2: 型安全性の放棄
|
|
82
|
-
**症状**: any型やasの多用
|
|
83
|
-
**原因**: 型エラーを回避したい衝動
|
|
84
|
-
**回避方法**: unknown型と型ガードで安全に処理
|
|
85
|
-
|
|
86
|
-
### パターン3: テスト不足での実装
|
|
87
|
-
**症状**: 実装後にバグ多発
|
|
88
|
-
**原因**: Red-Green-Refactorプロセスの無視
|
|
89
|
-
**回避方法**: 必ず失敗するテストから開始
|
|
90
|
-
|
|
91
|
-
### パターン4: 技術的不確実性の無視
|
|
92
|
-
**症状**: 新技術導入時の想定外エラー多発
|
|
93
|
-
**原因**: 事前調査なしで「公式ドキュメント通りなら動くはず」
|
|
94
|
-
**回避方法**:
|
|
95
|
-
- タスクファイル冒頭に確実性評価を記載
|
|
96
|
-
```
|
|
97
|
-
確実性: low(理由: MCP接続の実例がない)
|
|
98
|
-
探索的実装: true
|
|
99
|
-
フォールバック: 従来APIを使用
|
|
100
|
-
```
|
|
101
|
-
- 確実性lowの場合、最初に最小限の動作確認コードを作成
|
|
102
|
-
- 動作確認できたら本実装、できなければフォールバック実行
|
|
103
|
-
|
|
104
|
-
### パターン5: 既存コード調査不足
|
|
105
|
-
**症状**: 重複実装、アーキテクチャ不整合、結合時の障害
|
|
106
|
-
**原因**: 実装前の既存コード理解不足
|
|
107
|
-
**回避方法**:
|
|
108
|
-
- 実装前に類似機能の存在を必ず検索(同じドメイン、責務、設定パターンをキーワードに)
|
|
109
|
-
- 類似機能を発見 → その実装を使用する(新規実装は行わない)
|
|
110
|
-
- 類似機能が技術的負債 → ADRで改善提案を作成してから実装
|
|
111
|
-
- 類似機能が存在しない → 既存の設計思想に沿って新規実装
|
|
112
|
-
- すべての判断と根拠をDesign Docの「既存コードベース分析」セクションに記録
|
|
113
|
-
|
|
114
|
-
## デバッグ手法
|
|
115
|
-
|
|
116
|
-
### 1. エラー分析手順
|
|
117
|
-
1. エラーメッセージ(最初の行)を正確に読む
|
|
118
|
-
2. スタックトレースの最初と最後に注目
|
|
119
|
-
3. 自分のコードが現れる最初の行を特定
|
|
120
|
-
|
|
121
|
-
### 2. 5 Whys - 根本原因分析
|
|
122
|
-
```
|
|
123
|
-
症状: TypeScriptのビルドエラー
|
|
124
|
-
Why1: 型定義が一致しない → Why2: インターフェースが更新された
|
|
125
|
-
Why3: 依存関係の変更 → Why4: パッケージ更新の影響
|
|
126
|
-
Why5: 破壊的変更を含むメジャーバージョンアップ
|
|
127
|
-
根本原因: package.jsonでのバージョン指定が不適切
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### 3. 最小再現コード
|
|
131
|
-
問題を切り分けるため、最小限のコードで再現を試みる:
|
|
132
|
-
- 関連のない部分を削除
|
|
133
|
-
- モックで外部依存を置き換え
|
|
134
|
-
- 問題が再現する最小構成を作成
|
|
135
|
-
|
|
136
|
-
### 4. デバッグログ出力
|
|
137
|
-
```typescript
|
|
138
|
-
console.log('DEBUG:', {
|
|
139
|
-
context: 'user-creation',
|
|
140
|
-
input: { email, name },
|
|
141
|
-
state: currentState,
|
|
142
|
-
timestamp: new Date().toISOString()
|
|
143
|
-
})
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
## 品質チェックコマンドリファレンス
|
|
147
|
-
|
|
148
|
-
### Phase 1-3: 基本チェック
|
|
149
|
-
```bash
|
|
150
|
-
# Biome総合チェック(lint + format)
|
|
151
|
-
npm run check
|
|
152
|
-
|
|
153
|
-
# 未使用エクスポートの検出
|
|
154
|
-
npm run check:unused
|
|
155
|
-
|
|
156
|
-
# TypeScriptビルド
|
|
157
|
-
npm run build
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### Phase 4-6: テストと最終確認
|
|
161
|
-
```bash
|
|
162
|
-
# テスト実行
|
|
163
|
-
npm test
|
|
164
|
-
|
|
165
|
-
# カバレッジ測定(キャッシュクリア)
|
|
166
|
-
npm run test:coverage:fresh
|
|
167
|
-
|
|
168
|
-
# 全体統合チェック
|
|
169
|
-
npm run check:all
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### 補助コマンド
|
|
173
|
-
```bash
|
|
174
|
-
# カバレッジレポート確認
|
|
175
|
-
open coverage/index.html
|
|
176
|
-
|
|
177
|
-
# Vitestプロセスのクリーンアップ(テスト後必須)
|
|
178
|
-
npm run cleanup:processes
|
|
179
|
-
|
|
180
|
-
# 安全なテスト実行(自動クリーンアップ付き)
|
|
181
|
-
npm run test:safe
|
|
182
|
-
|
|
183
|
-
# 自動修正
|
|
184
|
-
npm run format # フォーマット修正
|
|
185
|
-
npm run lint:fix # Lint修正
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### トラブルシューティング
|
|
189
|
-
- **ポート使用中エラー**: `npm run cleanup:processes`
|
|
190
|
-
- **キャッシュ問題**: `npm run test:coverage:fresh`
|
|
191
|
-
- **依存関係エラー**: `npm ci`で再インストール
|
|
192
|
-
|
|
193
|
-
## 技術的判断が必要な場面
|
|
194
|
-
|
|
195
|
-
### 抽象化のタイミング
|
|
196
|
-
- 具体的な実装を3回書いてからパターンを抽出
|
|
197
|
-
- YAGNIを意識し、現在必要な機能のみ実装
|
|
198
|
-
- 将来の拡張性より現在のシンプルさを優先
|
|
199
|
-
|
|
200
|
-
### パフォーマンス vs 可読性
|
|
201
|
-
- 明確なボトルネックがない限り可読性を優先
|
|
202
|
-
- 計測してから最適化(推測するな、計測せよ)
|
|
203
|
-
- 最適化する場合はコメントで理由を明記
|
|
204
|
-
|
|
205
|
-
### 型定義の粒度
|
|
206
|
-
- 過度に細かい型は保守性を低下させる
|
|
207
|
-
- ドメインを適切に表現する型を設計
|
|
208
|
-
- ユーティリティ型を活用して重複を削減
|
|
209
|
-
|
|
210
|
-
## 継続的改善のマインドセット
|
|
211
|
-
|
|
212
|
-
- **謙虚**: 完璧なコードは存在しない、フィードバック歓迎
|
|
213
|
-
- **勇気**: 必要なリファクタリングは大胆に実行
|
|
214
|
-
- **透明性**: 技術的な判断理由を明確に記録
|
|
215
|
-
|
|
216
|
-
## 実装作業の完全性担保
|
|
217
|
-
|
|
218
|
-
### 影響範囲調査の必須手順
|
|
219
|
-
|
|
220
|
-
**完了定義**: 以下3段階すべての完了
|
|
221
|
-
|
|
222
|
-
#### 1. 検索(Discovery)
|
|
223
|
-
```bash
|
|
224
|
-
Grep -n "TargetClass\|TargetMethod" -o content
|
|
225
|
-
Grep -n "DependencyClass" -o content
|
|
226
|
-
Grep -n "targetData\|SetData\|UpdateData" -o content
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
#### 2. 読解(Understanding)
|
|
230
|
-
**必須**: 発見した全ファイルを読み込み、作業に必要な部分をコンテキストに含める:
|
|
231
|
-
- 呼び出し元の目的と文脈
|
|
232
|
-
- 依存関係の方向
|
|
233
|
-
- データフロー: 生成→変更→参照
|
|
234
|
-
|
|
235
|
-
#### 3. 特定(Identification)
|
|
236
|
-
影響範囲の構造化報告(必須):
|
|
237
|
-
```
|
|
238
|
-
## 影響範囲分析
|
|
239
|
-
### 直接影響: ClassA、ClassB(理由明記)
|
|
240
|
-
### 間接影響: SystemX、PrefabY(連携経路明記)
|
|
241
|
-
### 処理フロー: 入力→処理1→処理2→出力
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
**重要**: 検索のみで完了とせず、3段階すべてを実行すること
|
|
245
|
-
|
|
246
|
-
### 未使用コード削除ルール
|
|
247
|
-
|
|
248
|
-
未使用コード検出時 → 使用予定?
|
|
249
|
-
- Yes → 即実装(保留禁止)
|
|
250
|
-
- No → 即削除(Git履歴に残る)
|
|
251
|
-
|
|
252
|
-
対象: コード・ドキュメント・設定ファイル
|
|
253
|
-
|
|
254
|
-
### 既存コード削除判断フロー
|
|
255
|
-
|
|
256
|
-
```
|
|
257
|
-
使用中? No → 即削除(Git履歴に残る)
|
|
258
|
-
Yes → 動作? No → 削除+再実装
|
|
259
|
-
Yes → 修正
|
|
260
|
-
```
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
# ドキュメント作成基準
|
|
2
|
-
|
|
3
|
-
## 作成判定マトリクス
|
|
4
|
-
|
|
5
|
-
| 条件 | 必要ドキュメント | 作成順序 |
|
|
6
|
-
|-----|--------------|---------|
|
|
7
|
-
| 新機能追加 | PRD → [ADR] → Design Doc → 作業計画書 | PRD承認後 |
|
|
8
|
-
| ADR条件該当(下記参照) | ADR → Design Doc → 作業計画書 | 即座に開始 |
|
|
9
|
-
| 6ファイル以上 | ADR → Design Doc → 作業計画書(必須) | 即座に開始 |
|
|
10
|
-
| 3-5ファイル | Design Doc → 作業計画書(推奨) | 即座に開始 |
|
|
11
|
-
| 1-2ファイル | なし | 直接実装 |
|
|
12
|
-
|
|
13
|
-
## ADR作成条件(いずれか該当で必須)
|
|
14
|
-
|
|
15
|
-
### 1. 型システム変更
|
|
16
|
-
- **3階層以上のネスト型追加**: `type A = { b: { c: { d: T } } }`
|
|
17
|
-
- 判断理由: 深いネストは複雑性が高く、影響範囲が広い
|
|
18
|
-
- **3箇所以上で使用される型の変更・削除**
|
|
19
|
-
- 判断理由: 複数箇所への影響は慎重な判断が必要
|
|
20
|
-
- **型の責務変更**(例: DTO→Entity)
|
|
21
|
-
- 判断理由: 概念モデルの変更は設計思想に関わる
|
|
22
|
-
|
|
23
|
-
### 2. データフロー変更
|
|
24
|
-
- **保存場所変更**(DB→ファイル、メモリ→キャッシュ)
|
|
25
|
-
- **3ステップ以上の処理順序変更**
|
|
26
|
-
- 例: 「入力→検証→保存」から「入力→保存→非同期検証」
|
|
27
|
-
- **データ受け渡し方法変更**(props→Context、直接参照→イベント)
|
|
28
|
-
|
|
29
|
-
### 3. アーキテクチャ変更
|
|
30
|
-
- レイヤー追加・責務変更・コンポーネント再配置
|
|
31
|
-
|
|
32
|
-
### 4. 外部依存変更
|
|
33
|
-
- ライブラリ・フレームワーク・外部API導入・置換
|
|
34
|
-
|
|
35
|
-
### 5. 複雑な実装ロジック(規模に関わらず)
|
|
36
|
-
- 3つ以上の状態を管理
|
|
37
|
-
- 5つ以上の非同期処理の連携
|
|
38
|
-
|
|
39
|
-
## 各ドキュメントの詳細定義
|
|
40
|
-
|
|
41
|
-
### PRD(Product Requirements Document)
|
|
42
|
-
|
|
43
|
-
**目的**: ビジネス要件とユーザー価値を定義
|
|
44
|
-
|
|
45
|
-
**含むもの**:
|
|
46
|
-
- ビジネス要件とユーザー価値
|
|
47
|
-
- 成功指標とKPI(測定可能な形式)
|
|
48
|
-
- ユーザーストーリーとユースケース
|
|
49
|
-
- MoSCoW法による優先順位(Must/Should/Could/Won't)
|
|
50
|
-
- MVPとFutureフェーズの分離
|
|
51
|
-
- ユーザージャーニー図(必須)
|
|
52
|
-
- スコープ境界図(必須)
|
|
53
|
-
|
|
54
|
-
**含まないもの**:
|
|
55
|
-
- 技術実装詳細(→Design Doc)
|
|
56
|
-
- 技術選定理由(→ADR)
|
|
57
|
-
- **実装フェーズ**(→作業計画書)
|
|
58
|
-
- **タスク分解**(→作業計画書)
|
|
59
|
-
|
|
60
|
-
### ADR(Architecture Decision Record)
|
|
61
|
-
|
|
62
|
-
**目的**: 技術的決定の理由と背景を記録
|
|
63
|
-
|
|
64
|
-
**含むもの**:
|
|
65
|
-
- 決定事項(何を選択したか)
|
|
66
|
-
- 根拠(なぜその選択をしたか)
|
|
67
|
-
- 選択肢の比較(最低3案)とトレードオフ
|
|
68
|
-
- アーキテクチャへの影響
|
|
69
|
-
- 実装への原則的な指針(例:「依存性注入を使用」)
|
|
70
|
-
|
|
71
|
-
**含まないもの**:
|
|
72
|
-
- 実装スケジュール、期間(→作業計画書)
|
|
73
|
-
- 実装手順の詳細(→Design Doc)
|
|
74
|
-
- 具体的なコード例(→Design Doc)
|
|
75
|
-
- 担当者の割り当て(→作業計画書)
|
|
76
|
-
|
|
77
|
-
### Design Document
|
|
78
|
-
|
|
79
|
-
**目的**: 技術的実装方法を詳細定義
|
|
80
|
-
|
|
81
|
-
**含むもの**:
|
|
82
|
-
- **既存コードベース分析**(必須)
|
|
83
|
-
- 実装パスマッピング(既存と新規の両方を記載)
|
|
84
|
-
- 統合点の明確化(新規実装でも既存との接続点を記載)
|
|
85
|
-
- 技術的実装アプローチ(垂直/水平/ハイブリッド)
|
|
86
|
-
- **技術的依存関係と実装制約**(実装の必要順序)
|
|
87
|
-
- インターフェース定義と型定義
|
|
88
|
-
- データフローとコンポーネント設計
|
|
89
|
-
- **統合ポイントでのE2E確認手順**
|
|
90
|
-
- **受入条件(測定可能な形式)**
|
|
91
|
-
- 変更影響マップ(直接影響/間接影響/波及なしを明記)
|
|
92
|
-
- 統合点の完全な列挙
|
|
93
|
-
- データ契約の明確化
|
|
94
|
-
- **合意事項チェックリスト**(関係者との合意内容)
|
|
95
|
-
- **前提となるADR**(共通ADR含む)
|
|
96
|
-
|
|
97
|
-
**必須構造要素**:
|
|
98
|
-
```yaml
|
|
99
|
-
変更影響マップ:
|
|
100
|
-
変更対象: [コンポーネント/機能]
|
|
101
|
-
直接影響: [ファイル/関数]
|
|
102
|
-
間接影響: [データ形式/処理時間]
|
|
103
|
-
波及なし: [影響を受けない機能]
|
|
104
|
-
|
|
105
|
-
インターフェース変更マトリクス:
|
|
106
|
-
既存: [メソッド名]
|
|
107
|
-
新規: [メソッド名]
|
|
108
|
-
変換必要性: [あり/なし]
|
|
109
|
-
互換性確保: [方法]
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
**含まないもの**:
|
|
113
|
-
- なぜその技術を選んだか(→ADR参照)
|
|
114
|
-
- いつ実装するか、期間(→作業計画書)
|
|
115
|
-
- 誰が実装するか(→作業計画書)
|
|
116
|
-
|
|
117
|
-
### 作業計画書
|
|
118
|
-
|
|
119
|
-
**目的**: 実装タスクの管理と進捗追跡
|
|
120
|
-
|
|
121
|
-
**含むもの**:
|
|
122
|
-
- **フェーズ構成**(Design Docの技術的依存関係を基に作成)
|
|
123
|
-
- タスク分解と依存関係(最大2階層まで)
|
|
124
|
-
- スケジュールと期間見積もり
|
|
125
|
-
- **Design DocのE2E確認手順を各フェーズに配置**
|
|
126
|
-
- **最終フェーズに品質保証を含む**(必須)
|
|
127
|
-
- 進捗記録(チェックボックス形式)
|
|
128
|
-
|
|
129
|
-
**含まないもの**:
|
|
130
|
-
- 技術的な根拠(→ADR)
|
|
131
|
-
- 設計の詳細(→Design Doc)
|
|
132
|
-
- 技術的依存関係の決定(→Design Doc)
|
|
133
|
-
|
|
134
|
-
**タスク完了定義の3要素**:
|
|
135
|
-
1. **実装完了**: コードが動作する
|
|
136
|
-
2. **品質完了**: テスト・型チェック・リントがパス
|
|
137
|
-
3. **統合完了**: 他コンポーネントとの連携確認
|
|
138
|
-
|
|
139
|
-
## 作成プロセス
|
|
140
|
-
|
|
141
|
-
1. **問題分析**: 変更規模判定、ADR条件確認
|
|
142
|
-
2. **ADR選択肢検討**(ADR時のみ): 3案以上比較、トレードオフ明記
|
|
143
|
-
3. **作成**: テンプレート使用、測定可能な条件記載
|
|
144
|
-
4. **承認**: レビュー後「Accepted」で実装可
|
|
145
|
-
|
|
146
|
-
## 保存場所
|
|
147
|
-
|
|
148
|
-
| ドキュメント | パス | 命名規則 | テンプレート |
|
|
149
|
-
|------------|-----|---------|------------|
|
|
150
|
-
| PRD | `docs/prd/` | `[機能名]-prd.md` | `template-ja.md` |
|
|
151
|
-
| ADR | `docs/adr/` | `ADR-[4桁]-[タイトル].md` | `template-ja.md` |
|
|
152
|
-
| Design Doc | `docs/design/` | `[機能名]-design.md` | `template-ja.md` |
|
|
153
|
-
| 作業計画書 | `docs/plans/` | `YYYYMMDD-{type}-{description}.md` | `template-ja.md` |
|
|
154
|
-
|
|
155
|
-
※作業計画書は`.gitignore`で除外
|
|
156
|
-
|
|
157
|
-
## ADRステータス
|
|
158
|
-
`Proposed` → `Accepted` → `Deprecated`/`Superseded`/`Rejected`
|
|
159
|
-
|
|
160
|
-
## AI自動化ルール
|
|
161
|
-
- 5ファイル以上: ADR作成提案
|
|
162
|
-
- 型・データフロー変更検出: ADR必須化
|
|
163
|
-
- 既存ADR確認してから実装
|
|
164
|
-
|
|
165
|
-
## 図表作成要件
|
|
166
|
-
|
|
167
|
-
各ドキュメントで必須の図表(mermaid記法使用):
|
|
168
|
-
|
|
169
|
-
| ドキュメント | 必須図表 | 目的 |
|
|
170
|
-
|------------|---------|-----|
|
|
171
|
-
| PRD | ユーザージャーニー図、スコープ境界図 | ユーザー体験と範囲の明確化 |
|
|
172
|
-
| ADR | 選択肢比較図(必要時) | トレードオフの視覚化 |
|
|
173
|
-
| Design Doc | アーキテクチャ図、データフロー図 | 技術構造の理解 |
|
|
174
|
-
| 作業計画書 | フェーズ構成図、タスク依存関係図 | 実装順序の明確化 |
|
|
175
|
-
|
|
176
|
-
## 共通ADRとの関係性
|
|
177
|
-
1. **作成時**: 共通技術領域(ログ、エラーハンドリング、非同期処理等)を特定し、既存共通ADRを参照
|
|
178
|
-
2. **不足時**: 必要な共通ADRが存在しない場合は作成を検討
|
|
179
|
-
3. **Design Doc**: 「前提となるADR」セクションで共通ADRを明記
|
|
180
|
-
4. **準拠確認**: 設計が共通ADRの決定事項と整合しているかを検証
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# プロジェクトコンテキスト
|
|
2
|
-
|
|
3
|
-
## 基本設定
|
|
4
|
-
|
|
5
|
-
### プロジェクトの性質
|
|
6
|
-
- **プロジェクト形態**: Claude Code専用TypeScriptプロジェクトテンプレート
|
|
7
|
-
- **利用範囲**: プロジェクトの要件に応じて設定可能
|
|
8
|
-
- **実装方針**: LLM主導実装、品質重視、YAGNI原則徹底
|
|
9
|
-
|
|
10
|
-
### 技術スタック
|
|
11
|
-
- **基盤技術**: TypeScript、Node.js
|
|
12
|
-
- **テストフレームワーク**: Vitest
|
|
13
|
-
- **品質管理**: Biome、TypeScript strict mode
|
|
14
|
-
|
|
15
|
-
## 実装原則
|
|
16
|
-
|
|
17
|
-
### 実装方針の特徴
|
|
18
|
-
- **LLM主導実装**: Claude Codeが主要な実装者として機能
|
|
19
|
-
- **品質重視**: 速度より品質を優先する文化
|
|
20
|
-
- **YAGNI原則**: 必要になるまで実装しない
|
|
21
|
-
- **体系的な設計**: ADR/Design Doc/作業計画書による設計プロセス
|
|
22
|
-
|
|
23
|
-
## カスタマイズガイド
|
|
24
|
-
|
|
25
|
-
新しいプロジェクトでこのテンプレートを使用する場合:
|
|
26
|
-
|
|
27
|
-
1. **プロジェクト固有情報の追加**
|
|
28
|
-
- ターゲットユーザー特性
|
|
29
|
-
- ビジネス要件と制約
|
|
30
|
-
- 技術的制約事項
|
|
31
|
-
|
|
32
|
-
2. **アーキテクチャの選択**
|
|
33
|
-
- `docs/rules/architecture/` から適切なパターンを選択
|
|
34
|
-
- `docs/rules/architecture/` にプロジェクト固有の設計を配置
|
|
35
|
-
|
|
36
|
-
3. **環境設定**
|
|
37
|
-
- プロジェクトに適した環境変数管理方法の実装
|
|
38
|
-
- プロジェクト固有の設定ファイル追加
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
# 各ルールファイルのメタデータ
|
|
2
|
-
# 各ルールの概要、タグ、典型的な使用場面、サイズを管理
|
|
3
|
-
|
|
4
|
-
rules:
|
|
5
|
-
typescript:
|
|
6
|
-
file: "typescript.md"
|
|
7
|
-
tags: [implementation, type-safety, async, refactoring, coding-style, functional-programming, dependency-injection, branded-types]
|
|
8
|
-
typical-use: "TypeScriptコードの作成・修正・リファクタリング、モダンな型機能活用"
|
|
9
|
-
size: medium
|
|
10
|
-
key-references:
|
|
11
|
-
- "YAGNI原則 - Kent Beck"
|
|
12
|
-
- "Clean Code - Robert C. Martin"
|
|
13
|
-
- "DRY原則 - The Pragmatic Programmer"
|
|
14
|
-
- "Refactoring - Martin Fowler"
|
|
15
|
-
- "TypeScript 4.9 satisfies演算子 - Microsoft"
|
|
16
|
-
- "Branded Types - TypeScript Community"
|
|
17
|
-
- "Effect-TS / fp-ts - 関数型プログラミング"
|
|
18
|
-
- "Dependency Injection - Martin Fowler"
|
|
19
|
-
- "Avoiding fallback in distributed systems - AWS Builders' Library"
|
|
20
|
-
sections:
|
|
21
|
-
- "基本原則"
|
|
22
|
-
- "コメント記述ルール"
|
|
23
|
-
- "型安全性"
|
|
24
|
-
- "コーディング規約"
|
|
25
|
-
- "エラーハンドリング"
|
|
26
|
-
- "リファクタリング手法"
|
|
27
|
-
- "パフォーマンス最適化"
|
|
28
|
-
|
|
29
|
-
typescript-testing:
|
|
30
|
-
file: "typescript-testing.md"
|
|
31
|
-
tags: [quality, testing, tdd, coverage, vitest, implementation, debugging, refactoring]
|
|
32
|
-
typical-use: "テスト作成、品質チェック、コード修正・バグ修正・リファクタリング・新機能実装時の開発ステップ"
|
|
33
|
-
size: medium
|
|
34
|
-
key-references:
|
|
35
|
-
- "Test-Driven Development - Kent Beck"
|
|
36
|
-
- "Rule of Three - Martin Fowler"
|
|
37
|
-
- "Red-Green-Refactor - Kent Beck"
|
|
38
|
-
- "AAAパターン - Arrange-Act-Assert"
|
|
39
|
-
sections:
|
|
40
|
-
- "テストフレームワーク"
|
|
41
|
-
- "テストの基本方針"
|
|
42
|
-
- "Red-Green-Refactorプロセス(テストファースト開発)"
|
|
43
|
-
- "テストの設計原則"
|
|
44
|
-
- "テストヘルパーの活用ルール"
|
|
45
|
-
- "テストの実装規約"
|
|
46
|
-
- "テストの粒度"
|
|
47
|
-
- "モックの型安全性"
|
|
48
|
-
- "継続性テストの範囲"
|
|
49
|
-
- "Vitestの基本例"
|
|
50
|
-
|
|
51
|
-
ai-development-guide:
|
|
52
|
-
file: "ai-development-guide.md"
|
|
53
|
-
tags: [anti-patterns, technical-judgment, debugging, quality-commands, rule-of-three, implementation, type-safety, refactoring, code-reading, best-practices, impact-analysis, unused-code, code-deletion]
|
|
54
|
-
typical-use: "技術的判断基準、アンチパターン検出、デバッグ手法、品質チェックコマンド、実装時のベストプラクティス、影響範囲調査、未使用コード削除"
|
|
55
|
-
size: medium
|
|
56
|
-
key-references:
|
|
57
|
-
- "Rule of Three - Martin Fowler"
|
|
58
|
-
- "5 Whys - トヨタ生産方式"
|
|
59
|
-
- "DRY原則 - The Pragmatic Programmer"
|
|
60
|
-
- "単一責任原則(SRP) - Clean Code"
|
|
61
|
-
- "YAGNI原則 - Extreme Programming"
|
|
62
|
-
- "Avoiding fallback in distributed systems - AWS Builders' Library"
|
|
63
|
-
sections:
|
|
64
|
-
- "技術的アンチパターン(赤信号パターン)"
|
|
65
|
-
- "フォールバック処理に関する設計原則"
|
|
66
|
-
- "Rule of Three - コード重複の判断基準"
|
|
67
|
-
- "よくある失敗パターンと回避方法"
|
|
68
|
-
- "デバッグ手法"
|
|
69
|
-
- "品質チェックコマンドリファレンス"
|
|
70
|
-
- "技術的判断が必要な場面"
|
|
71
|
-
- "継続的改善のマインドセット"
|
|
72
|
-
- "実装作業の完全性担保"
|
|
73
|
-
|
|
74
|
-
technical-spec:
|
|
75
|
-
file: "technical-spec.md"
|
|
76
|
-
tags: [architecture, design, documentation, environment, data-flow, implementation]
|
|
77
|
-
typical-use: "技術設計、環境設定、ドキュメント作成プロセス、実装方針決定"
|
|
78
|
-
size: medium
|
|
79
|
-
key-references:
|
|
80
|
-
- "ADRフォーマット - Michael Nygard"
|
|
81
|
-
- "単一データソース原則 - Single Source of Truth"
|
|
82
|
-
sections:
|
|
83
|
-
- "技術スタックの基本方針"
|
|
84
|
-
- "環境変数管理とセキュリティ"
|
|
85
|
-
- "アーキテクチャ設計"
|
|
86
|
-
- "パターン適用の一貫性"
|
|
87
|
-
- "データフロー統一原則"
|
|
88
|
-
- "ビルドとテスト"
|
|
89
|
-
|
|
90
|
-
project-context:
|
|
91
|
-
file: "project-context.md"
|
|
92
|
-
tags: [context, project-specific, implementation]
|
|
93
|
-
typical-use: "プロジェクト固有情報、実装原則の理解"
|
|
94
|
-
size: small
|
|
95
|
-
key-references:
|
|
96
|
-
- "プロジェクト固有(経験則)"
|
|
97
|
-
sections:
|
|
98
|
-
- "基本設定"
|
|
99
|
-
- "実装原則"
|
|
100
|
-
- "カスタマイズガイド"
|
|
101
|
-
|
|
102
|
-
documentation-criteria:
|
|
103
|
-
file: "documentation-criteria.md"
|
|
104
|
-
tags: [documentation, decision-making, adr, prd, design-doc, planning, process]
|
|
105
|
-
typical-use: "実装開始時の規模判定、ドキュメント作成判定、ADR/PRD/Design Doc/作業計画書の作成基準"
|
|
106
|
-
size: medium
|
|
107
|
-
key-references:
|
|
108
|
-
- "ADR手法 - Michael Nygard"
|
|
109
|
-
- "Design Doc文化 - Google Engineering Practices"
|
|
110
|
-
- "Single Source of Truth"
|
|
111
|
-
sections:
|
|
112
|
-
- "作成判定マトリクス"
|
|
113
|
-
- "ADR作成条件(いずれか該当で必須)"
|
|
114
|
-
- "各ドキュメントの詳細定義"
|
|
115
|
-
- "作成プロセス"
|
|
116
|
-
- "保存場所"
|
|
117
|
-
- "ADRステータス"
|
|
118
|
-
- "AI自動化ルール"
|
|
119
|
-
- "図表作成要件"
|
|
120
|
-
- "共通ADRとの関係性"
|
|
121
|
-
|
|
122
|
-
implementation-approach:
|
|
123
|
-
file: "architecture/implementation-approach.md"
|
|
124
|
-
tags: [architecture, implementation, task-decomposition, strategy-patterns, strangler-pattern, facade-pattern, design, planning, confirmation-levels]
|
|
125
|
-
typical-use: "実装戦略の選択、タスク分解、設計判断、大規模変更の計画"
|
|
126
|
-
size: medium
|
|
127
|
-
key-references:
|
|
128
|
-
- "Strangler Fig Pattern - Martin Fowler"
|
|
129
|
-
- "Feature Slicing - Martin Fowler"
|
|
130
|
-
- "Walking Skeleton - Alistair Cockburn"
|
|
131
|
-
- "Facade Pattern - Gang of Four"
|
|
132
|
-
sections:
|
|
133
|
-
- "メタ認知的戦略選択プロセス"
|
|
134
|
-
- "確認レベル定義"
|
|
135
|
-
- "統合ポイントの定義"
|
|
136
|
-
- "アンチパターン"
|
|
137
|
-
- "メタ認知的実行のための指針"
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# 技術設計ルール
|
|
2
|
-
|
|
3
|
-
## 技術スタックの基本方針
|
|
4
|
-
TypeScriptをベースとしたアプリケーション実装。アーキテクチャパターンはプロジェクトの要件と規模に応じて選択すること。
|
|
5
|
-
|
|
6
|
-
## 環境変数管理とセキュリティ
|
|
7
|
-
|
|
8
|
-
### 環境変数管理
|
|
9
|
-
- 環境変数は一元管理し、型安全性を確保する仕組みを構築すること
|
|
10
|
-
- `process.env` の直接参照は避け、設定管理層を通じて取得すること
|
|
11
|
-
- デフォルト値の設定や必須チェックを適切に実装すること
|
|
12
|
-
|
|
13
|
-
### セキュリティ
|
|
14
|
-
- `.env`ファイルはGitに含めない
|
|
15
|
-
- APIキーやシークレットは必ず環境変数として管理
|
|
16
|
-
- 機密情報のログ出力は禁止
|
|
17
|
-
- エラーメッセージに機密情報を含めない
|
|
18
|
-
|
|
19
|
-
## アーキテクチャ設計
|
|
20
|
-
|
|
21
|
-
### アーキテクチャ設計の原則
|
|
22
|
-
プロジェクトごとに適切なアーキテクチャを選択し、明確に定義すること:
|
|
23
|
-
|
|
24
|
-
- **明確な定義**: プロジェクトのアーキテクチャは`docs/rules/architecture/`配下に専用ファイルで定義
|
|
25
|
-
- **責務の分離**: 各層やモジュールの責務を明確に定義し、境界を守ること
|
|
26
|
-
|
|
27
|
-
## パターン適用の一貫性
|
|
28
|
-
|
|
29
|
-
選択したアーキテクチャパターンに厳密に従う。プロジェクト固有詳細は`docs/rules/architecture/`参照。
|
|
30
|
-
|
|
31
|
-
## データフロー統一原則
|
|
32
|
-
|
|
33
|
-
#### 基本原則
|
|
34
|
-
1. **単一データソース**: 同じ情報は1箇所にのみ保存する
|
|
35
|
-
2. **構造化データ優先**: JSON文字列ではなくパース済みオブジェクトを使用
|
|
36
|
-
3. **明確な責務分離**: 各層の責務を明確に定義
|
|
37
|
-
|
|
38
|
-
#### データフローのベストプラクティス
|
|
39
|
-
- **入力時点での検証**: データは入力層で検証し、型安全な形で内部に渡す
|
|
40
|
-
- **変換の一元化**: データ変換ロジックは専用のユーティリティに集約
|
|
41
|
-
- **ログの構造化**: データフローの各段階で構造化ログを出力
|
|
42
|
-
|
|
43
|
-
## ビルドとテスト
|
|
44
|
-
|
|
45
|
-
プロジェクトごとにビルドコマンドとテスト実行方法を定義。
|
|
46
|
-
|
|
47
|
-
品質チェックは実装完了時に必須。
|