@k2works/claude-code-booster 6.3.1 → 6.5.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.
Files changed (15) hide show
  1. package/lib/assets/.claude/skills/creating-development-strategy/SKILL.md +64 -4
  2. package/lib/assets/.claude/skills/developing-backend/SKILL.md +39 -1
  3. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +39 -1
  4. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +37 -1
  5. package/lib/assets/docs/article/index.md +1 -0
  6. package/lib/assets/docs/index.md +37 -37
  7. package/lib/assets/docs/log.md +28 -25
  8. package/lib/assets/docs/reference/BDD/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +766 -0
  9. package/lib/assets/docs/reference/LivingDocumentation/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +400 -0
  10. package/lib/assets/docs/reference/index.md +66 -61
  11. package/lib/assets/docs/reference//343/202/242/343/203/216/343/203/206/343/203/274/343/202/267/343/203/247/343/203/263/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +268 -0
  12. package/lib/assets/docs/reference//343/202/254/343/202/244/343/203/211/343/203/204/343/202/242/343/203/274/343/203/273/343/202/265/343/202/244/343/203/210/343/202/267/343/203/274/343/202/244/343/203/263/343/202/260/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +192 -0
  13. package/lib/assets/docs/reference//343/203/200/343/202/244/343/203/212/343/203/237/343/203/203/343/202/257/343/202/255/343/203/245/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/260/216/345/205/245/343/202/254/343/202/244/343/203/211.md +191 -0
  14. package/lib/assets/mkdocs.yml +13 -0
  15. package/package.json +1 -1
