@k2works/claude-code-booster 5.1.0 → 6.0.0

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.
@@ -0,0 +1,1167 @@
1
+ ---
2
+ type: Reference
3
+ title: "ユースケース作成ガイド(AI-DLC 版)"
4
+ description: "AI-DLC(AI-Driven Development Lifecycle)の原則に基づくユースケースとユーザーストーリーの作成手法。Mob Elaboration で AI が Intent からユースケース・ストーリー・受入条件・Unit を提案し、人が検証する流れ、人と AI の契約としての記述基準、AI 生成物の検証観点、ブラウンフィールドでのリバースエンジニアリング、テストケースへの変換、プロンプトパターン、本プロジェクトの分析スキルへの適用方法をまとめる。"
5
+ tags: [reference]
6
+ status: stable
7
+ generated: { by: claude-code/claude-fable-5-1, at: 2026-09-12T05:10:00Z }
8
+ sources:
9
+ - id: usecase-guide
10
+ resource: ./ユースケース作成ガイド.md
11
+ title: ユースケース作成ガイド(XP 版)
12
+ author: human:kakimomokuri
13
+ - id: aidlc-guide
14
+ resource: ./AI-DLC導入ガイド.md
15
+ title: AI-DLC 導入ガイド
16
+ author: claude-code/claude-fable-5-1
17
+ - id: aidlc-paper
18
+ resource: https://prod.d13rzhkk8cj2z0.amplifyapp.com/aidlc.pdf
19
+ title: AI-Driven Development Lifecycle (AI-DLC) Method Definition
20
+ author: human:raja-sp
21
+ - id: aidlc-workflows
22
+ resource: https://github.com/awslabs/aidlc-workflows
23
+ title: awslabs/aidlc-workflows(User Guide)
24
+ author: org:awslabs
25
+ verified:
26
+ - { by: human:kakimomokuri, at: 2026-09-12T06:25:42Z }
27
+ ---
28
+
29
+ # ユースケース作成ガイド(AI-DLC 版)
30
+
31
+ ## はじめに
32
+
33
+ このガイドは、[ユースケース作成ガイド](ユースケース作成ガイド.md)(XP 版)を AI-DLC の原則で読み替えたものです。AI-DLC の背景と用語は [AI-DLC 導入ガイド](AI-DLC導入ガイド.md) を、計画への接続は [リリース・イテレーション計画ガイド(AI-DLC 版)](リリース・イテレーション計画ガイド_AI-DLC版.md) を参照してください。
34
+
35
+ XP 版との最大の違いは、**ユースケースとユーザーストーリーの初稿を AI が書き、人はそれを検証・修正する** ことです。AI-DLC の論文は、ユーザーストーリーを「人と AI の理解を揃える、明確に定義された契約」と位置づけ、方法論を再設計しても残すべき成果物としています。つまり、ユースケースの書き方の規律は XP 版から変わりません。変わるのは、誰が書き、誰が検証し、何のために使われるかです。
36
+
37
+ | 観点 | XP 版 | AI-DLC 版 |
38
+ | :--- | :--- | :--- |
39
+ | 初稿の作成者 | 開発者と顧客 | AI が Intent から提案し、モブが検証する |
40
+ | 作成の場 | 要件定義・計画ゲーム | Inception フェーズの Mob Elaboration(同じ部屋・共有画面) |
41
+ | ユースケースの役割 | 利害関係者との契約 | 利害関係者との契約であり、**AI に渡す実装の契約** |
42
+ | 上位の構造 | ビジネスプロセス | Intent → Unit → ユーザーストーリー |
43
+ | 記述の精度 | 人が読んで理解できる | 人が読んで理解でき、AI が一意に解釈できる(セマンティクス密度) |
44
+ | 例外条件の洗い出し | 人がブレインストーミング | AI が候補を網羅し、人が取捨選択する |
45
+ | テストへの変換 | 人がテストケースを設計 | AI が拡張からテストを生成し、人が受入条件で検証する |
46
+ | 検証の焦点 | 記述の品質 | 記述の品質に加えて、AI の過剰設計・設計不足・幻覚の検出 |
47
+
48
+ ---
49
+
50
+ ## ユースケースの基本概念
51
+
52
+ ### ユースケースは人と AI の契約
53
+
54
+ ユースケースは、システムの振る舞いに関する利害関係者間の契約です。AI-DLC ではこれに **AI との契約** という役割が加わります。AI はユースケースとストーリーを読んでドメインモデル・コード・テストを生成するため、記述の曖昧さはそのまま実装のずれになります。
55
+
56
+ ```plantuml
57
+ @startuml
58
+ title ユースケースの構成要素と AI の位置づけ
59
+
60
+ actor "購入者" as user
61
+ actor "管理者" as admin
62
+ actor "決済サービス" as external
63
+
64
+ rectangle "システム" {
65
+ usecase "商品を注文する" as UC1
66
+ usecase "在庫を確認する" as UC2
67
+ usecase "ユーザーを認証する" as UC3
68
+ usecase "レポートを生成する" as UC4
69
+ }
70
+
71
+ user --> UC1
72
+ user --> UC2
73
+ admin --> UC4
74
+ UC1 ..> UC3 : <<include>>
75
+ UC1 ..> UC2 : <<include>>
76
+ UC1 --> external
77
+
78
+ note bottom of UC1
79
+ AI はこの契約を読んで
80
+ ドメインモデル・コード・テストを生成する
81
+ end note
82
+ @enduml
83
+ ```
84
+
85
+ **注意**: AI エージェント自体はアクターではありません。AI は開発プロセスの協働者であり、システムの利用者ではないからです。ただし、システムが LLM を機能として呼び出す場合(例:問い合わせ文の分類)は、その LLM サービスを支援アクターとして扱います。
86
+
87
+ ### AI-DLC の成果物との関係
88
+
89
+ ```plantuml
90
+ @startuml
91
+ title Intent・Unit・ユースケース・ストーリーの関係
92
+
93
+ object "Intent(意図)" as intent {
94
+ クロスセル向けのレコメンデーションを提供する
95
+ }
96
+ object "Unit:レコメンデーション" as unit1 {
97
+ 疎結合・高凝集な作業単位
98
+ }
99
+ object "Unit:ユーザーデータ収集" as unit2
100
+ object "ユースケース(ユーザー目的)" as uc {
101
+ おすすめ商品を見る
102
+ }
103
+ object "ユーザーストーリー" as story1 {
104
+ 購入履歴からおすすめを表示する
105
+ }
106
+ object "ユーザーストーリー" as story2 {
107
+ 履歴がない顧客に人気商品を表示する
108
+ }
109
+ object "受入条件" as ac {
110
+ AI がテストを生成する根拠
111
+ }
112
+
113
+ intent "1" *-- "*" unit1
114
+ intent "1" *-- "*" unit2
115
+ unit1 "1" *-- "*" uc
116
+ uc "1" *-- "*" story1
117
+ uc "1" *-- "*" story2
118
+ story1 "1" *-- "*" ac
119
+ @enduml
120
+ ```
121
+
122
+ | AI-DLC の成果物 | XP 版の対応 | 誰が作り、誰が検証するか |
123
+ | :--- | :--- | :--- |
124
+ | Intent | ビジネスプロセス全体(要約レベルの上位) | 人(プロダクトオーナー)が表明する |
125
+ | Unit | 要約レベルユースケース、またはユーザー目的の集合 | AI が分解し、モブが検証する |
126
+ | ユースケース | ユーザー目的レベル | AI が提案し、モブが検証する |
127
+ | ユーザーストーリー | イテレーション単位の要求 | AI が導出し、モブが検証する。人と AI の契約 |
128
+ | 受入条件 | 受入テストの基準 | AI が提案し、人が確定する。AI のテスト生成の根拠 |
129
+
130
+ ---
131
+
132
+ ## 1. ユースケースの 3 つのレベルと AI-DLC の対応
133
+
134
+ ### レベルの階層構造
135
+
136
+ XP 版の 3 レベル(要約・ユーザー目的・サブ機能)は、AI-DLC の成果物と Bolt の粒度に対応します。
137
+
138
+ ```plantuml
139
+ @startmindmap
140
+ * システム全体
141
+ ++ ☁️ 要約レベル(数日〜数ヶ月)
142
+ +++ 🌊 ユーザー目的レベル(数分〜数時間)
143
+ ++++ 🐟 サブ機能レベル(数秒〜数分)
144
+ -- Intent または Unit
145
+ --- Mob Elaboration で AI が分解
146
+ --- 複数のユーザー目的を含む
147
+ -- Unit 内のユースケース・ストーリー
148
+ --- Bolt 1〜数回で実装
149
+ --- ユーザーが満足して立ち去れる単位
150
+ -- Bolt 内のステップ
151
+ --- AI が計画に分解
152
+ --- 共通機能・再利用可能な処理
153
+ @endmindmap
154
+ ```
155
+
156
+ | レベル | AI-DLC での扱い | AI の役割 | 人の役割 |
157
+ | :--- | :--- | :--- | :--- |
158
+ | ☁️ 要約 | Intent、または Unit の集合 | Intent を Unit に分解する | Unit の独立性と粒度を検証する |
159
+ | 🌊 ユーザー目的 | Unit 内のユースケースとストーリー | ユースケース・ストーリー・受入条件を提案する | 契約として妥当かを検証し確定する |
160
+ | 🐟 サブ機能 | Bolt のステップ、または include されるユースケース | Bolt 計画でステップに分解する | ステップの順序と確認ポイントを検証する |
161
+
162
+ ### レベル判定の質問
163
+
164
+ XP 版の判定質問はそのまま使います。AI-DLC ではさらに次を加えます。
165
+
166
+ #### ユーザー目的レベルの判定
167
+
168
+ - 主アクターはこれを実行した後で満足して立ち去れるか
169
+ - これは 1 回の作業セッションで完了するか
170
+ - **AI が 1 つの Unit の中で、数回の Bolt で実装できる大きさか**
171
+
172
+ #### 要約レベルの判定
173
+
174
+ - 複数のユーザー目的が含まれているか
175
+ - **Unit として切り出したとき、他の Unit と疎結合に保てるか**
176
+
177
+ #### サブ機能レベルの判定
178
+
179
+ - これだけでは目的が達成されないか
180
+ - **Bolt 計画のステップとして AI に渡せば足りるか(ユースケースとして独立させる必要がないか)**
181
+
182
+ ---
183
+
184
+ ## 2. スコープの定義
185
+
186
+ ### 設計スコープの種類
187
+
188
+ XP 版の 3 つのスコープ(組織・システム・コンポーネント)はそのまま使います。AI-DLC では、スコープが **AI に渡すコンテキストの範囲** も決めます。
189
+
190
+ ```plantuml
191
+ @startuml
192
+ title 設計スコープと AI に渡すコンテキスト
193
+
194
+ package "🏢 組織(企業全体)" {
195
+ package "💻 システム(ソフトウェア)" {
196
+ package "💾 コンポーネント" {
197
+ [モジュール A]
198
+ [モジュール B]
199
+ }
200
+ }
201
+ actor 社員
202
+ actor 外部システム
203
+ }
204
+
205
+ actor 顧客
206
+
207
+ 顧客 --> 社員 : 依頼
208
+ 社員 --> [モジュール A] : 操作
209
+ [モジュール A] --> [モジュール B] : 連携
210
+ [モジュール B] --> 外部システム : API 呼び出し
211
+
212
+ note bottom of "💻 システム(ソフトウェア)"
213
+ ユースケースのスコープ = AI がコードを生成する範囲
214
+ = AI に渡す既存コードとモデルの範囲
215
+ end note
216
+ @enduml
217
+ ```
218
+
219
+ ### In/Out リストの作成
220
+
221
+ XP 版の In/Out リストに、AI-DLC では「AI に任せる範囲」の列を加えます。組織のポリシー上 AI に渡せないもの(本番データ・機密情報・決済の秘密鍵など)を最初に明示します。
222
+
223
+ | トピック | In | Out | AI に任せる | 備考 |
224
+ | :--- | :---: | :---: | :---: | :--- |
225
+ | ユーザー認証 | ✓ | | 設計と実装 | 認証方式の選択は人が承認(確認必須) |
226
+ | 決済処理 | | ✓ | — | 外部サービス。契約テストのみ AI が生成。本番キーは渡さない |
227
+ | 在庫管理 | ✓ | | 設計と実装 | コア機能 |
228
+ | 配送手配 | | ✓ | — | 物流会社 API |
229
+ | レポート生成 | ✓ | | 実装のみ | 帳票レイアウトは人が指定 |
230
+
231
+ In/Out リストは参照実装の Scope Definition(Ideation 1.4)に相当し、以降のすべての AI 生成物の前提になります。
232
+
233
+ ---
234
+
235
+ ## 3. アクターの識別
236
+
237
+ ### アクター分析
238
+
239
+ XP 版の 3 種類(主アクター・支援アクター・オフステージアクター)はそのまま使います。AI-DLC では AI にアクター候補を列挙させ、人が検証します。
240
+
241
+ ```plantuml
242
+ @startuml
243
+ title アクターの種類と関係
244
+
245
+ actor "主アクター" as primary #lightblue
246
+ actor "支援アクター" as support #lightgreen
247
+ actor "オフステージアクター" as offstage #lightyellow
248
+
249
+ rectangle "システム" as system
250
+
251
+ primary --> system : 目的を持って\n操作する
252
+ system --> support : サービスを\n要求する
253
+ offstage ..> system : 利益を持つが\n直接操作しない
254
+
255
+ note right of primary : システムを使って\n目的を達成する人
256
+ note right of support : システムが依存する\n外部サービス
257
+ note right of offstage : 規制当局、\n管理者など
258
+ @enduml
259
+ ```
260
+
261
+ ### AI が提案したアクターの検証観点
262
+
263
+ AI はもっともらしいアクターを生成しますが、実在しないロールや、組織に存在しない権限を持つアクターを作ることがあります。次の観点で検証します。
264
+
265
+ | 観点 | 確認内容 |
266
+ | :--- | :--- |
267
+ | 実在性 | そのロールは組織に実際に存在するか。既存の業務フロー(RDRA のビジネスコンテキスト)に登場するか |
268
+ | 目的の有無 | システムに対する明確な目的を持っているか。「システム」「管理者」のような汎用名で目的が曖昧になっていないか |
269
+ | 過剰な細分化 | 権限や画面が違うだけのロールを別アクターにしていないか |
270
+ | 見落とし | 規制当局・監査・運用担当などオフステージアクターが抜けていないか |
271
+ | AI の混同 | 開発を支援する AI エージェントをアクターに含めていないか |
272
+
273
+ ### アクター・目的リスト
274
+
275
+ XP 版の表に、AI-DLC では「所属 Unit」を加えます。目的ごとに Unit を割り当てることで、Unit の凝集度を確認できます。
276
+
277
+ | アクター | 目的 | レベル | 優先度 | 頻度 | 所属 Unit |
278
+ | :--- | :--- | :---: | :---: | :--- | :--- |
279
+ | 購入者 | 商品を検索する | 🌊 | 高 | 100 回/日 | 商品カタログ |
280
+ | 購入者 | 注文する | 🌊 | 高 | 50 回/日 | 注文処理 |
281
+ | 購入者 | 注文履歴を確認する | 🌊 | 中 | 20 回/日 | 注文処理 |
282
+ | 購入者 | おすすめ商品を見る | 🌊 | 中 | 80 回/日 | レコメンデーション |
283
+ | 管理者 | 在庫を更新する | 🌊 | 高 | 30 回/日 | 在庫管理 |
284
+ | 管理者 | レポートを生成する | ☁️ | 中 | 5 回/日 | レポート |
285
+ | システム | 在庫を自動補充する | 🌊 | 高 | 10 回/日 | 在庫管理 |
286
+
287
+ ---
288
+
289
+ ## 4. ユースケース記述プロセス
290
+
291
+ ### Mob Elaboration の流れ
292
+
293
+ AI-DLC では、ユースケースとストーリーは Inception フェーズの **Mob Elaboration** で作ります。ファシリテーターの進行のもと、プロダクトオーナー・開発者・QA が同じ画面を見ながら AI と対話します。
294
+
295
+ ```plantuml
296
+ @startuml
297
+ title Mob Elaboration によるユースケース作成
298
+
299
+ |人(モブ)|
300
+ start
301
+ :Intent を表明する;
302
+ |AI|
303
+ :明確化の質問をする
304
+ (主要なユーザーは誰か、達成すべき成果は何か);
305
+ |人(モブ)|
306
+ :質問に答える;
307
+ |AI|
308
+ :アクター・目的リストを提案する;
309
+ |人(モブ)|
310
+ :アクターの実在性と目的を検証する;
311
+ |AI|
312
+ :ユースケース(主成功シナリオ)を提案する;
313
+ |人(モブ)|
314
+ :シナリオを検証し、過剰・不足を修正する;
315
+ |AI|
316
+ :例外条件と拡張を洗い出す;
317
+ |人(モブ)|
318
+ :拡張を取捨選択する;
319
+ |AI|
320
+ :ユーザーストーリーと受入条件に展開する;
321
+ |人(モブ)|
322
+ :契約として確定する(承認ゲート);
323
+ |AI|
324
+ :凝集度の高いストーリーを Unit にまとめる;
325
+ |人(モブ)|
326
+ :Unit の独立性と粒度を検証する(承認ゲート);
327
+ stop
328
+ @enduml
329
+ ```
330
+
331
+ ### 段階的詳細化と承認ゲート
332
+
333
+ XP 版の 4 つの精度レベルは、AI-DLC では承認ゲートの区切りになります。各レベルで AI が提案し、人が承認してから次に進みます。
334
+
335
+ ```plantuml
336
+ @startuml
337
+ title 精度レベルと承認ゲート
338
+
339
+ [*] --> L1
340
+ L1 : 精度レベル 1:アクター名と目的
341
+ L1 : AI がアクター・目的リストを提案
342
+ L1 : 人がアクターの実在性を検証
343
+ L1 --> L2 : 承認
344
+ L2 : 精度レベル 2:ユースケース概要
345
+ L2 : AI が主成功シナリオを提案
346
+ L2 : 人が意図とスコープを検証
347
+ L2 --> L3 : 承認
348
+ L3 : 精度レベル 3:拡張条件
349
+ L3 : AI が例外条件を網羅
350
+ L3 : 人が取捨選択
351
+ L3 --> L4 : 承認
352
+ L4 : 精度レベル 4:完全形式とストーリー
353
+ L4 : AI が事前・事後条件・保証・受入条件を提案
354
+ L4 : 人が契約として確定
355
+ L4 --> [*]
356
+ @enduml
357
+ ```
358
+
359
+ ### 12 ステップの作成プロセスと分担
360
+
361
+ XP 版の 12 ステップを、AI と人の分担で整理します。
362
+
363
+ | # | ステップ | AI の役割 | 人の役割 |
364
+ | :--- | :--- | :--- | :--- |
365
+ | 1 | システムのスコープと境界を識別 | In/Out リストの候補を提案 | AI に渡せる範囲を含めて確定 |
366
+ | 2 | 主アクターの一覧作成 | 業務フローからアクター候補を列挙 | 実在性を検証 |
367
+ | 3 | ユーザー目的の洗い出し | アクター・目的リストを提案 | 目的の妥当性と優先度を判断 |
368
+ | 4 | 要約レベルユースケースの作成 | Intent を要約レベルに展開 | ビジネス価値との整合を検証 |
369
+ | 5 | 要約レベルの見直しと統合 | 重複・欠落を指摘 | 統合・分割を判断 |
370
+ | 6 | 詳細化するユースケースの選択 | 優先度と依存関係を提示 | 詳細化の順序を決定 |
371
+ | 7 | 利害関係者と保証の定義 | 利害関係者と利益の候補を提案 | 保証を確定 |
372
+ | 8 | 主成功シナリオの記述 | 3〜9 ステップのシナリオを提案 | 意図・スコープ・UI 漏れを検証 |
373
+ | 9 | 例外条件の洗い出し | 例外条件を網羅的に列挙 | 対象とする条件を取捨選択 |
374
+ | 10 | 拡張処理ステップの記述 | 拡張ステップを提案 | 業務ルールとの整合を検証 |
375
+ | 11 | 複雑なフローの分割と統合 | 分割案と include/extend を提案 | 分割の妥当性を判断 |
376
+ | 12 | 全体の整理と見直し | トレーサビリティと矛盾を検出 | 契約として承認 |
377
+
378
+ AI は「仮定より質問」を原則にします。情報が足りないときに AI がもっともらしく埋めるのではなく、質問させることが Mob Elaboration の品質を決めます。
379
+
380
+ ---
381
+
382
+ ## 5. ユースケーステンプレート
383
+
384
+ ### 完全形式テンプレート(AI-DLC 版)
385
+
386
+ XP 版の完全形式に、AI-DLC のトレーサビリティ項目(Intent・Unit・リスク・測定基準)を加えます。
387
+
388
+ ```markdown
389
+ # UC-[番号]: [スコープアイコン][ユースケース名][レベルアイコン]
390
+
391
+ **Intent**: [このユースケースが実現に寄与する Intent]
392
+
393
+ **Unit**: [所属する Unit]
394
+
395
+ **コンテキスト**: [一般的に起きる条件や状況の説明]
396
+
397
+ **スコープ**: [設計対象システム]
398
+
399
+ **レベル**: [要約/ユーザー目的/サブ機能]
400
+
401
+ **主アクター**: [目的を持つアクター]
402
+
403
+ **利害関係者と利益**:
404
+
405
+ - [利害関係者1]: [その利益]
406
+ - [利害関係者2]: [その利益]
407
+
408
+ **事前条件**:
409
+
410
+ - [すでに真であると想定している状態]
411
+
412
+ **トリガー**: [ユースケースを開始するイベント]
413
+
414
+ **最低保証**: [失敗時でも守られる利益]
415
+
416
+ **成功時保証**: [成功時に達成される状態]
417
+
418
+ **主成功シナリオ**:
419
+
420
+ 1. [アクター]が[アクション]する
421
+ 2. システムが[処理]する
422
+ 3. ...
423
+
424
+ **拡張**:
425
+
426
+ - 1a. [条件]:
427
+ - 1a1. [代替処理]
428
+ - 2-4a. [いつでも発生する条件]:
429
+ - 2-4a1. [処理]
430
+
431
+ **技術およびデータのバリエーション**:
432
+
433
+ - ステップ1: [バリエーション]
434
+
435
+ **リスク**: [リスク台帳との対応。AI に渡せないデータ、確認必須の操作]
436
+
437
+ **測定基準**: [このユースケースの成功をどう測るか。Intent の測定基準へのトレース]
438
+
439
+ **AI の仮定**: [AI が置いた仮定と、その確認状況]
440
+ ```
441
+
442
+ ### 略式テンプレート(Bolt 向け)
443
+
444
+ ```markdown
445
+ # [ユースケース名]
446
+
447
+ **Unit**: [所属する Unit]
448
+ **主アクター**: [アクター名]
449
+ **スコープ**: [システム名]
450
+ **レベル**: [レベル]
451
+
452
+ [主成功シナリオを段落形式で記述。システムの振る舞いと
453
+ アクターの相互作用を自然な文章で表現]
454
+
455
+ [代替パスや例外処理を段落形式で記述]
456
+
457
+ **頻度**: [実行頻度]
458
+ **参照する既存実装**: [AI が「同じ方式で」実装すべき既存コードのパス]
459
+ ```
460
+
461
+ ### ユーザーストーリー(人と AI の契約)
462
+
463
+ XP 版のユーザーストーリー形式に、AI が実装に使う項目を加えます。
464
+
465
+ ```markdown
466
+ # [ストーリー名]
467
+
468
+ **Unit**: [所属する Unit]
469
+ **ユースケース**: UC-[番号]
470
+
471
+ **として**: [アクター]
472
+ **したい**: [目的/機能]
473
+ **なぜなら**: [ビジネス価値]
474
+
475
+ **受入条件**:
476
+
477
+ - [ ] [条件1:Given/When/Then で一意に判定できる形]
478
+ - [ ] [条件2]
479
+
480
+ **参照する成果物**:
481
+
482
+ - ドメインモデル: [パス]
483
+ - 既存実装: [パス](同じ方式で実装する)
484
+ - ドメイン用語: [用語集のパス]
485
+
486
+ **確認ポイント**: [新規ファイル・スキーマ変更・外部連携など人の確認が必要な操作]
487
+
488
+ **AI の仮定**: [AI が置いた仮定。確認済みかどうか]
489
+ ```
490
+
491
+ ---
492
+
493
+ ## 6. シナリオの書き方
494
+
495
+ ### セマンティクス密度
496
+
497
+ XP 版の「良いステップの書き方」に、AI-DLC は **セマンティクス密度** の観点を加えます。ステップは人が読んで自然であると同時に、AI が一意に解釈できる必要があります。曖昧な語をドメイン用語と制約に置き換えます。
498
+
499
+ ```plantuml
500
+ @startuml
501
+ title ステップ記述のレベル
502
+
503
+ participant "購入者" as A
504
+ participant "システム" as S
505
+ participant "認証サービス" as E
506
+
507
+ == 🌊 ユーザー目的レベル ==
508
+ A -> S: 1. 商品を注文する
509
+ activate S
510
+ S -> S: 2. 在庫を確認する
511
+ S -> A: 3. 注文を確認する
512
+ deactivate S
513
+
514
+ == 🐟 サブ機能レベル(詳細) ==
515
+ A -> S: 1. ユーザー名とパスワードを入力する
516
+ activate S
517
+ S -> S: 2. 認証情報を検証する
518
+ S -> E: 3. 認証サービスに問い合わせる
519
+ E -> S: 4. 認証結果を返す
520
+ S -> A: 5. ログイン結果を表示する
521
+ deactivate S
522
+ @enduml
523
+ ```
524
+
525
+ | 密度が低い記述 | 密度が高い記述 |
526
+ | :--- | :--- |
527
+ | システムがデータを処理する | システムが注文明細ごとに在庫引当を行う |
528
+ | ユーザーが情報を入力する | 購入者が配送先(氏名・住所・電話番号)を入力する |
529
+ | システムがチェックする | システムが注文金額が与信限度額以内であることを確認する |
530
+ | エラーの場合は通知する | 2a. 在庫が不足している場合、システムが不足数量を通知する |
531
+
532
+ ### ステップ記述のガイドライン
533
+
534
+ #### やるべきこと
535
+
536
+ - ✅ アクターの意図を表現する
537
+ - ✅ 「誰が何をする」を明確にする
538
+ - ✅ 成功する目的として記述する
539
+ - ✅ 情報の流れを明確にする
540
+ - ✅ **ドメイン用語集の語を使う**(AI がドメインモデルと対応づけられる)
541
+ - ✅ **業務ルールを数値や条件で明示する**(AI がテストを生成できる)
542
+
543
+ #### 避けるべきこと
544
+
545
+ - ❌ UI の詳細を記述する
546
+ - ❌ 「チェックする」ではなく「確認する」
547
+ - ❌ 実装の詳細に踏み込む(AI が設計の選択肢を失う)
548
+ - ❌ IF 文を使う(拡張に記載)
549
+ - ❌ **「適切に」「必要に応じて」などの判断を AI に委ねる語**
550
+
551
+ ### ステップ数の目安
552
+
553
+ XP 版と同じく 3〜9 ステップが理想です。AI は網羅的に書こうとして長くなる傾向があるため、10 ステップを超えた場合はサブユースケースへの分割を AI に提案させます。
554
+
555
+ ```plantuml
556
+ @startuml
557
+ title 適切なステップ数
558
+
559
+ rectangle "理想的" as ideal #lightgreen {
560
+ (3〜9 ステップ)
561
+ }
562
+
563
+ rectangle "許容範囲" as ok #yellow {
564
+ (2〜10 ステップ)
565
+ }
566
+
567
+ rectangle "要分割" as split #lightcoral {
568
+ (11 ステップ以上)
569
+ }
570
+
571
+ note bottom of ideal : 読みやすく\n理解しやすい
572
+ note bottom of ok : 状況により\n許容
573
+ note bottom of split : AI に分割案を\n提案させる
574
+ @enduml
575
+ ```
576
+
577
+ ---
578
+
579
+ ## 7. 拡張の記述
580
+
581
+ ### AI による例外条件の網羅
582
+
583
+ XP 版では人が例外条件をブレインストーミングしていました。AI-DLC では AI に網羅的に列挙させ、人が取捨選択します。AI は入力異常・外部サービス障害・並行処理・権限・データ不整合といった観点を機械的に洗い出せるため、見落としが減ります。一方で、業務上あり得ない条件や対応不要な条件も含まれるため、人の判断が必要です。
584
+
585
+ ```plantuml
586
+ @startuml
587
+ title 拡張の分岐パターン
588
+
589
+ start
590
+ :主成功シナリオ;
591
+ if (条件 A?) then (yes)
592
+ :拡張処理 A;
593
+ :主シナリオに戻る;
594
+ else (no)
595
+ if (条件 B?) then (yes)
596
+ :拡張処理 B;
597
+ stop
598
+ else (no)
599
+ :通常処理継続;
600
+ endif
601
+ endif
602
+ :次のステップ;
603
+ stop
604
+ @enduml
605
+ ```
606
+
607
+ ### 拡張の取捨選択の観点
608
+
609
+ | 観点 | 判断 |
610
+ | :--- | :--- |
611
+ | 業務上の発生可能性 | 実際に起こり得るか。起こらない条件は削除する |
612
+ | 利害関係者の利益 | 最低保証に関わる条件は必ず残す |
613
+ | 対応の所在 | 外部サービスや基盤で対応済みの条件は「技術バリエーション」に移す |
614
+ | テストの価値 | 受入テストとして残す価値があるか。テスト戦略の水準に合わせる |
615
+ | リスク台帳 | セキュリティ・コンプライアンスに関わる条件はリスク台帳と対応づける |
616
+
617
+ ### 拡張の記述形式
618
+
619
+ ```markdown
620
+ **主成功シナリオ**:
621
+
622
+ 1. 購入者が商品を選択する
623
+ 2. システムが在庫を確認する
624
+ 3. 購入者が数量を指定する
625
+ 4. システムが合計金額を計算する
626
+ 5. 購入者が注文を確定する
627
+
628
+ **拡張**:
629
+
630
+ - 2a. 在庫がない:
631
+ - 2a1. システムが在庫なしを通知する
632
+ - 2a2. 購入者が別の商品を選択する(ステップ 1 へ)
633
+
634
+ - 3a. 数量が在庫を超える:
635
+ - 3a1. システムが利用可能数量を表示する
636
+ - 3a2. 購入者が数量を調整する
637
+
638
+ - 4a. 合計金額が与信限度額を超える:
639
+ - 4a1. システムが限度額超過を通知する
640
+ - 4a2. 購入者が数量を減らす(ステップ 3 へ)
641
+
642
+ - *a. 購入者がキャンセル:
643
+ - *a1. システムがトランザクションを破棄する
644
+ - *a2. 終了
645
+
646
+ **AI が提案し、削除した条件**:
647
+
648
+ - 2b. 在庫サービスがタイムアウト → 基盤のリトライで対応済み。技術バリエーションへ
649
+ - 5b. 同一注文の二重送信 → API の冪等性で対応。Unit「注文処理」の NFR へ
650
+ ```
651
+
652
+ 削除した条件も記録しておくと、AI が次の Bolt で同じ条件を再提案したときに判断を再利用できます。
653
+
654
+ ---
655
+
656
+ ## 8. データ記述の精度
657
+
658
+ ### 3 段階のデータ精度と AI のコンテキスト
659
+
660
+ XP 版の 3 段階(ニックネーム → フィールド群 → 詳細仕様)はそのまま使います。AI-DLC では、精度レベル 2 以上を **ドメイン用語集** として整備し、AI に渡すコンテキストにします。
661
+
662
+ ```plantuml
663
+ @startuml
664
+ title データ記述の精度レベル
665
+
666
+ class "精度レベル 1" as L1 {
667
+ ニックネーム
668
+ --
669
+ "顧客情報"
670
+ "注文データ"
671
+ "商品リスト"
672
+ }
673
+
674
+ class "精度レベル 2" as L2 {
675
+ フィールド群
676
+ --
677
+ 顧客情報:
678
+ - 氏名
679
+ - 住所
680
+ - 電話番号
681
+ }
682
+
683
+ class "精度レベル 3" as L3 {
684
+ 詳細仕様
685
+ --
686
+ 氏名: String(100)
687
+ 住所: String(200)
688
+ 電話番号: String(20)
689
+ + NotNull 制約
690
+ + 形式チェック
691
+ }
692
+
693
+ L1 --> L2 : 詳細化
694
+ L2 --> L3 : 詳細化
695
+
696
+ note bottom of L1 : ユースケースで使用
697
+ note bottom of L2 : ドメイン用語集として\nAI に渡す
698
+ note bottom of L3 : AI がドメインモデル・\nデータモデルで生成
699
+ @enduml
700
+ ```
701
+
702
+ | 精度レベル | 誰が書くか | AI-DLC での用途 |
703
+ | :--- | :--- | :--- |
704
+ | 1(ニックネーム) | AI が提案、人が用語を統一 | ユースケースの本文 |
705
+ | 2(フィールド群) | AI が提案、人が業務知識で補正 | ドメイン用語集。ユースケース・ストーリー・ドメインモデルで共通に参照 |
706
+ | 3(詳細仕様) | AI がドメインモデル・データモデル設計で生成、人が検証 | Construction フェーズの成果物 |
707
+
708
+ ユースケース内で同じ概念を別の語で呼ぶと、AI は別のエンティティとして生成します。用語集の統一は AI-DLC では品質に直結します。
709
+
710
+ ---
711
+
712
+ ## 9. 品質チェックリスト
713
+
714
+ ### ユースケース全体のチェック項目
715
+
716
+ XP 版のチェック項目はすべて有効です。AI-DLC 版ではそれらに加えて、AI 生成物に固有の観点を検証します。
717
+
718
+ | カテゴリ | チェック項目 | ✓ |
719
+ | :--- | :--- | :---: |
720
+ | **タイトル** | 動詞句で目的を表現しているか | □ |
721
+ | | システムが達成可能な目的か | □ |
722
+ | **スコープ** | 明確に定義されているか | □ |
723
+ | | ブラックボックスとして扱っているか | □ |
724
+ | | AI に渡せる範囲が In/Out リストと一致しているか | □ |
725
+ | **レベル** | 適切なレベルが選択されているか | □ |
726
+ | | 内容がレベルと一致しているか | □ |
727
+ | **主アクター** | 振る舞いを持っているか | □ |
728
+ | | システムへの明確な目的があるか | □ |
729
+ | | 実在するロールか(AI の幻覚ではないか) | □ |
730
+ | **事前条件** | 必須かつ検証可能か | □ |
731
+ | | ユースケース内で再チェックしていないか | □ |
732
+ | **保証** | 利害関係者の利益が守られているか | □ |
733
+ | | 成功時に目的が達成されるか | □ |
734
+ | **シナリオ** | 3〜9 ステップに収まっているか | □ |
735
+ | | トリガーから保証まで進んでいるか | □ |
736
+ | | 曖昧な語(適切に・必要に応じて)が残っていないか | □ |
737
+ | **トレーサビリティ** | Intent と Unit にたどれるか | □ |
738
+ | | 測定基準が Intent の測定基準に対応しているか | □ |
739
+ | **AI の仮定** | AI が置いた仮定が明示され、確認済みか | □ |
740
+
741
+ ### AI 生成ユースケースに固有の検証観点
742
+
743
+ | 観点 | 症状 | 対処 |
744
+ | :--- | :--- | :--- |
745
+ | 過剰設計 | Intent に無い機能・拡張・アクターが足されている | 削除し、削除理由を記録する |
746
+ | 設計不足 | 業務上必須の制約・例外・利害関係者が落ちている | 業務知識で補い、AI に質問させるべきだった点をガードレールにする |
747
+ | 幻覚 | 存在しないロール・システム・業務ルールが登場する | 実在の業務フロー・システムコンテキストと照合する |
748
+ | UI 漏れ | 「ボタンを押す」「画面を表示する」など UI の記述が混入 | 意図の記述に置き換える |
749
+ | 実装漏れ | 「DynamoDB に保存する」など技術選択が混入 | 技術バリエーションか Logical Design に移す |
750
+ | 用語のゆれ | 同じ概念が別の語で書かれている | ドメイン用語集で統一する |
751
+ | 未確認の仮定 | 「〜と想定する」が確認されないまま残る | Mob Elaboration で回答し、記録する |
752
+
753
+ ### ステップ記述のチェック項目
754
+
755
+ - □ 成功する目的として表現されているか
756
+ - □ アクターが明確か
757
+ - □ 意図が明確か
758
+ - □ UI 設計を含んでいないか
759
+ - □ 情報の流れが明確か
760
+ - □ 「確認する」を使っているか(「チェックする」ではなく)
761
+ - □ ドメイン用語集の語を使っているか
762
+ - □ 業務ルールが数値や条件で明示されているか
763
+
764
+ ---
765
+
766
+ ## 10. AI-DLC プロジェクトでの活用
767
+
768
+ ### ユースケースから Unit とストーリーへ
769
+
770
+ XP 版では 1 つのユースケースをイテレーション単位のストーリーに分解しました。AI-DLC では、ストーリーを **凝集度の高い Unit** にまとめ、Unit を Bolt で実装します。
771
+
772
+ ```plantuml
773
+ @startuml
774
+ title ユースケースから Unit とストーリーへ
775
+
776
+ package "ユースケース" {
777
+ rectangle "🌊 商品を注文する" as UC
778
+ }
779
+
780
+ package "Unit:商品カタログ" {
781
+ rectangle "商品を検索する" as US1
782
+ }
783
+
784
+ package "Unit:注文処理" {
785
+ rectangle "カートに追加する" as US2
786
+ rectangle "配送先を入力する" as US3
787
+ rectangle "注文を確定する" as US5
788
+ }
789
+
790
+ package "Unit:決済連携" {
791
+ rectangle "支払い方法を選択する" as US4
792
+ }
793
+
794
+ UC --> US1
795
+ UC --> US2
796
+ UC --> US3
797
+ UC --> US4
798
+ UC --> US5
799
+
800
+ note right of UC : AI がストーリーに分解し\n凝集度で Unit にまとめる
801
+ note bottom of US4 : 外部サービスとの契約は\nUnit 境界で固める
802
+ @enduml
803
+ ```
804
+
805
+ 1 つのユースケースのストーリーが複数の Unit にまたがることは自然です。Unit の境界は「独立して開発・デプロイできるか」で決め、ユースケースの境界とは一致させません。
806
+
807
+ ### ストーリーマップと依存関係
808
+
809
+ 参照実装は Units Generation(Inception 2.7)で、Unit 定義・Unit 間の依存 DAG・Unit とストーリーの対応表を生成します。本プロジェクトでは次の 3 つを揃えます。
810
+
811
+ | 成果物 | 内容 | 用途 |
812
+ | :--- | :--- | :--- |
813
+ | Unit 定義 | 各 Unit の目的・含まれるストーリー・NFR・リスク | Bolt 計画の入力 |
814
+ | 依存 DAG | Unit 間の依存関係 | 並列に回せる Unit の特定、Bolt の順序 |
815
+ | ストーリーマップ | ユースケース × Unit × ストーリーの対応表 | トレーサビリティ、検証ゲートでの欠落検出 |
816
+
817
+ ### Bolt 計画での利用
818
+
819
+ 1. **リリース計画時**
820
+
821
+ - Intent を要約レベルのユースケースと Unit に分解し、全体像を把握する
822
+ - Unit ごとに複雑さとリスク(エントロピー評価)を評価する
823
+
824
+ 2. **Bolt 計画時**
825
+
826
+ - Unit 内のストーリーを AI に渡し、ステップ計画を書かせる
827
+ - 受入条件を Bolt の完了条件にする
828
+
829
+ 3. **実装時**
830
+
831
+ - ユースケースとストーリーを AI の設計・実装の契約として渡す
832
+ - 拡張から AI がテストを生成し、人が受入条件で検証する
833
+
834
+ ### ユースケースから機能リストへ
835
+
836
+ XP 版の機能リストのストーリーポイント列は、AI-DLC 版では「AI 自律度」に置き換えます。AI がどれだけ自律的に実装でき、人の確認がどこで必要かを表します。
837
+
838
+ ```markdown
839
+ ## UC-001: 商品を注文する
840
+
841
+ ### 抽出された機能リストと AI 自律度
842
+
843
+ | ID | 機能 | Unit | 優先度 | AI 自律度 | 確認ポイント |
844
+ | :--- | :--- | :--- | :--- | :--- | :--- |
845
+ | F1.1 | 商品検索機能 | 商品カタログ | 必須 | 高 | なし |
846
+ | F1.2 | カート追加機能 | 注文処理 | 必須 | 高 | なし |
847
+ | F1.3 | 在庫確認機能 | 在庫管理 | 必須 | 中 | 在庫引当の業務ルール |
848
+ | F1.4 | 配送先入力機能 | 注文処理 | 必須 | 高 | 個人情報の保存方式 |
849
+ | F1.5 | 支払い処理機能 | 決済連携 | 必須 | 低 | 外部 API 契約、本番キーは渡さない |
850
+ | F1.6 | 注文確認メール送信 | 注文処理 | 重要 | 中 | メール送信基盤の選択 |
851
+ | F1.7 | 注文履歴保存 | 注文処理 | 重要 | 高 | スキーマ変更 |
852
+ ```
853
+
854
+ ---
855
+
856
+ ## 11. テストケースへの変換
857
+
858
+ ### AI によるテスト生成と人の検証
859
+
860
+ XP 版では人がユースケースの各パスからテストケースを設計しました。AI-DLC では AI が主成功シナリオと拡張からテストを生成し、人は **受入条件で検証** します。
861
+
862
+ ```plantuml
863
+ @startuml
864
+ title ユースケースからテストケースへ(AI-DLC 版)
865
+
866
+ rectangle "ユースケース(人と AI の契約)" as UC {
867
+ rectangle "主成功シナリオ" as MSS
868
+ rectangle "拡張 1" as EX1
869
+ rectangle "拡張 2" as EX2
870
+ rectangle "受入条件" as AC
871
+ }
872
+
873
+ rectangle "AI が生成するテスト" as TC {
874
+ rectangle "正常系テスト" as NT
875
+ rectangle "異常系テスト 1" as AT1
876
+ rectangle "異常系テスト 2" as AT2
877
+ rectangle "境界値テスト" as BT
878
+ }
879
+
880
+ rectangle "人が検証" as H {
881
+ rectangle "受入テストの妥当性" as V
882
+ }
883
+
884
+ MSS --> NT
885
+ EX1 --> AT1
886
+ EX2 --> AT2
887
+ UC --> BT
888
+ AC --> V
889
+ TC --> V
890
+
891
+ note bottom of TC : テスト戦略の水準に応じて\n生成量を調整する
892
+ @enduml
893
+ ```
894
+
895
+ ### テスト戦略との対応
896
+
897
+ 生成するテストの量は、計画で選んだテスト戦略に従います。
898
+
899
+ | テスト戦略 | ユースケースからの生成方針 |
900
+ | :--- | :--- |
901
+ | Minimal | 受入条件ごとに 1 テスト。主成功シナリオの正常系は必ず含める |
902
+ | Standard | 主成功シナリオ・すべての拡張・境界値。単体と統合を含む |
903
+ | Comprehensive | Standard に加え、NFR(性能・セキュリティ)の受入テストと E2E |
904
+
905
+ ### テストケーステンプレート
906
+
907
+ ```markdown
908
+ ## テストケース: [ユースケース名]_[パス]
909
+
910
+ **基になるユースケース**: UC-XXX
911
+ **ストーリー**: [ストーリー名]
912
+ **受入条件**: [対応する受入条件]
913
+ **テストパス**: 主成功シナリオ/拡張 XX
914
+
915
+ **事前条件**:
916
+
917
+ - [システムの初期状態]
918
+ - [必要なテストデータ]
919
+
920
+ **入力**:
921
+ 1. [入力データ 1]
922
+ 2. [入力データ 2]
923
+
924
+ **期待結果**:
925
+
926
+ - [期待される出力]
927
+ - [期待される状態変化]
928
+ - [期待される副作用]
929
+
930
+ **事後条件**:
931
+
932
+ - [システムの最終状態]
933
+
934
+ **生成**: AI / **検証**: [検証した人と日時]
935
+ ```
936
+
937
+ 受入条件を Given/When/Then で一意に判定できる形にしておくと、AI のテスト生成の精度が上がり、人の検証も受入条件との突合だけで済みます。
938
+
939
+ ---
940
+
941
+ ## 12. ブラウンフィールドでのユースケース
942
+
943
+ 既存システムに機能を追加する場合、AI-DLC はまずコードを **静的モデルと動的モデル** に昇格させます。動的モデルは「主要ユースケースを実現するコンポーネント間の相互作用」であり、ユースケースそのものです。
944
+
945
+ ```plantuml
946
+ @startuml
947
+ title ブラウンフィールドでのユースケース復元
948
+
949
+ |AI|
950
+ start
951
+ :既存コードをスキャンする;
952
+ :静的モデルを生成する
953
+ (コンポーネント・責務・関係);
954
+ :動的モデルを生成する
955
+ (主要ユースケースの相互作用);
956
+ :既存のユースケース候補を列挙する;
957
+ |人(開発者とプロダクトマネージャー)|
958
+ :モデルとユースケースを検証・修正する;
959
+ :新機能のユースケースを追加する;
960
+ |AI|
961
+ :既存と新規のユースケースの影響範囲を分析する;
962
+ |人(開発者とプロダクトマネージャー)|
963
+ :影響範囲を確認し、Unit を確定する(承認ゲート);
964
+ stop
965
+ @enduml
966
+ ```
967
+
968
+ ### 復元したユースケースの検証観点
969
+
970
+ | 観点 | 確認内容 |
971
+ | :--- | :--- |
972
+ | 実装と業務の乖離 | コードから復元した振る舞いが、現在の業務と一致しているか。使われていない経路はないか |
973
+ | 暗黙の業務ルール | コードに埋め込まれた条件分岐が、業務ルールとして明文化されているか |
974
+ | 影響範囲 | 新機能のユースケースが既存のどのユースケースの拡張・事前条件に影響するか |
975
+ | 用語のずれ | コードの命名とドメイン用語集が対応しているか |
976
+
977
+ ---
978
+
979
+ ## 13. プロンプトパターン
980
+
981
+ [AI-DLC 導入ガイド](AI-DLC導入ガイド.md#7-プロンプトパターン) の骨格(ロール・計画・確認ポイント・承認・1 ステップずつ)をユースケース作成に適用します。
982
+
983
+ ### ユースケースとストーリーの作成
984
+
985
+ ```markdown
986
+ あなたは経験豊富なプロダクトマネージャーです。
987
+ 次の Intent から、システムの振る舞いに関する契約となるユースケースと
988
+ ユーザーストーリーを作成します。
989
+
990
+ 作業の前に、手順をチェックボックス付きの Markdown 計画として
991
+ docs/requirements/<project>/usecase_plan.md に書いてください。
992
+ 人の確認が必要なステップにはその旨を注記し、
993
+ 重要な判断(スコープの境界、アクターの追加、業務ルールの解釈)は勝手にしないでください。
994
+ 情報が足りない場合は仮定で埋めずに質問してください。
995
+ 計画ができたらレビューと承認を求め、承認後に 1 ステップずつ実行してください。
996
+
997
+ Intent: <<達成したいことの宣言>>
998
+ 参照する成果物:
999
+ - 業務フロー・システムコンテキスト: docs/requirements/<project>/
1000
+ - ドメイン用語集: docs/design/<project>/glossary.md
1001
+ - In/Out リスト: docs/requirements/<project>/scope.md
1002
+
1003
+ 出力の規約:
1004
+ - ユースケースは docs/reference/ユースケース作成ガイド_AI-DLC版.md の完全形式テンプレートに従う
1005
+ - 主成功シナリオは 3〜9 ステップ、UI と実装の詳細を書かない
1006
+ - 受入条件は Given/When/Then で一意に判定できる形にする
1007
+ - 置いた仮定は「AI の仮定」欄に明記する
1008
+ ```
1009
+
1010
+ ### 例外条件の洗い出し
1011
+
1012
+ ```markdown
1013
+ UC-001 の主成功シナリオについて、各ステップで起こり得る例外条件を
1014
+ 次の観点で網羅的に列挙してください。
1015
+ - 入力の異常(欠落・形式・範囲)
1016
+ - 外部サービスの障害・タイムアウト
1017
+ - 並行処理・二重送信
1018
+ - 権限・認証
1019
+ - データ不整合・状態の矛盾
1020
+ - 業務ルール違反
1021
+
1022
+ 各条件について、発生可能性と利害関係者への影響を付記してください。
1023
+ 採用するかどうかは私が判断します。勝手に拡張へ追記しないでください。
1024
+ ```
1025
+
1026
+ ### Unit へのまとめ
1027
+
1028
+ ```markdown
1029
+ あなたは経験豊富なソフトウェアアーキテクトです。
1030
+ docs/requirements/<project>/stories.md のユーザーストーリーを、
1031
+ 独立して開発・デプロイできる複数の Unit にまとめてください。
1032
+ 各 Unit は凝集度の高いストーリーを含み、Unit 間は疎結合にします。
1033
+
1034
+ 計画を units_plan.md に書き、承認後に実行してください。
1035
+ 出力:
1036
+ - Unit ごとの定義(目的・含まれるストーリー・NFR・リスク)
1037
+ - Unit 間の依存関係(DAG)
1038
+ - ユースケース × Unit × ストーリーの対応表
1039
+ Unit の境界について判断に迷う点は質問してください。
1040
+ ```
1041
+
1042
+ ### ブラウンフィールドのリバースエンジニアリング
1043
+
1044
+ ```markdown
1045
+ あなたは経験豊富なソフトウェアエンジニアです。
1046
+ apps/<project>/ の既存コードから、次を復元してください。
1047
+ 1. 静的モデル:コンポーネント・責務・関係
1048
+ 2. 動的モデル:主要なユースケースを実現するコンポーネント間の相互作用
1049
+ 3. 既存のユースケース候補(ユーザー目的レベル)
1050
+
1051
+ コードに埋め込まれた条件分岐は、業務ルールの候補として別に列挙してください。
1052
+ 使われていない経路や不明な意図は、推測せずに「要確認」として印を付けてください。
1053
+ 計画を re_plan.md に書き、承認後に実行してください。
1054
+ ```
1055
+
1056
+ ---
1057
+
1058
+ ## 14. よくある問題と対策
1059
+
1060
+ ### 問題パターンと解決策
1061
+
1062
+ XP 版の問題パターンはすべて有効です。AI-DLC 版ではさらに AI 特有の問題を加えます。
1063
+
1064
+ | 問題 | 症状 | 解決策 |
1065
+ | :--- | :--- | :--- |
1066
+ | スコープ不明確 | 要求が増え続ける | In/Out リスト作成。AI に渡せる範囲も明示 |
1067
+ | レベル混在 | ステップが不均一 | レベルアイコン使用。AI に分割案を出させる |
1068
+ | UI 記述 | 実装に依存 | 意図の記述に変更。AI のガードレールに追加 |
1069
+ | 長すぎる | 10 ステップ以上 | サブユースケース分割 |
1070
+ | 曖昧な記述 | 解釈が複数。AI の実装が意図とずれる | 具体例とドメイン用語の追加。セマンティクス密度を上げる |
1071
+ | 保証なし | 目的が不明 | 利害関係者分析 |
1072
+ | 過剰設計 | AI が Intent に無い機能を足す | 削除し、削除理由を記録。Intent を狭く書く |
1073
+ | 幻覚アクター | 存在しないロールが登場 | 業務フロー・システムコンテキストとの照合を承認ゲートに組み込む |
1074
+ | 仮定の放置 | 「〜と想定」が確認されずに実装まで進む | 「AI の仮定」欄を必須にし、承認ゲートで確認する |
1075
+ | 用語のゆれ | AI が同じ概念を別エンティティで生成 | ドメイン用語集を先に整備し、AI に参照させる |
1076
+ | 例外の過剰 | AI が対応不要な例外まで拡張に入れる | 取捨選択の観点(第 7 章)で判断し、削除した条件を記録 |
1077
+
1078
+ ### アンチパターン
1079
+
1080
+ ```plantuml
1081
+ @startuml
1082
+ title ユースケースのアンチパターン(AI-DLC 版)
1083
+
1084
+ rectangle "❌ 悪い例" as bad {
1085
+ usecase "データを処理する" as UC1
1086
+ usecase "画面を表示する" as UC2
1087
+ usecase "DynamoDB に保存する" as UC3
1088
+ usecase "AI が注文を分析する" as UC4
1089
+ }
1090
+
1091
+ rectangle "✅ 良い例" as good {
1092
+ usecase "注文を確定する" as UC5
1093
+ usecase "在庫を確認する" as UC6
1094
+ usecase "支払いを処理する" as UC7
1095
+ }
1096
+
1097
+ note bottom of bad : 技術的すぎる\nUI 依存\n実装の先取り\nAI をアクター扱い
1098
+ note bottom of good : ビジネス目的\n実装独立\n価値が明確
1099
+ @enduml
1100
+ ```
1101
+
1102
+ ---
1103
+
1104
+ ## 15. 本プロジェクトの分析スキルへの適用
1105
+
1106
+ 本プロジェクトの分析スキルは XP 版のガイドを前提にしています。AI-DLC 版で運用する場合の読み替えは次のとおりです。
1107
+
1108
+ | スキル | XP 版の運用 | AI-DLC 版の読み替え |
1109
+ | :--- | :--- | :--- |
1110
+ | `analyzing-requirements` | RDRA 2.0 で要件を整理 | ビジネスコンテキスト・システムコンテキストを AI に渡す前提情報として整備。アクターの実在性検証の根拠にする |
1111
+ | `analyzing-usecases` | ユースケース → ストーリーを導出 | Mob Elaboration の手順(第 4 章)で AI に初稿を書かせ、モブが検証。ストーリーを Unit にまとめ、依存 DAG とストーリーマップを追加で生成 |
1112
+ | `analyzing-domain-model` | ドメインモデル設計 | ドメイン用語集を先に整備し、ユースケースとドメインモデルで共通に参照 |
1113
+ | `analyzing-review` | 分析成果物のマルチパースペクティブレビュー | AI 生成ユースケースの検証観点(第 9 章)をレビュー観点に加える。参照実装の product-lead レビュアーに相当 |
1114
+ | `analyzing-test-strategy` | テスト戦略の策定 | テスト戦略の水準(Minimal/Standard/Comprehensive)を決め、ユースケースからのテスト生成方針に反映 |
1115
+ | `validating-iteration-plan` | 計画と設計の整合性検証 | ユースケース × Unit × ストーリーの対応表で、Bolt 計画からのトレーサビリティを検証 |
1116
+ | `creating-journal` | 判断と学びの記録 | 削除した拡張条件・確認した仮定・AI の振る舞いへの修正を記録し、ガードレールに反映 |
1117
+
1118
+ ユースケースとストーリーの配置は [ドキュメント構成ガイド](ドキュメント構成ガイド.md) に従い、`docs/requirements/<project>/` に置きます。ドメイン用語集は `docs/design/<project>/` に置き、ユースケース・ドメインモデル・データモデルから共通に参照します。
1119
+
1120
+ ---
1121
+
1122
+ ## まとめ
1123
+
1124
+ ### ユースケース作成の原則(AI-DLC 版)
1125
+
1126
+ 1. **契約として書く**
1127
+
1128
+ - ユースケースとストーリーは利害関係者との契約であり、AI に渡す実装の契約でもある
1129
+ - 人が読んで自然で、AI が一意に解釈できる記述にする
1130
+
1131
+ 2. **AI が書き、人が検証する**
1132
+
1133
+ - 初稿・例外条件の網羅・テスト生成は AI に任せる
1134
+ - 過剰設計・設計不足・幻覚・仮定の放置を人が検証する
1135
+
1136
+ 3. **段階的詳細化を承認ゲートにする**
1137
+
1138
+ - 精度レベルごとに承認し、誤りを下流に流さない
1139
+ - 削除した条件と確認した仮定を記録し、次の Bolt に再利用する
1140
+
1141
+ 4. **Unit とテストにつなげる**
1142
+
1143
+ - ストーリーを凝集度で Unit にまとめ、依存 DAG で並列性を確保する
1144
+ - 受入条件を Given/When/Then で書き、AI のテスト生成と人の検証の基準にする
1145
+
1146
+ ### クイックリファレンス
1147
+
1148
+ #### アイコン凡例
1149
+
1150
+ - 🏢 組織スコープ
1151
+ - 💻 システムスコープ
1152
+ - 💾 コンポーネントスコープ
1153
+ - ☁️ 要約レベル(Intent・Unit)
1154
+ - 🌊 ユーザー目的レベル(Unit 内のユースケース・ストーリー)
1155
+ - 🐟 サブ機能レベル(Bolt のステップ)
1156
+
1157
+ #### 記述の黄金律
1158
+
1159
+ - 3〜9 ステップ
1160
+ - アクターの意図を記述
1161
+ - UI 詳細と実装詳細は書かない
1162
+ - 成功する目的として表現
1163
+ - ドメイン用語集の語を使う
1164
+ - 業務ルールは数値と条件で明示する
1165
+ - AI の仮定は必ず明記し、承認ゲートで確認する
1166
+
1167
+ このガイドを参考に、AI と協働してプロジェクトに適したユースケースを作成し、AI-DLC の開発プロセスに統合してください。