@@ -0,0 +1,400 @@
1
+ ---
2
+ type: Reference
3
+ title: "Living Documentation導入ガイド"
4
+ description: "『Living Documentation』に基づき、ドキュメントの再定義と 4 原則、知識の活用・拡張・キュレーション、ドキュメントの自動化(Living Glossary・Living Diagram)、ランタイムドキュメンテーションを整理し、本プロジェクトの成果物(ADR・コミット規約・OKF・PlantUML・テスト)への適用方法をまとめた導入ガイド。"
5
+ tags: [reference]
6
+ status: draft
7
+ generated: { by: claude-code/claude-opus-5-5, at: 2026-09-29T00:00:00Z }
8
+ ---
9
+
10
+ # Living Documentation導入ガイド
11
+
12
+ Living Documentation とは、**ソフトウェア開発に関わる知識に注意を払うこと**です。重要な知識の多くはすでにコード・テスト・設定・ツールの中にあります。それを別文書に書き写すのではなく、ある場所から必要な場所へ取り出し、足りない意図と根拠だけを補い、システムと同じ速さで更新され続ける形にします。
13
+
14
+ 本ガイドは、Cyrille Martraire『Living Documentation』の第 1 章・第 3〜7 章の要点を整理し、本プロジェクトでの適用方法を示します。第 2 章(BDD)は [BDD導入ガイド](BDD導入ガイド.md) を参照してください。
15
+
16
+ ## ドキュメントを再定義する
17
+
18
+ ### ドキュメントとは知識を伝えるプロセスである
19
+
20
+ ドキュメントは「価値ある知識を、いま他の人へ、そして将来の人へ伝えるプロセス」です。人から人へ伝える**空間の軸(伝達)**と、いまから未来へ残す**時間の軸(保存)**の 2 つで捉えます。
21
+
22
+ 開発者が同じコードに関わる期間の半減期は約 3.1 年、コードの半減期は約 13 年といわれます。書いた人がいなくなった後もコードは残り続けます。この差を埋めるのがドキュメントの役割です。
23
+
24
+ ドキュメントの形は文書に限りません。対話、コードそのもの、ツール上の活動、そして「何もしない」ことも選択肢に含まれます。
25
+
26
+ ### デフォルトは書かない
27
+
28
+ ドキュメント化の対象は**価値のある知識だけ**です。長く役立つ知識、多くの人に関係する知識、重要でクリティカルな知識に絞ります。明確な理由がなければ書きません(The Default Is Don't)。
29
+
30
+ また、Naur の「理論構築としてのプログラミング」が示すとおり、プログラマの頭の中にある心的モデルは完全には共有できません。この限界を受け入れたうえで、伝えるべき知識を選びます。
31
+
32
+ ### Living Documentation の 4 原則
33
+
34
+ | 原則 | 要点 |
35
+ | :--- | :--- |
36
+ | **Reliable(信頼できる)** | 常にソフトウェアと同期している。既存の知識を活用し、正確性を保証する仕組みを持つ |
37
+ | **Low effort(低労力)** | 変更時の追加作業を最小にする。シンプルさ、標準の利用、変わらない内容(Evergreen)、リファクタリング耐性、内部ドキュメントを重視する |
38
+ | **Collaborative(協調的)** | 文書より会話を優先する。知識をアクセス可能にし、チームで所有する |
39
+ | **Insightful(洞察を与える)** | 意図的な意思決定を促し、学びを埋め込み、実装の実態を映す鏡になる |
40
+
41
+ ### 最重要の 4 点
42
+
43
+ 1. 文書より**会話と協働**を重視する。知識の大半はすでにあり、取り出されるのを待っている
44
+ 2. 知識の大半は既存の成果物にある。**文脈・意図・根拠**で補うだけでよい
45
+ 3. **変化の頻度**に注意を払う
46
+ 4. ドキュメントを考えることは、システムの**品質(または品質の欠如)に注意を向ける**手段である
47
+
48
+ ### 変化の速さでアプローチを選ぶ
49
+
50
+ 知識がどれくらいの頻度で変わるかによって、ドキュメントへのアプローチを選びます。
51
+
52
+ ```plantuml
53
+ @startuml
54
+ title 変化の速さで選ぶドキュメントへのアプローチ
55
+
56
+ rectangle "Avoiding\n書かない" as A
57
+ rectangle "Stable\n変わらない知識を書く" as S
58
+ rectangle "Refactorable\nコード・テスト・プレーンテキストで持つ" as R
59
+ rectangle "Automating\nビルド時・実行時に生成する" as Au
60
+ rectangle "Beyond\nドキュメントを通じて設計を改善する" as B
61
+
62
+ A -right-> S
63
+ S -right-> R
64
+ R -down-> Au
65
+ Au -left-> B
66
+
67
+ note bottom of A
68
+ 努力に値しない知識は書かない。
69
+ 対話や根本原因の修正で解決する
70
+ end note
71
+ note bottom of R
72
+ IDE のリファクタリングで
73
+ コードと同期を保てる
74
+ end note
75
+ @enduml
76
+ ```
77
+
78
+ | アプローチ | 対象となる知識 | 手段 |
79
+ | :--- | :--- | :--- |
80
+ | Avoiding | 努力に値しない知識 | 対話、根本原因の修正 |
81
+ | Stable | ほとんど変わらない知識 | 単純な文書(ビジョン、原則) |
82
+ | Refactorable | コードと一緒に変わる知識 | 命名、型、テスト、プレーンテキストの図 |
83
+ | Automating | 頻繁に変わり、成果物から抽出できる知識 | 生成された用語集・図・レポート |
84
+ | Beyond | ドキュメント化が難しいこと自体が問題を示す知識 | 設計の改善 |
85
+
86
+ ### パターンの全体像
87
+
88
+ 『Living Documentation』は約 100 のパターンを次のカテゴリに整理しています。本ガイドでは太字のカテゴリを扱います。
89
+
90
+ | カテゴリ | 代表的なパターン |
91
+ | :--- | :--- |
92
+ | Rethinking Documentation | 知識はすでにそこにある、内部ドキュメント優先、正確性の仕組み |
93
+ | **Knowledge Exploitation** | 単一情報源からの公開、整合性検証、散在する事実の統合、既成のドキュメント |
94
+ | **Knowledge Augmentation** | アノテーション、規約、サイドカーファイル、根拠の記録、コミットメッセージ |
95
+ | **Knowledge Curation** | 動的キュレーション、コアのハイライト、模範例、ガイドツアー |
96
+ | **Automating Documentation** | Living Document、Living Glossary、Living Diagram、一図一物語 |
97
+ | **Runtime Documentation** | Visible Tests、Visible Workings、Introspectable Workings |
98
+ | Refactorable Documentation | コード自体をドキュメントに、プレーンテキストの図 |
99
+ | Stable Documentation | Evergreen content、永続的な命名、リンクレジストリ |
100
+ | How to Avoid Traditional Documentation | 雑談、使い捨て文書、オンデマンド文書、新人の驚きの記録 |
101
+ | Beyond Documentation: Living Design | ドキュメントに耳を傾ける、意図的な意思決定、自らを不要にする文書 |
102
+ | Living Architecture | 問題を文書化する、Decision log、Test-driven architecture |
103
+ | Introducing Living Documentation | 小さな実験から始める、新規作業から適用する |
104
+ | Documenting Legacy Applications | Bubble context、Superimposed structure、External annotations |
105
+
106
+ ### DDD との関係
107
+
108
+ Living Documentation に投資すると DDD にも近づけます。「Living Documentation」という用語自体が BDD に由来し、BDD は TDD と DDD のユビキタス言語の組み合わせです。
109
+
110
+ | Living Documentation | DDD パターン |
111
+ | :--- | :--- |
112
+ | Code as documentation | モデル駆動設計、意図を表すインターフェース、宣言的設計 |
113
+ | Living glossary | ユビキタス言語(コードが用語集の唯一の参照元になる) |
114
+ | Listen to the documentation | Hands-on modelers(高速なフィードバック) |
115
+ | Change-friendly documentation | 深い洞察へのリファクタリング |
116
+ | Curation | Highlighted / Segregated / Abstract core |
117
+ | Ready-made knowledge | 確立された形式知の活用 |
118
+ | Evergreen document | Domain vision statement |
119
+
120
+ DDD の実践は [ドメインモデル設計ガイド](ドメインモデル設計ガイド.md) を参照してください。
121
+
122
+ ## 知識を活用する(Knowledge Exploitation)
123
+
124
+ 知識はすでにソースコード、設定ファイル、テスト、実行時の挙動、ツールのデータ、関係者の頭の中にあります。従来のドキュメントはそれを別文書に複製するため、元が変わるたびに古くなります。知識のある場所から必要な場所へ取り出す仕組みを、**軽量・確実・低コスト**で作ります。
125
+
126
+ ### 権威ある情報源を特定する
127
+
128
+ 同じ知識が複数の場所にあるとき、決定の変更が最も正確に反映される場所を**権威ある情報源**とします。そこから取り出す仕組みを用意し、仕組みそのものは単純に保ちます。
129
+
130
+ ### 単一情報源から公開する(Single-Source Publishing)
131
+
132
+ 知識は 1 か所にだけ置き、必要なときにそこから文書を生成して公開します。
133
+
134
+ - DDL やスキーマから ER 図やテーブル定義書を生成する
135
+ - 1 つの Markdown 原稿から HTML・PDF など複数の形式を生成する
136
+ - 公開物にはバージョンと最新版へのリンクを付ける
137
+ - 公開物は編集しにくくし、元を直すよう促す
138
+
139
+ ### 整合性を検証する仕組み(Reconciliation Mechanism)
140
+
141
+ 知識がどうしても複数の場所に重複する場合は、不一致を**自動テストで即座に検出**します。
142
+
143
+ - BDD のシナリオとコードを、ステップ定義で結びつける。食い違えばテストが失敗する
144
+ - 前提が真であることを確かめるカナリアテストを置く
145
+ - 外部に公開した契約(列挙型の値、API のスキーマ)は、変更を検知するテストで守る
146
+
147
+ ### 散在する事実を統合する(Consolidating Dispersed Facts)
148
+
149
+ 知識が多数の小さな部品に分散しているときは、全体像を自動で集めて再構成します。あるインターフェースの全実装の一覧、依存関係の集約、クラス階層の図などが該当します。
150
+
151
+ 統合した結果を新しい真実の源にしてはいけません。キャッシュとして扱い、いつでも捨てて作り直せるようにします。
152
+
153
+ ### 既成のドキュメントと共通語彙を使う(Ready-Made Documentation)
154
+
155
+ TDD、DDD、デザインパターン、継続的デリバリーなど、自分たちの知識の多くは書籍やブログですでに文書化されています。車を作るのにエンジンの仕組みを書き直す必要はありません。標準的な文献へリンクし、標準的な名前と用語を採用します。
156
+
157
+ Adapter、State、Visitor のようなパターン名を使うと、短い言葉で設計意図が伝わります。語彙をそろえることは DDD のユビキタス言語の考え方にもつながります。
158
+
159
+ ## 知識を補う(Knowledge Augmentation)
160
+
161
+ ソースコードは「どう作るか」は語りますが、「なぜそうしたか」は語りません。足りない**意図・判断・根拠**を、**コードに近い場所に、ツールが解析できる形で**補います。補う手段は、内部ドキュメント(アノテーション・規約)、外部ドキュメント(サイドカーファイル・メタデータ DB)、DSL の 3 系統です。
162
+
163
+ ### アノテーションで補う
164
+
165
+ アノテーションは名前と属性を持つ型なので、ツールが扱いやすい補足手段です。導入手順は [アノテーション導入ガイド](アノテーション導入ガイド.md) を参照してください。
166
+
167
+ | 用途 | 例 |
168
+ | :--- | :--- |
169
+ | ステレオタイプ | `@ValueObject`、`@Entity`、`@DomainService` で DDD の役割を明示する |
170
+ | 性質 | `@Immutable`、`@SideEffectFree` で振る舞いの性質を明示する |
171
+ | レイヤー | `package-info.java` に `@Layer` を付け、依存違反をツールで検出する |
172
+ | 根拠 | `@Decision(rationale = "...")` のように判断した箇所に理由を付ける |
173
+
174
+ - 独自アノテーションのパッケージ名は、参照する文献に対応させる(例: `com.acme.annotation.ddd`)
175
+ - 大半が該当する性質は付けず、**例外だけ**に付ける(全クラスが不変なら `@Mutable` だけを付ける)
176
+ - 感情的なアノテーション(`@WTF` など)で型階層を汚さない
177
+
178
+ ### 本質的な知識だけを付ける
179
+
180
+ | 種類 | 説明 | 扱い |
181
+ | :--- | :--- | :--- |
182
+ | 本質的(intrinsic) | 要素自体の性質。要素を消せば知識も消える | 付けてよい |
183
+ | 外在的(extrinsic) | 他との関係や状況に依存する(所有者、配置場所など) | 付けない |
184
+
185
+ 判断基準は「要素を変更したとき、最小の作業で済むか」です。外在的な知識まで付けると、頻繁に変更が入り保守コストが増えます。
186
+
187
+ ### 規約で補う
188
+
189
+ 命名や構造の規約そのものがドキュメントになります(`*.domain.*` と `*.infra.*` のパッケージ分割など)。規約は README に書くか、他で公開された規約を採用するだけでも構いません。
190
+
191
+ 規約は分類には強いものの、根拠や代替案は書きにくいという限界があります。また、一貫して守られてこそ機能するため、ArchUnit などの静的解析で検証します。
192
+
193
+ ### サイドカーファイルとメタデータ DB
194
+
195
+ 元ファイルに触れられない場合は、同名で拡張子が違うサイドカーファイルや、メタデータ DB に知識を置きます。ただし名前の変更や移動で関係が壊れやすいため、最後の手段とし、可能ならコード内のアノテーションを優先します。
196
+
197
+ ### 根拠を記録する
198
+
199
+ 設計判断は問題に対して選んだ答えです。後から「何を考えていたのか」とならないよう、次を残します。
200
+
201
+ - その時点の文脈(優先度・制約)
202
+ - 問題・要件
203
+ - 選んだ解決策と理由
204
+ - 却下した代替案と理由
205
+
206
+ 根拠が残っていないと、変更が怖くなるか、不用意に変更して害を及ぼします。**根拠の記録は変更を後押しします**。
207
+
208
+ - 推測で書かず、実際に作ったものの必要に応じて書く(just-in-time)
209
+ - 同種の判断が繰り返されるなら、原則を一度だけ文書化し、各適用箇所から参照する
210
+ - チームの拠り所となる書籍・ブログを参考文献として残す
211
+ - モジュールごとの設計スタイル(関数型、DDD など)を宣言する
212
+
213
+ ### コミットメッセージで補う
214
+
215
+ コミットメッセージは変更ごとのドキュメントです。書くことで「これは 1 つの変更か、分割すべきか」を考えさせます(Thinking)。そのほか、意図の説明(Explaining)、変更履歴の元データ(Reporting)、規約に沿った記述(Guidelines)の役割を持ちます。
216
+
217
+ ```text
218
+ <type>(<scope>): <subject>
219
+
220
+ <body>
221
+
222
+ <footer>
223
+ ```
224
+
225
+ - type は `feat`・`fix`・`docs`・`style`・`refactor`・`perf`・`test`・`chore`
226
+ - scope はチームで一覧を合意する
227
+ - 破壊的変更は footer に `BREAKING CHANGE:` を書く
228
+ - Issue は footer に `Closes #123` のように参照する
229
+
230
+ 規約に沿えば、機械的に抽出して CHANGELOG を自動生成できます。
231
+
232
+ ## 知識を選び抜く(Knowledge Curation)
233
+
234
+ コードベースには膨大な知識があります。その大半を捨てて、読み手の目的に必要な少数だけを選ぶのがキュレーションです。美術展のキュレーターが作品を選び、解説を付け、展示全体で 1 つの物語を伝えるように、開発者も自分のコードのキュレーターになります。
235
+
236
+ ### 動的にキュレーションする
237
+
238
+ 固定のリストで選ぶのではなく、**安定した基準**で動的に選びます。名前や URL で直接参照すると、コピー&ペーストと同じく陳腐化します。導入手順は [ダイナミックキュレーション導入ガイド](ダイナミックキュレーション導入ガイド.md) を参照してください。
239
+
240
+ 安定した選択基準の例:
241
+
242
+ - フォルダ構成
243
+ - 命名規約(「名前が `Repository` で終わる型」)
244
+ - タグ・アノテーション(「このアノテーションが付いた全クラス」)
245
+ - リンクレジストリ
246
+ - ツールの出力
247
+
248
+ 1 つの知識の集まりから、読み手や目的ごとに複数のドキュメントを作れます。BDD のシナリオに `@acceptancecriteria` や `@keyexample` などのタグを付け、目的別のダイジェストを作るのが好例です。
249
+
250
+ ### コアと模範例をハイライトする
251
+
252
+ - **コアのハイライト**: `@CoreConcept` のようなアノテーションでコア概念をマークする。名前の変更や移動にも追従し、IDE の検索で常に最新の一覧が得られる
253
+ - **模範例(Exemplar)**: 真似してほしいコードに `@Exemplar` を付ける。完璧である必要はなく、弱点があれば理由も添える。目的はコピーではなく、ペアプログラミングやコードレビューでの会話のきっかけにすること
254
+
255
+ ### ガイドツアーとサイトシーイング・マップ
256
+
257
+ - **サイトシーイング・マップ**: 見どころを 5〜7 個、多くても 10 個以内に絞ってタグ付けする(`@KeyLandmark` など)
258
+ - **ガイドツアー**: 順序付きの見どころ。`@GuidedTour(name, description, rank)` で名前・説明・順序を付け、走査して順番どおりのレポートを生成する
259
+
260
+ タグを付けすぎるとコードを汚すため、控えめに使います。導入手順は [ガイドツアー・サイトシーイング導入ガイド](ガイドツアー・サイトシーイング導入ガイド.md) を参照してください。
261
+
262
+ ## ドキュメントを自動化する(Automating Documentation)
263
+
264
+ ### Living Document
265
+
266
+ Living Document は、記述対象のシステムと**同じペースで進化する**ドキュメントです。手作業では維持できないため、変更のたびに自動で生成します。
267
+
268
+ ```plantuml
269
+ @startuml
270
+ title Living Document を作る 4 ステップ
271
+
272
+ start
273
+ :範囲を選ぶ;
274
+ note right: ソースコード管理などデータの保管場所から
275
+ :目的に沿ってフィルタする;
276
+ :目的に関係する内容を抽出する;
277
+ note right: 射影
278
+ :出力形式に変換する;
279
+ note right: Markdown、図、HTML、PDF など
280
+ stop
281
+ @enduml
282
+ ```
283
+
284
+ 変換が複雑なら中間モデルを連鎖させます。1 つの図やリストは **5〜9 項目程度**に収めます。
285
+
286
+ ### Living Glossary(生きた用語集)
287
+
288
+ ユビキタス言語の用語集を、コード自身から生成します。クラス名・メソッド名・列挙型の定数名はドメイン言語の一部だからです。
289
+
290
+ - すべてのコードがドメインに関係するわけではないため、アノテーションなどで**選択的にフィルタ**する
291
+ - `toString()` や `equals()`、技術的なフィールドは除外する
292
+ - 境界づけられたコンテキストごとに用語集を分ける(`package-info.java` に `@BoundedContext` を宣言する)
293
+ - 成功の条件は**コードが宣言的であること**。コードが良いほど用語集も良くなる
294
+
295
+ 用語集はそれ自体が目的ではありません。読みにくければ名前やコードを直すきっかけになる、**コードの質を改善するためのフィードバック機構**です。
296
+
297
+ ### Living Diagram(生きた図)
298
+
299
+ **1 つの図には 1 つのストーリー(One diagram, one story)**を語らせます。情報が多すぎる図は、情報がない図と同じくらい役に立ちません。リバースエンジニアリングですべてを描くのはアンチパターンです。
300
+
301
+ 作り方は Living Document と同じく、ソースをスキャンし、関連部分をフィルタし、意味のある情報を抽出し、レイアウトしてレンダリングします。出力には Graphviz(DOT 形式)や PlantUML を使います。
302
+
303
+ | 図の種類 | 特徴 | 使いどころ |
304
+ | :--- | :--- | :--- |
305
+ | ナプキンスケッチ | 使い捨て | 一時的な会話 |
306
+ | 独自ツールの図 | 見た目は良いが差分管理が難しい | 避ける |
307
+ | プレーンテキストの図 | 差分管理しやすい | 長く使う図 |
308
+ | コード駆動の図 | リファクタリングに強い | 長く使う図 |
309
+ | Living Diagram | コードから自動生成 | 頻繁に変わる構造 |
310
+
311
+ 見やすさのガイドライン:
312
+
313
+ - 軸に意味を持たせる(左に API、右に SPI など)
314
+ - 近さは類似性、包含は特殊化というように、レイアウトに意味を持たせる
315
+ - 要素のサイズや色に意味を持たせる(重要度、深刻度)
316
+ - 線が 1 本でも交差するなら複雑すぎる可能性がある
317
+
318
+ 代表的な Living Diagram:
319
+
320
+ - **ヘキサゴナルアーキテクチャ図**: ドメインを中心に置き、依存が外から内への一方向であることを示す。違反する依存は赤で強調する
321
+ - **ビジネスドメイン概要図**: パッケージに `@BusinessDomain` を付けて関係を宣言し、そこから図を生成する
322
+ - **コンテキスト図**: `@ExternalActor` やサイドカーファイルで外部アクターを宣言する。許可リストと組み合わせれば、想定外の依存を検知できる
323
+
324
+ Living Diagram は**コードをありのままに見せ、設計の質について正直にしてくれます**。設計会議やコードレビューで「不都合な真実」に気づくきっかけになります。ただし、自動化する前にまず手作業で試し、手間に見合うかを判断します。
325
+
326
+ ## 実行時の知識をドキュメントにする(Runtime Documentation)
327
+
328
+ **質問に答えられるものはすべてドキュメントとみなせます**。動くソフトウェアで質問に答えられるなら、そのソフトウェア自体がドキュメントの一部です。分散アーキテクチャやクラウドが広がるほど、実行時の知識の価値は増します。
329
+
330
+ ### 生きたサービス図
331
+
332
+ 分散トレーシング(Zipkin、OpenTelemetry など)は応答時間の調査に使われますが、同時にアーキテクチャの生きた図にもなります。各サービスが Trace ID・Span ID・Parent ID を伝搬し、集めたスパンを集約するとサービス間の依存グラフが得られます。条件別のタグ(キャッシュのヒット/ミスなど)を付ければ、条件ごとの図も描けます。
333
+
334
+ ### Visible Workings と Visible Tests
335
+
336
+ - **Visible Workings**: ソフトウェアが内部の仕組みを外から見えるようにする。「この結果はどう計算したか」に実行時に答えられる。給与計算や銀行明細など、説明責任が求められる分野で特に有用
337
+ - **Visible Tests**: 良いテストは失敗しない限り沈黙している。テストの出力をドメイン固有の図として可視化し、探索段階ではまず図を眺め、後から一部をアサーションに変えていく
338
+
339
+ ### イベントソーシングのテストをシナリオにする
340
+
341
+ イベントソーシングのテストは、**Given(過去のイベント)/ When(コマンド)/ Then(新しいイベント)** の形になり、そのままビジネスの振る舞いのシナリオになります。コマンドを命令形、イベントを過去形で命名すれば、BDD フレームワークがなくても読める文章を出力できます。
342
+
343
+ ```text
344
+ Given Batch Created With 20 Cookies
345
+ When Eat Cookies 10 cookies
346
+ Then 10 Cookies Eaten and 10 remaining
347
+ ```
348
+
349
+ テスト実行中に集めたコマンドとイベントを、集約を中心に「コマンド → 集約(handled)」「集約 → イベント(emitted)」でつなぐと、ユースケース全体の生きた図になります。
350
+
351
+ ### 実行時のオブジェクトツリーを内省する
352
+
353
+ DI やファクトリが組み立てるオブジェクトツリーは、設定やリクエストで変わります。実際の構造を知るにはソースではなく実行時を見るのが確実です。
354
+
355
+ - **リフレクション**: ルートのインスタンスから宣言フィールドを再帰的に走査し、自分たちのパッケージだけに絞って出力する。クラスを汚さないが推奨はされない
356
+ - **Introspectable**: 各要素が `members()` でコラボレータを返すインターフェースを実装し、再帰的に走査する。決定木・ワークフロー・設定など、内部の動きを利用者や開発者に見せたい場合に最適
357
+
358
+ 最低限、設定に基づいて動く処理は、その設定を表示できるようにします。
359
+
360
+ ## 本プロジェクトでの適用
361
+
362
+ 本プロジェクトの成果物とプラクティスは、すでに多くが Living Documentation のパターンに対応しています。新しい仕組みを足す前に、次の対応を意識して既存の成果物を使います。
363
+
364
+ | パターン | 本プロジェクトの成果物・プラクティス | 参照 |
365
+ | :--- | :--- | :--- |
366
+ | 根拠の記録、Decision log | ADR(背景・決定・影響・代替案) | `creating-adr` スキル |
367
+ | コミットメッセージによる文書化 | Conventional Commits、CHANGELOG の自動生成 | `git-commit`・`developing-release` スキル |
368
+ | 整合性検証の仕組み | TDD の単体テスト、BDD のシナリオ | [BDD導入ガイド](BDD導入ガイド.md)、[コーディングとテストガイド(AI-DLC 版)](コーディングとテストガイド_AI-DLC版.md) |
369
+ | サイドカー・メタデータ | OKF のフロントマター(来歴・検証状態・ライフサイクル) | [OKF 導入ガイド](OKF導入ガイド_V0.2.md) |
370
+ | プレーンテキストの図 | PlantUML・Mermaid による図 | 各設計ガイド |
371
+ | Living Glossary | ドメインモデルのユビキタス言語、用語集 | [ドメインモデル設計ガイド](ドメインモデル設計ガイド.md)、[AI-DLC 用語集](AI-DLC用語集.md) |
372
+ | 単一情報源からの公開 | Markdown を MkDocs で HTML として公開する | `operating-docs` スキル |
373
+ | 既成のドキュメント | リファレンス・記事シリーズへのリンク(複製しない) | [記事](../article/index.md) |
374
+ | 判断と学びの記録 | 開発ジャーナル(なぜそうしたか、どこで詰まったか) | `creating-journal` スキル |
375
+ | 規約による文書化 | ドキュメント構成ガイドによる配置規約 | [ドキュメント構成ガイド](ドキュメント構成ガイド.md) |
376
+
377
+ ### 導入の進め方
378
+
379
+ 1. **新規作業から始める**: 既存コード全体に適用せず、これから書くコードとドキュメントから適用する(Marginal documentation)
380
+ 2. **書く前に探す**: 知識がすでにコード・テスト・ADR・コミット履歴にないかを確認する。あればリンクするか生成する
381
+ 3. **根拠だけを補う**: コードから読み取れることは書かない。意図・判断・却下した代替案を ADR やコメントで補う
382
+ 4. **重複には検証を付ける**: やむを得ず重複させた知識には、不一致を検出するテストかチェックを用意する
383
+ 5. **図は 1 つのストーリーに絞る**: PlantUML の図は目的ごとに分け、5〜9 要素に収める
384
+ 6. **書きにくさを設計のシグナルにする**: 説明が難しい、図が交差だらけになるなら、ドキュメントではなく設計を直す
385
+
386
+ ### AI-DLC との関係
387
+
388
+ AI-DLC では「成果物は契約であり、コンテキストである」とされます。Living Documentation の原則に沿って成果物を永続化すると、AI に渡すコンテキストが常にコードと同期した状態になります。古い文書は AI の誤った判断の原因になるため、**Reliable(信頼できる)**の原則は AI-DLC では一層重要です。詳細は [AI-DLC 導入ガイド](AI-DLC導入ガイド.md) を参照してください。
389
+
390
+ ## まとめ
391
+
392
+ - ドキュメントは知識を伝えるプロセスであり、価値ある知識だけを対象にする。デフォルトは書かない
393
+ - 知識の大半はすでに成果物の中にある。権威ある情報源を特定し、単一情報源から公開し、重複には整合性検証を付ける
394
+ - コードに足りない意図と根拠を、本質的で変わりにくいものに限り、コードに近く機械が扱える形で補う
395
+ - 膨大な知識から読み手の目的に必要なものだけを、安定した基準で動的に選ぶ
396
+ - 頻繁に変わる知識は自動生成する。1 つの図には 1 つのストーリーを語らせる
397
+ - 動くソフトウェアとテストの実行結果も、質問に答えられるならドキュメントである
398
+ - Living Documentation とは、コードベースの中に知識のシステムを設計することであり、コーディングと同じく設計のスキルが要る
399
+
400
+ 出典: *Living Documentation: Continuous Knowledge Sharing by Design*(Cyrille Martraire 著)第 1 章「Rethinking Documentation」、第 3 章「Knowledge Exploitation」、第 4 章「Knowledge Augmentation」、第 5 章「Living Curation」、第 6 章「Automating Documentation」、第 7 章「Runtime Documentation」の要約
@@ -1,61 +1,66 @@
1
- # リファレンス
2
-
3
- 開発ガイドラインやベストプラクティスのリファレンスドキュメントです。
4
-
5
- ## ドキュメント一覧
6
-
7
- ### 基本理念
8
-
9
- - [よいソフトウェアとは](./よいソフトウェアとは.md)
10
- - [ロジカルシンキング](./ロジカルシンキング.md)
11
- - [開発ガイド](./開発ガイド.md)
12
- - [開発ガイド(AI-DLC 版)](./開発ガイド_AI-DLC版.md) - 開発ライフサイクルを Inception・Construction・Operation で読み替え、各活動の AI と人の分担と AI-DLC 版ガイドへの入口を示す
13
- - [エクストリームプログラミング](./エクストリームプログラミング.md)
14
- - [AI-DLC 導入ガイド](./AI-DLC導入ガイド.md) - AWS が提唱する AI-DLC の 10 原則・成果物・フェーズ・参照実装(aidlc-workflows)と、XP ベースの開発ライフサイクル・Skills 体系への組み込み方
15
- - [AI-DLC 用語集](./AI-DLC用語集.md) - AI-DLC の用語を基本概念・成果物・フェーズと儀式・計画・実装・参照実装の区分で定義し、XP・Scrum との対応を示す
16
- - [ドキュメント構成ガイド](./ドキュメント構成ガイド.md) - 単一企業・統合戦略・複数プロジェクトのコンセプトに基づく docs/ と apps/ の構成規約
17
-
18
- ### 経営・ビジネス
19
-
20
- - [企業経営論](./企業経営論.md)
21
- - [運営管理](./運営管理.md)
22
-
23
- ### 分析・設計ガイド
24
-
25
- - [経営戦略分析ガイド](./経営戦略分析ガイド.md)
26
- - [ビジネスアーキテクチャ分析ガイド](./ビジネスアーキテクチャ分析ガイド.md)
27
- - [要件定義ガイド](./要件定義ガイド.md)
28
- - [ユースケース作成ガイド](./ユースケース作成ガイド.md)
29
- - [ユースケース作成ガイド(AI-DLC 版)](./ユースケース作成ガイド_AI-DLC版.md) - Mob Elaboration で AI が初稿を書き人が検証する手順、人と AI の契約としての記述基準、AI 生成物の検証観点
30
- - [アーキテクチャ設計ガイド](./アーキテクチャ設計ガイド.md)
31
- - [データモデル設計ガイド](./データモデル設計ガイド.md)
32
- - [ドメインモデル設計ガイド](./ドメインモデル設計ガイド.md)
33
- - [UI 設計ガイド](./UI設計ガイド.md)
34
- - [インフラ設計ガイド](./インフラ設計ガイド.md)
35
-
36
- ### 品質・テスト
37
-
38
- - [テスト戦略ガイド](./テスト戦略ガイド.md)
39
- - [非機能要件定義ガイド](./非機能要件定義ガイド.md)
40
- - [運用要件定義ガイド](./運用要件定義ガイド.md)
41
- - [コーディングとテストガイド](./コーディングとテストガイド.md)
42
- - [コーディングとテストガイド(AI-DLC 版)](./コーディングとテストガイド_AI-DLC版.md) - AI が Red-Green-Refactor を回し人が承認ゲートで全行検証する Bolt 実装フロー、AI 生成コード・テストのレビュー観点、ガードレール
43
-
44
- ### 開発・運用
45
-
46
- - [リリースガイド](./リリースガイド.md)
47
- - [リリース・イテレーション計画ガイド](./リリース・イテレーション計画ガイド.md)
48
- - [リリース・イテレーション計画ガイド(AI-DLC 版)](./リリース・イテレーション計画ガイド_AI-DLC版.md) - Intent → Unit → Bolt の計画、承認ゲート駆動の検証、エントロピー評価による見積もりと進捗指標
49
- - [環境変数管理ガイド](./環境変数管理ガイド.md)
50
- - [言語別開発ガイド](./言語別開発ガイド.md)
51
- - [Java アプリケーション環境構築ガイド](./Javaアプリケーション環境構築ガイド.md)
52
- - [TypeScript アプリケーション環境構築ガイド](./TypeScriptアプリケーション環境構築ガイド.md)
53
- - [運用スクリプト作成ガイド](./運用スクリプト作成ガイド.md)
54
-
55
- ### ツール
56
-
57
- - [Codex CLI MCP アプリケーション開発フロー](./CodexCLIMCPアプリケーション開発フロー.md)
58
- - [Codex CLI MCP サーバー設定手順](./CodexCLIMCPサーバー設定手順.md)
59
- - [SonarQube ローカル環境セットアップ手順書](./SonarQubeローカル環境セットアップ手順書.md)
60
- - [Vim 操作マニュアル](./Vim操作マニュアル.md)
61
- - [OKF 導入ガイド(Open Knowledge Format v0.2)](./OKF導入ガイド_V0.2.md)
1
+ # リファレンス
2
+
3
+ 開発ガイドラインやベストプラクティスのリファレンスドキュメントです。
4
+
5
+ ## ドキュメント一覧
6
+
7
+ ### 基本理念
8
+
9
+ - [よいソフトウェアとは](./よいソフトウェアとは.md)
10
+ - [ロジカルシンキング](./ロジカルシンキング.md)
11
+ - [開発ガイド](./開発ガイド.md)
12
+ - [開発ガイド(AI-DLC 版)](./開発ガイド_AI-DLC版.md) - 開発ライフサイクルを Inception・Construction・Operation で読み替え、各活動の AI と人の分担と AI-DLC 版ガイドへの入口を示す
13
+ - [エクストリームプログラミング](./エクストリームプログラミング.md)
14
+ - [AI-DLC 導入ガイド](./AI-DLC導入ガイド.md) - AWS が提唱する AI-DLC の 10 原則・成果物・フェーズ・参照実装(aidlc-workflows)と、XP ベースの開発ライフサイクル・Skills 体系への組み込み方
15
+ - [AI-DLC 用語集](./AI-DLC用語集.md) - AI-DLC の用語を基本概念・成果物・フェーズと儀式・計画・実装・参照実装の区分で定義し、XP・Scrum との対応を示す
16
+ - [ドキュメント構成ガイド](./ドキュメント構成ガイド.md) - 単一企業・統合戦略・複数プロジェクトのコンセプトに基づく docs/ と apps/ の構成規約
17
+ - [Living Documentation導入ガイド](./LivingDocumentation導入ガイド.md) - 『Living Documentation』に基づくドキュメントの再定義と 4 原則、知識の活用・拡張・キュレーション、Living Glossary・Living Diagram、ランタイムドキュメンテーションと、本プロジェクトの成果物への適用方法
18
+ - [アノテーション導入ガイド](./アノテーション導入ガイド.md) - 設計判断・意図・根拠をコード上の構造化されたアノテーションとして残す導入手順(語彙カタログ、命名・コミット規約、ツール連携と検証)
19
+ - [ダイナミックキュレーション導入ガイド](./ダイナミックキュレーション導入ガイド.md) - 既存の知識から目的に必要な少数を安定した基準で自動的に選び出す導入手順
20
+ - [ガイドツアー・サイトシーイング導入ガイド](./ガイドツアー・サイトシーイング導入ガイド.md) - コードの見どころ(サイトシーイング・マップ)と処理の流れ(ガイドツアー)をアノテーションから生成する導入手順
21
+
22
+ ### 経営・ビジネス
23
+
24
+ - [企業経営論](./企業経営論.md)
25
+ - [運営管理](./運営管理.md)
26
+
27
+ ### 分析・設計ガイド
28
+
29
+ - [経営戦略分析ガイド](./経営戦略分析ガイド.md)
30
+ - [ビジネスアーキテクチャ分析ガイド](./ビジネスアーキテクチャ分析ガイド.md)
31
+ - [要件定義ガイド](./要件定義ガイド.md)
32
+ - [ユースケース作成ガイド](./ユースケース作成ガイド.md)
33
+ - [ユースケース作成ガイド(AI-DLC 版)](./ユースケース作成ガイド_AI-DLC版.md) - Mob Elaboration で AI が初稿を書き人が検証する手順、人と AI の契約としての記述基準、AI 生成物の検証観点
34
+ - [アーキテクチャ設計ガイド](./アーキテクチャ設計ガイド.md)
35
+ - [データモデル設計ガイド](./データモデル設計ガイド.md)
36
+ - [ドメインモデル設計ガイド](./ドメインモデル設計ガイド.md)
37
+ - [UI 設計ガイド](./UI設計ガイド.md)
38
+ - [インフラ設計ガイド](./インフラ設計ガイド.md)
39
+
40
+ ### 品質・テスト
41
+
42
+ - [テスト戦略ガイド](./テスト戦略ガイド.md)
43
+ - [非機能要件定義ガイド](./非機能要件定義ガイド.md)
44
+ - [運用要件定義ガイド](./運用要件定義ガイド.md)
45
+ - [コーディングとテストガイド](./コーディングとテストガイド.md)
46
+ - [コーディングとテストガイド(AI-DLC 版)](./コーディングとテストガイド_AI-DLC版.md) - AI が Red-Green-Refactor を回し人が承認ゲートで全行検証する Bolt 実装フロー、AI 生成コード・テストのレビュー観点、ガードレール
47
+ - [BDD導入ガイド](./BDD導入ガイド.md) - 『Living Documentation』の BDD 論に基づき、スリーアミーゴの会話・フィーチャーファイルの構造・仕様詳細・タグ・プロパティベーステストを整理し、日本語 Gherkin の書き方と Cucumber の処理系選定・インストール・ステップ定義・Red-Green-Refactor・生きたドキュメント公開までの実装手順をまとめた導入ガイド。
48
+
49
+ ### 開発・運用
50
+
51
+ - [リリースガイド](./リリースガイド.md)
52
+ - [リリース・イテレーション計画ガイド](./リリース・イテレーション計画ガイド.md)
53
+ - [リリース・イテレーション計画ガイド(AI-DLC 版)](./リリース・イテレーション計画ガイド_AI-DLC版.md) - Intent → Unit → Bolt の計画、承認ゲート駆動の検証、エントロピー評価による見積もりと進捗指標
54
+ - [環境変数管理ガイド](./環境変数管理ガイド.md)
55
+ - [言語別開発ガイド](./言語別開発ガイド.md)
56
+ - [Java アプリケーション環境構築ガイド](./Javaアプリケーション環境構築ガイド.md)
57
+ - [TypeScript アプリケーション環境構築ガイド](./TypeScriptアプリケーション環境構築ガイド.md)
58
+ - [運用スクリプト作成ガイド](./運用スクリプト作成ガイド.md)
59
+
60
+ ### ツール
61
+
62
+ - [Codex CLI MCP アプリケーション開発フロー](./CodexCLIMCPアプリケーション開発フロー.md)
63
+ - [Codex CLI MCP サーバー設定手順](./CodexCLIMCPサーバー設定手順.md)
64
+ - [SonarQube ローカル環境セットアップ手順書](./SonarQubeローカル環境セットアップ手順書.md)
65
+ - [Vim 操作マニュアル](./Vim操作マニュアル.md)
66
+ - [OKF 導入ガイド(Open Knowledge Format v0.2)](./OKF導入ガイド_V0.2.md)