musubix 3.6.0 → 3.6.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.
Files changed (99) hide show
  1. package/.github/AGENTS.md +949 -0
  2. package/.github/prompts/sdd-change-apply.prompt.md +283 -0
  3. package/.github/prompts/sdd-change-archive.prompt.md +241 -0
  4. package/.github/prompts/sdd-change-init.prompt.md +269 -0
  5. package/.github/prompts/sdd-design.prompt.md +250 -0
  6. package/.github/prompts/sdd-implement.prompt.md +387 -0
  7. package/.github/prompts/sdd-requirements.prompt.md +193 -0
  8. package/.github/prompts/sdd-review.prompt.md +155 -0
  9. package/.github/prompts/sdd-security.prompt.md +228 -0
  10. package/.github/prompts/sdd-steering.prompt.md +269 -0
  11. package/.github/prompts/sdd-tasks.prompt.md +255 -0
  12. package/.github/prompts/sdd-test.prompt.md +230 -0
  13. package/.github/prompts/sdd-validate.prompt.md +304 -0
  14. package/.github/skills/musubix-adr-generation/SKILL.md +209 -0
  15. package/.github/skills/musubix-best-practices/SKILL.md +315 -0
  16. package/.github/skills/musubix-c4-design/SKILL.md +162 -0
  17. package/.github/skills/musubix-code-generation/SKILL.md +237 -0
  18. package/.github/skills/musubix-domain-inference/SKILL.md +196 -0
  19. package/.github/skills/musubix-ears-validation/SKILL.md +161 -0
  20. package/.github/skills/musubix-sdd-workflow/SKILL.md +217 -0
  21. package/.github/skills/musubix-technical-writing/SKILL.md +444 -0
  22. package/.github/skills/musubix-test-generation/SKILL.md +212 -0
  23. package/.github/skills/musubix-traceability/SKILL.md +141 -0
  24. package/AGENTS.md +1136 -0
  25. package/LICENSE +21 -0
  26. package/README.ja.md +313 -0
  27. package/README.md +315 -50
  28. package/bin/musubix-mcp.js +15 -0
  29. package/bin/musubix.js +9 -1
  30. package/docs/API-REFERENCE.md +1425 -0
  31. package/docs/GITHUB-ACTIONS-NPM-SETUP.md +132 -0
  32. package/docs/INSTALL-GUIDE.ja.md +459 -0
  33. package/docs/INSTALL-GUIDE.md +459 -0
  34. package/docs/MIGRATION-v3.0.md +324 -0
  35. package/docs/MUSUBI-enhancement_roadmap_20260105.md +651 -0
  36. package/docs/MUSUBIX-v3.0-User-Guide.md +1357 -0
  37. package/docs/MUSUBIXv2.2.0-Manual-outline.md +136 -0
  38. package/docs/MUSUBIXv2.2.0-Manual.md +3123 -0
  39. package/docs/MUSUBIXv2.3.5-Refactering.md +1310 -0
  40. package/docs/MUSUBIv1.6.1-enhancement_roadmap_20260105.md +291 -0
  41. package/docs/MUSUBIv2.2.0-USERGUIDE.md +2079 -0
  42. package/docs/ROADMAP-v1.5.md +116 -0
  43. package/docs/SwarmCoding.md +1284 -0
  44. package/docs/Test-prompt.md +105 -0
  45. package/docs/USER-GUIDE-v1.8.0.md +2371 -0
  46. package/docs/USER-GUIDE.ja.md +2147 -0
  47. package/docs/USER-GUIDE.md +3022 -0
  48. package/docs/YATA-GLOBAL-GUIDE.ja.md +750 -0
  49. package/docs/YATA-GLOBAL-GUIDE.md +595 -0
  50. package/docs/YATA-LOCAL-GUIDE.ja.md +989 -0
  51. package/docs/YATA-LOCAL-GUIDE.md +730 -0
  52. package/docs/adr/0001-real-time-pattern-learning-architecture-for-v1-5-0.md +75 -0
  53. package/docs/adr/0002-pattern-sharing-protocol-for-cross-team-collaborat.md +79 -0
  54. package/docs/adr/0003-owl-2-rl-implementation-strategy-for-advanced-infe.md +90 -0
  55. package/docs/adr/ADR-v3.4.0-001-deep-research-architecture.md +217 -0
  56. package/docs/adr/ADR-v3.4.0-002-search-provider-selection.md +308 -0
  57. package/docs/adr/ADR-v3.4.0-003-lm-api-integration.md +475 -0
  58. package/docs/enterprise-knowledge-management.md +1737 -0
  59. package/docs/evolution-from-musubi-to-musubix.md +2170 -0
  60. package/docs/experiments/EXPERIMENT-ASSISTANT-AXIS-DRIFT-DETECTION.md +155 -0
  61. package/docs/getting-started-with-sdd.md +1602 -0
  62. package/docs/moodle-refactering-codegraph-musubix.md +391 -0
  63. package/docs/moodle-refactering-codegraph.md +278 -0
  64. package/docs/overview/MUSUBIX-CodeGraph.md +322 -0
  65. package/docs/overview/MUSUBIX-Core.md +671 -0
  66. package/docs/overview/MUSUBIX-Decisions.md +494 -0
  67. package/docs/overview/MUSUBIX-FormalVerify.md +566 -0
  68. package/docs/overview/MUSUBIX-Knowledge.md +1231 -0
  69. package/docs/overview/MUSUBIX-Learning.md +837 -0
  70. package/docs/overview/MUSUBIX-MCP-Server.md +535 -0
  71. package/docs/overview/MUSUBIX-Overview.md +264 -0
  72. package/docs/overview/MUSUBIX-Phase1-Complete.md +271 -0
  73. package/docs/overview/MUSUBIX-Phase2-Complete.md +310 -0
  74. package/docs/overview/MUSUBIX-Policy.md +477 -0
  75. package/docs/overview/MUSUBIX-Roadmap-v2.md +399 -0
  76. package/docs/overview/MUSUBIX-Security-Plan.md +939 -0
  77. package/docs/overview/MUSUBIX-Security-v2.1.md +668 -0
  78. package/docs/overview/MUSUBIX-Security.md +891 -0
  79. package/docs/overview/MUSUBIX-YATA.md +666 -0
  80. package/docs/overview/MUSUBIX-v2.2.0-Advanced-Learning.md +513 -0
  81. package/docs/overview/Neuro-SymbolicAI.md +159 -0
  82. package/docs/packages/knowledge.md +594 -0
  83. package/docs/qiita/musubix-v3.6.0-fastrender-insights.md +625 -0
  84. package/docs/qiita-linux-kernel-knowledge-graph.md +596 -0
  85. package/docs/qiita-musubix-assistant-axis.md +380 -0
  86. package/package.json +58 -52
  87. package/scripts/generate-quality-gate-report.ts +106 -0
  88. package/scripts/postinstall.js +94 -0
  89. package/scripts/register-release-knowledge.ts +127 -0
  90. package/steering/.musubi-version +1 -0
  91. package/steering/product.ja.md +572 -0
  92. package/steering/project.yml +66 -0
  93. package/steering/rules/constitution.md +491 -0
  94. package/steering/structure.ja.md +503 -0
  95. package/steering/tech.ja.md +208 -0
  96. package/dist/index.d.ts +0 -25
  97. package/dist/index.d.ts.map +0 -1
  98. package/dist/index.js +0 -74
  99. package/dist/index.js.map +0 -1
@@ -0,0 +1,3123 @@
1
+ # MUSUBIX: Neuro-Symbolic AI Coding システムによるエンタープライズアプリケーション開発入門
2
+
3
+ :::note info
4
+ **Version**: 2.2.0 | **Date**: 2026-01-09 | **Author**: MUSUBIX Development Team
5
+ :::
6
+
7
+ ---
8
+
9
+ ## 目次
10
+
11
+ - [Part 1: イントロダクション](#part-1-イントロダクション)
12
+ - [1. 従来のAIコーディングの限界](#1-従来のaiコーディングの限界)
13
+ - [2. SDD(Specification Driven Development)の課題](#2-sddspecification-driven-developmentの課題)
14
+ - [3. MUSUBIXとは](#3-musubixとは)
15
+ - [4. エンタープライズ開発に必要な要素](#4-エンタープライズ開発に必要な要素)
16
+ - [Part 2: 経費精算システム開発](#part-2-経費精算システム開発)
17
+ - [5. プロジェクト初期化](#5-プロジェクト初期化)
18
+ - [6. 要件定義](#6-要件定義)
19
+ - [7. 設計](#7-設計)
20
+ - [8. タスク分解](#8-タスク分解)
21
+ - [9. コード生成](#9-コード生成)
22
+ - [10. セキュリティ分析](#10-セキュリティ分析)
23
+ - [11. 形式検証](#11-形式検証)
24
+ - [12. テスト生成](#12-テスト生成)
25
+ - [13. トレーサビリティ](#13-トレーサビリティ)
26
+ - [Part 3: 高度な機能](#part-3-高度な機能)
27
+ - [14. 説明生成](#14-説明生成)
28
+ - [15. 自己学習システム](#15-自己学習システム)
29
+ - [16. オントロジー](#16-オントロジー)
30
+ - [17. プログラム合成](#17-プログラム合成)
31
+ - [18. ライブラリ学習](#18-ライブラリ学習)
32
+ - [Part 4: チーム開発・運用](#part-4-チーム開発運用)
33
+ - [19. KGPR(知識グラフPull Request)](#19-kgpr知識グラフpull-request)
34
+ - [20. REPL対話モード](#20-repl対話モード)
35
+ - [21. 学習データの共有](#21-学習データの共有)
36
+ - [Part 5: まとめ](#part-5-まとめ)
37
+ - [22. MUSUBIXで実現するエンタープライズ品質](#22-musubixで実現するエンタープライズ品質)
38
+ - [23. 次のステップ](#23-次のステップ)
39
+ - [付録](#付録)
40
+ - [A. MUSUBIX 9条憲法](#付録a-musubix-9条憲法)
41
+ - [B. CLIコマンド完全リファレンス](#付録b-cliコマンド完全リファレンス)
42
+ - [C. EARSパターン早見表](#付録c-earsパターン早見表)
43
+ - [D. プロジェクト構成](#付録d-プロジェクト構成)
44
+ - [E. 設計パターンカタログ](#付録e-設計パターンカタログ)
45
+ - [F. トレーサビリティID体系](#付録f-トレーサビリティid体系)
46
+ - [G. SMT-LIB2 / Z3 クイックリファレンス](#付録g-smt-lib2--z3-クイックリファレンス)
47
+ - [H. 用語集](#付録h-用語集)
48
+ - [I. トラブルシューティング](#付録i-トラブルシューティング)
49
+
50
+ ---
51
+
52
+ # Part 1: イントロダクション
53
+
54
+ ## 1. 従来のAIコーディングの限界
55
+
56
+ ### 1.1 Vibe Coding(雰囲気コーディング)の問題点
57
+
58
+ 「Vibe Coding」とは、明確な仕様や設計なしに、AIに対して曖昧な指示を与えてコードを生成するスタイルです。
59
+
60
+ ```
61
+ ユーザー: 「いい感じの経費精算システム作って」
62
+ AI: (なんとなく動くコードを生成)
63
+ ```
64
+
65
+ **問題点:**
66
+
67
+ | 問題 | 説明 | エンタープライズへの影響 |
68
+ |------|------|------------------------|
69
+ | **再現性がない** | 同じ指示でも異なるコードが生成される | 品質管理が不可能 |
70
+ | **仕様が不明** | 何を作ったのか後から分からない | 保守・引継ぎ困難 |
71
+ | **監査不可** | なぜその実装になったか説明できない | コンプライアンス違反 |
72
+ | **テスト困難** | 仕様がないのでテストケースが書けない | バグの見逃し |
73
+ | **変更影響不明** | 要件変更時の影響範囲が分からない | 予期せぬ障害 |
74
+
75
+ **実例: Vibe Codingの危険性**
76
+
77
+ ```
78
+ ユーザー: 「経費の承認機能を追加して」
79
+
80
+ AIの出力(問題あり):
81
+ - 承認上限金額のチェックなし
82
+ - 自己承認が可能な実装
83
+ - 監査ログなし
84
+ - 承認済み経費の編集が可能
85
+
86
+ → 内部統制違反、不正の温床に
87
+ ```
88
+
89
+ ### 1.2 GitHub Copilot単体の限界
90
+
91
+ GitHub Copilotは優れたコード補完ツールですが、エンタープライズ開発には不十分です。
92
+
93
+ **Copilotの強み:**
94
+ - コード補完が高速・高精度
95
+ - 多言語対応
96
+ - IDE統合が優秀
97
+
98
+ **エンタープライズでの限界:**
99
+
100
+ | 機能 | Copilot | エンタープライズ要件 |
101
+ |------|---------|-------------------|
102
+ | 要件管理 | ❌ なし | 形式的な要件定義必須 |
103
+ | トレーサビリティ | ❌ なし | 要件↔コード追跡必須 |
104
+ | 設計検証 | ❌ なし | SOLID原則等の検証必須 |
105
+ | セキュリティ分析 | ⚠️ 限定的 | 網羅的な脆弱性検出必須 |
106
+ | 形式検証 | ❌ なし | ビジネスルールの数学的証明 |
107
+ | 監査証跡 | ❌ なし | 変更履歴・理由の記録必須 |
108
+ | 知識蓄積 | ❌ なし | プロジェクト固有パターンの学習 |
109
+
110
+ ### 1.3 Claude Code / Cursor の課題
111
+
112
+ Claude CodeやCursorは、より高度なAIコーディング体験を提供しますが、根本的な課題は解決していません。
113
+
114
+ **Claude Codeの強み:**
115
+ - 長いコンテキスト理解
116
+ - マルチファイル編集
117
+ - 高度な推論能力
118
+
119
+ **Cursorの強み:**
120
+ - IDE統合が優秀
121
+ - 高速なレスポンス
122
+ - チャット履歴管理
123
+
124
+ **共通する限界:**
125
+
126
+ ```mermaid
127
+ flowchart TB
128
+ subgraph Claude["Claude Code / Cursor の構造"]
129
+ subgraph Neural["Neural(LLM)のみ"]
130
+ subgraph Inference["確率的な推論"]
131
+ PM[パターンマッチング]
132
+ SP[統計的な予測]
133
+ PO[「それっぽい」出力]
134
+ end
135
+ end
136
+ Missing["❌ 欠けている要素"]
137
+ end
138
+
139
+ Missing --> M1["❌ 形式的な知識グラフ"]
140
+ Missing --> M2["❌ 論理的な検証機構"]
141
+ Missing --> M3["❌ 学習データの永続化"]
142
+ Missing --> M4["❌ トレーサビリティ"]
143
+ Missing --> M5["❌ 品質ゲート"]
144
+
145
+ style Claude fill:#f9f9f9,stroke:#333
146
+ style Neural fill:#e3f2fd,stroke:#1976d2
147
+ style Missing fill:#ffebee,stroke:#c62828
148
+ ```
149
+
150
+ ### 1.4 なぜエンタープライズ開発には不十分なのか
151
+
152
+ エンタープライズアプリケーションには、以下の特性があります。
153
+
154
+ | 特性 | 説明 | 従来AIツールの対応 |
155
+ |------|------|-------------------|
156
+ | **内部統制** | 承認ワークフロー、権限分離 | ❌ 考慮なし |
157
+ | **監査要件** | 変更履歴、アクセスログ | ❌ 対応なし |
158
+ | **コンプライアンス** | 法規制、業界標準準拠 | ❌ 検証不可 |
159
+ | **長期保守** | 10年以上の運用 | ❌ 仕様不明で困難 |
160
+ | **大規模チーム** | 100人以上での開発 | ❌ 知識共有なし |
161
+ | **ミッションクリティカル** | 24/365稼働 | ❌ 形式検証なし |
162
+
163
+ ---
164
+
165
+ ## 2. SDD(Specification Driven Development)の課題
166
+
167
+ ### 2.1 SDDとは
168
+
169
+ SDD(Specification Driven Development)は、仕様書を起点とした開発手法です。
170
+
171
+ ```mermaid
172
+ flowchart LR
173
+ subgraph Traditional["従来のSDD"]
174
+ A[仕様書] --> B[設計書] --> C[実装] --> D[テスト]
175
+ A1[手動] -.-> A
176
+ B1[手動] -.-> B
177
+ C1[手動] -.-> C
178
+ D1[手動] -.-> D
179
+ end
180
+
181
+ style Traditional fill:#fff3e0,stroke:#e65100
182
+ style A1 fill:#ffccbc,stroke:#bf360c
183
+ style B1 fill:#ffccbc,stroke:#bf360c
184
+ style C1 fill:#ffccbc,stroke:#bf360c
185
+ style D1 fill:#ffccbc,stroke:#bf360c
186
+ ```
187
+
188
+ **SDDの利点:**
189
+ - 仕様が明確
190
+ - トレーサビリティ確保
191
+ - 品質管理が可能
192
+
193
+ ### 2.2 SDDの課題
194
+
195
+ しかし、従来のSDDには重大な課題があります。
196
+
197
+ | 課題 | 説明 | 影響 |
198
+ |------|------|------|
199
+ | **手動作業が多い** | 仕様書↔コードの同期が手動 | 工数増大、同期ズレ |
200
+ | **AIとの統合が弱い** | AIは仕様を理解しない | AI活用の恩恵が限定的 |
201
+ | **形式化が困難** | 自然言語仕様は曖昧 | 解釈の齟齬 |
202
+ | **変更追従が困難** | 仕様変更時の影響分析が手動 | 変更コスト高 |
203
+ | **知識の断絶** | プロジェクト間で学習が活かせない | 車輪の再発明 |
204
+
205
+ ### 2.3 SDDツールの現状
206
+
207
+ これらの課題を解決するため、SDDをAIと統合したツールが登場しています。
208
+
209
+ :::note info
210
+ **EARS(Easy Approach to Requirements Syntax)とは?**
211
+ 要件を曖昧さなく記述するための形式言語です。「WHEN [条件] THE SYSTEM SHALL [動作]」のような5つのパターンで要件を構造化し、検証可能な形式にします。詳細は[6.2 EARS形式](#62-musubixが実行する処理)で解説します。
212
+ :::
213
+
214
+ | ツール | 提供元 | 特徴 | リリース |
215
+ |--------|--------|------|----------|
216
+ | **AWS Kiro** | Amazon Web Services | VS Code系IDE、EARS記法、requirements/design/tasks.md、Agent Hooks | 2025年 |
217
+ | **GitHub Spec Kit** | GitHub Next | 仕様書からのコード生成、Copilot統合(実験中) | 2025年(Preview) |
218
+ | **Cursor Rules** | Cursor | .cursorrules による開発ルール定義、カスタムプロンプト | 2024年〜 |
219
+ | **Claude Projects** | Anthropic | Project Knowledge による文脈管理、Memory機能 | 2024年〜 |
220
+
221
+ #### AWS Kiro
222
+
223
+ AWS Kiroは、Amazonが提供するSpec-Driven Development特化のAI IDE(VS Code互換)です。
224
+
225
+ **主な機能:**
226
+ - **EARS記法サポート**: 要件を`WHEN [条件] THE SYSTEM SHALL [動作]`形式で記述
227
+ - **3ファイル構成**: `requirements.md`、`design.md`、`tasks.md`による構造化
228
+ - **Agent Hooks**: ファイル保存時にテスト生成やドキュメント更新を自動実行
229
+ - **Steering Files**: プロジェクト固有のルールやコーディング標準を定義
230
+ - **Claude Sonnet 4.5採用**: 高度な推論能力を持つLLMを搭載
231
+
232
+ ```
233
+ Kiroのワークフロー:
234
+ 自然言語 → requirements.md → design.md → tasks.md → 実装
235
+ ```
236
+
237
+ :::note info
238
+ Kiroは「Vibe Coding(雰囲気コーディング)からViable Code(実用コード)へ」をスローガンに、AI生成コードの品質向上を目指しています。
239
+ :::
240
+
241
+ #### GitHub Spec Kit(実験的プロジェクト)
242
+
243
+ GitHub Nextが開発中のSpec Kitは、仕様書からコードを生成する実験的プロジェクトです。GitHub Copilotとの統合を前提に設計されており、仕様とコードの双方向同期を目指しています。
244
+
245
+ #### その他のアプローチ
246
+
247
+ | アプローチ | ツール | 概要 |
248
+ |-----------|--------|------|
249
+ | **ルールベース** | Cursor Rules、Windsurf Rules | `.cursorrules`等で開発ルールを定義 |
250
+ | **知識ベース** | Claude Projects | プロジェクト文脈をKnowledgeとして管理 |
251
+ | **エージェント型** | Devin、OpenHands | 自律的にタスクを実行するAIエージェント |
252
+
253
+ ### 2.4 既存SDDツールの限界
254
+
255
+ これらのツールは従来のAIコーディングより進歩していますが、依然として課題があります。
256
+
257
+ :::note info
258
+ **この表に登場する専門用語**
259
+ - **C4モデル**: システム設計を4つのレベル(Context/Container/Component/Code)で階層的に表現する手法
260
+ - **Z3 SMTソルバー**: Microsoftが開発した形式検証ツール。数学的にプログラムの正しさを証明できる
261
+ - **YATA**: MUSUBIXの知識グラフシステム。プロジェクトの知識を構造化して保存・推論する
262
+ - **トレーサビリティ**: 要件↔設計↔コード↔テストの対応関係を追跡できること
263
+ - **KGPR**: Knowledge Graph Pull Request。知識グラフの変更をGitのPRのように管理する仕組み
264
+ :::
265
+
266
+ | 観点 | 既存SDDツール | MUSUBIX |
267
+ |------|-------------|---------|
268
+ | **要件形式** | EARS(一部)、自由形式 | EARS完全サポート + 検証 |
269
+ | **設計パターン** | 限定的 | C4モデル + 設計パターン検出 |
270
+ | **形式検証** | ❌ なし | ✅ Z3 SMTソルバー統合 |
271
+ | **知識グラフ** | ❌ なし | ✅ YATA統合 |
272
+ | **トレーサビリティ** | 限定的 | ✅ 要件↔設計↔コード↔テスト完全追跡 |
273
+ | **自己学習** | ❌ なし | ✅ パターン学習・フィードバック |
274
+ | **チーム共有** | 限定的 | ✅ KGPR(知識グラフPR) |
275
+
276
+ ### 2.5 AIコーディングとSDDの溝
277
+
278
+ ```mermaid
279
+ flowchart LR
280
+ subgraph AI["AIコーディング"]
281
+ AI1["✅ 高速"]
282
+ AI2["✅ 柔軟"]
283
+ AI3["❌ 仕様不明"]
284
+ AI4["❌ 再現性なし"]
285
+ end
286
+
287
+ subgraph SDD["SDD"]
288
+ SDD1["✅ 品質管理"]
289
+ SDD2["✅ トレーサビリティ"]
290
+ SDD3["❌ 低速"]
291
+ SDD4["❌ 硬直的"]
292
+ end
293
+
294
+ AI <--> |溝| SDD
295
+
296
+ MUSUBIX["🔗 この溝を埋めるのが\nMUSUBIX"]
297
+ AI --> MUSUBIX
298
+ SDD --> MUSUBIX
299
+
300
+ style AI fill:#e3f2fd,stroke:#1976d2
301
+ style SDD fill:#fff3e0,stroke:#e65100
302
+ style MUSUBIX fill:#c8e6c9,stroke:#388e3c,stroke-width:3px
303
+ ```
304
+
305
+ ---
306
+
307
+ ## 3. MUSUBIXとは
308
+
309
+ ### 3.1 Neuro-Symbolic AI統合
310
+
311
+ :::note info
312
+ **Neuro-Symbolic AIとは?**
313
+ - **Neural(ニューラル)**: LLM(大規模言語モデル)による確率的・創造的な処理。パターン認識や自然言語理解が得意
314
+ - **Symbolic(シンボリック)**: 知識グラフや論理規則による厳密な推論。一貫性保証や形式検証が得意
315
+ - 両者を組み合わせることで、LLMの創造性とシンボリック推論の厳密性を両立させます
316
+ :::
317
+
318
+ MUSUBIXは、**Neural(LLM)** と **Symbolic(知識グラフ)** を統合した次世代AIコーディングシステムです。
319
+
320
+ ```mermaid
321
+ flowchart TB
322
+ subgraph MUSUBIX["MUSUBIX"]
323
+ subgraph Neural["Neural(LLM)"]
324
+ N1[創造的生成]
325
+ N2[自然言語理解]
326
+ N3[パターン認識]
327
+ N4[柔軟な対応]
328
+ end
329
+
330
+ subgraph Symbolic["Symbolic(YATA)"]
331
+ S1[知識グラフ]
332
+ S2[論理推論]
333
+ S3[形式検証]
334
+ S4[一貫性保証]
335
+ end
336
+
337
+ Neural <--> Symbolic
338
+
339
+ subgraph Engine["統合推論エンジン"]
340
+ E1[信頼度評価]
341
+ E2[最終決定]
342
+ end
343
+
344
+ Neural --> Engine
345
+ Symbolic --> Engine
346
+ end
347
+
348
+ style MUSUBIX fill:#f5f5f5,stroke:#333,stroke-width:2px
349
+ style Neural fill:#e3f2fd,stroke:#1976d2
350
+ style Symbolic fill:#fff3e0,stroke:#e65100
351
+ style Engine fill:#c8e6c9,stroke:#388e3c
352
+ ```
353
+
354
+ ### 3.2 信頼度評価ルール
355
+
356
+ MUSUBIXは、NeuralとSymbolicの結果を以下のルールで統合します。
357
+
358
+ | シンボリック結果 | ニューラル信頼度 | 最終決定 |
359
+ |-----------------|-----------------|---------|
360
+ | invalid(無効) | - | ニューラル結果を**棄却** |
361
+ | valid(有効) | ≥0.8 | ニューラル結果を**採用** |
362
+ | valid(有効) | <0.8 | シンボリック結果を**優先** |
363
+
364
+ :::note warn
365
+ **なぜこのルールか**
366
+ - シンボリック(形式論理)は「絶対に正しい」ことを保証
367
+ - ニューラルが生成しても、論理的に誤りなら却下
368
+ - 論理的に正しく、かつAIの確信度が高い場合のみ採用
369
+ :::
370
+
371
+ ### 3.3 MUSUBIXの構成要素
372
+
373
+ | コンポーネント | 役割 |
374
+ |---------------|------|
375
+ | **EARS検証** | 要件を5つの形式パターンで検証 |
376
+ | **C4モデル** | 4レベルの設計構造化 |
377
+ | **YATA** | 知識グラフによる推論・検証 |
378
+ | **Z3統合** | SMTソルバーによる形式検証 |
379
+ | **自己学習** | パターン抽出・蓄積・適用 |
380
+ | **トレーサビリティ** | 要件↔設計↔コード↔テストの追跡 |
381
+ | **9条憲法** | 開発ルールの強制 |
382
+
383
+ ### 3.4 開発フローの変革
384
+
385
+ ```mermaid
386
+ flowchart TB
387
+ subgraph Traditional["従来"]
388
+ T1[自然言語] --> T2[AI] --> T3["コード(品質不明)"]
389
+ end
390
+
391
+ subgraph MUSUBIX["MUSUBIX"]
392
+ M1[自然言語]
393
+ M2[EARS形式化]
394
+ M3["要件(検証済み)"]
395
+ M4[C4設計]
396
+ M5["設計(パターン適用済み)"]
397
+ M6[コード生成]
398
+ M7["コード(静的解析済み)"]
399
+ M8[形式検証]
400
+ M9[検証済みコード]
401
+ M10[テスト生成]
402
+ M11[テスト付きコード]
403
+ M12["✅ 完全なトレーサビリティで追跡可能"]
404
+
405
+ M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7 --> M8 --> M9 --> M10 --> M11 --> M12
406
+ end
407
+
408
+ style Traditional fill:#ffebee,stroke:#c62828
409
+ style MUSUBIX fill:#e8f5e9,stroke:#2e7d32
410
+ style T3 fill:#ffcdd2,stroke:#b71c1c
411
+ style M12 fill:#a5d6a7,stroke:#1b5e20,stroke-width:2px
412
+ ```
413
+
414
+ ### 3.5 動作環境と推奨構成
415
+
416
+ MUSUBIXは、MCP(Model Context Protocol)に対応した様々なAIコーディングツールで利用可能です。
417
+
418
+ #### 対応AIコーディングツール
419
+
420
+ | ツール | 対応状況 | 備考 |
421
+ |--------|---------|------|
422
+ | **GitHub Copilot Agent mode** | ✅ 推奨 | VS Code拡張、MCPサポート |
423
+ | **Claude Code** | ✅ 対応 | ターミナルベース |
424
+ | **Cursor** | ✅ 対応 | Agent mode + MCP |
425
+ | **Windsurf** | ✅ 対応 | MCP対応 |
426
+ | **その他MCP対応ツール** | ✅ 対応 | MCP経由で連携 |
427
+
428
+ #### 推奨構成: GitHub Copilot Enterprise + Claude Opus 4.5
429
+
430
+ :::note info
431
+ **なぜこの組み合わせがおすすめか**
432
+
433
+ **GitHub Copilot Enterprise**を選ぶ理由:
434
+ - VS Codeとのシームレスな統合
435
+ - Agent modeによるツール呼び出し(MCP)が安定
436
+ - 企業向けセキュリティ・コンプライアンス対応
437
+ - チーム間でのナレッジ共有機能
438
+
439
+ **Claude Opus 4.5**を選ぶ理由:
440
+ - 長いコンテキスト(200Kトークン)の理解に優れる
441
+ - 複雑な推論タスクで高い精度
442
+ - **出力コンテキストが上限を超える場合、大きなコンテキストを扱える他のLLMに切り替え可能**
443
+ - コード生成の品質が高い
444
+
445
+ **組み合わせのメリット:**
446
+ - MUSUBIXの長い要件定義書・設計書を正確に理解
447
+ - 大規模なコードベースでも文脈を維持
448
+ - LLMの出力制限に縛られない柔軟な運用
449
+ - エンタープライズグレードのセキュリティ
450
+ :::
451
+
452
+ #### 推奨OS環境: WSL(Windows Subsystem for Linux)
453
+
454
+ :::note warn
455
+ **Windows環境では WSL の使用を強く推奨します**
456
+
457
+ **WSLを推奨する理由:**
458
+ 1. **コマンド実行の安定性**: MUSUBIXのCLIツールはLinux環境で最も安定動作
459
+ 2. **Z3インストールの容易さ**: `apt install z3`で形式検証ツールを簡単導入
460
+ 3. **ファイルシステムの互換性**: Unix系パス表記でトラブル回避
461
+ 4. **開発ツールチェーン**: npm、Node.js、Gitなどの動作が安定
462
+ 5. **本番環境との一貫性**: 多くのサーバーがLinux環境
463
+
464
+ **WSL2セットアップ(Windows 10/11):**
465
+ ```bash
466
+ # PowerShellを管理者権限で実行
467
+ wsl --install -d Ubuntu-22.04
468
+
469
+ # WSL内でNode.js環境をセットアップ
470
+ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
471
+ sudo apt install -y nodejs
472
+
473
+ # Z3(形式検証)のインストール
474
+ sudo apt install -y z3
475
+ ```
476
+ :::
477
+
478
+ #### 最小システム要件
479
+
480
+ | 項目 | 最小要件 | 推奨 |
481
+ |------|---------|------|
482
+ | **Node.js** | 20.0.0以上 | 22.x LTS |
483
+ | **npm** | 10.0.0以上 | 最新 |
484
+ | **メモリ** | 8GB | 16GB以上 |
485
+ | **OS** | Windows 10 (WSL2), macOS 12+, Ubuntu 20.04+ | Ubuntu 22.04 (WSL2) |
486
+
487
+ ---
488
+
489
+ ## 4. エンタープライズ開発に必要な要素
490
+
491
+ ### 4.1 MUSUBIXが提供する価値
492
+
493
+ エンタープライズアプリケーション開発では、単に「動くコード」を作るだけでは不十分です。内部統制、監査対応、コンプライアンス遵守など、ビジネス上の厳格な要件を満たす必要があります。
494
+
495
+ MUSUBIXは、これらのエンタープライズ要件に対して、AIコーディングの利便性を維持しながら対応する唯一のソリューションです。
496
+
497
+ | エンタープライズ要件 | MUSUBIXの対応 |
498
+ |---------------------|---------------|
499
+ | **内部統制** | EARS形式で承認ルールを形式化、Z3で正当性証明 |
500
+ | **監査要件** | 完全なトレーサビリティ、変更履歴自動記録 |
501
+ | **コンプライアンス** | 9条憲法による品質ゲート強制 |
502
+ | **長期保守** | 明確な仕様、設計パターンの文書化 |
503
+ | **大規模チーム** | KGPR(知識グラフPR)でチーム知識共有 |
504
+ | **ミッションクリティカル** | 形式検証、セキュリティ分析 |
505
+
506
+ :::note info
507
+ **従来のAIコーディングとの違い**
508
+ - **Vibe Coding**: 「なんとなく動く」→ 監査で説明不能
509
+ - **MUSUBIX**: 「なぜこう実装したか」を要件IDで追跡可能 → 監査対応可能
510
+ :::
511
+
512
+ ### 4.2 本マニュアルで構築するシステム
513
+
514
+ **経費精算システム(Expense Management System)**
515
+
516
+ このマニュアルでは、実際に経費精算システムを構築しながら、MUSUBIXの全機能を体験します。
517
+
518
+ ```mermaid
519
+ flowchart TB
520
+ EMS["経費精算システムの要素"]
521
+
522
+ EMS --> A[経費申請・登録]
523
+ EMS --> B[多段階承認ワークフロー]
524
+ EMS --> C[予算チェック]
525
+ EMS --> D[領収書管理]
526
+ EMS --> E[監査ログ]
527
+ EMS --> F[レポート生成]
528
+
529
+ B --> B1[金額による承認ルート分岐]
530
+ B --> B2[上長・経理の段階承認]
531
+
532
+ style EMS fill:#e1f5fe,stroke:#0277bd,stroke-width:2px
533
+ style B fill:#fff3e0,stroke:#e65100
534
+ ```
535
+
536
+ **なぜ経費精算システムか:**
537
+
538
+ 経費精算システムは、エンタープライズアプリケーションの典型的な要素を網羅しています。承認ワークフロー、金額計算、監査要件、セキュリティなど、MUSUBIXの各機能を実践的に学ぶのに最適な題材です。
539
+
540
+ また、多くの企業で実際に使われているシステムであるため、学んだ内容をすぐに実務に活かすことができます。
541
+
542
+ | 要素 | MUSUBIX機能との対応 |
543
+ |------|-------------------|
544
+ | 承認ワークフロー | EARS形式、状態遷移、形式検証 |
545
+ | 金額ルール | Z3による数学的検証 |
546
+ | 監査要件 | トレーサビリティ、監査ログ |
547
+ | セキュリティ | 金額改ざん検知、認可チェック |
548
+ | 経費カテゴリ | オントロジーによる階層表現 |
549
+
550
+ :::note info
551
+ **このマニュアルで得られるスキル**
552
+ - EARS形式での要件定義
553
+ - C4モデルでの設計
554
+ - トレーサビリティを維持したコード生成
555
+ - Z3による形式検証
556
+ - MUSUBIXの自己学習システムの活用
557
+ :::
558
+
559
+ ---
560
+
561
+ **次のセクションでは、実際にプロジェクトを初期化し、経費精算システムの開発を開始します。**
562
+
563
+ ---
564
+
565
+ # Part 2: 経費精算システム開発
566
+
567
+ ## 5. プロジェクト初期化
568
+
569
+ それでは、実際にMUSUBIXプロジェクトを作成しましょう。
570
+
571
+ ### 5.1 環境の準備
572
+
573
+ #### Step 1: WSL Ubuntuにアクセス
574
+
575
+ Windowsターミナル(またはWindows Terminal)を起動し、WSLのUbuntuにアクセスします。
576
+
577
+ ```bash
578
+ # Windowsターミナルで新しいタブを開き、Ubuntuを選択
579
+ # または、PowerShellから以下を実行
580
+ wsl -d Ubuntu
581
+ ```
582
+
583
+ #### Step 2: プロジェクトディレクトリの作成と移動
584
+
585
+ ```bash
586
+ # プロジェクト用ディレクトリを作成
587
+ mkdir -p ~/projects/expense-management-system
588
+
589
+ # ディレクトリに移動
590
+ cd ~/projects/expense-management-system
591
+
592
+ # VS Codeでプロジェクトを開く
593
+ code .
594
+ ```
595
+
596
+ :::note info
597
+ VS Codeが起動したら、GitHub Copilot拡張機能がインストールされていることを確認してください。Agent modeを使用する場合は、Copilot Chatパネルで`@workspace`を使用できます。
598
+ :::
599
+
600
+ ### 5.2 MUSUBIXプロジェクトの初期化
601
+
602
+ VS Code上でGitHub Copilot Agent modeを使用して、プロジェクトを初期化します。
603
+
604
+ AIエージェントは内部で以下のコマンドを実行します。
605
+
606
+ ```bash
607
+ npx musubix init expense-management-system --name "経費精算システム"
608
+ ```
609
+
610
+ ### 5.3 実行結果
611
+
612
+ ```
613
+ {
614
+ success: true,
615
+ projectPath: '/tmp/expense-management-system',
616
+ filesCreated: [
617
+ 'steering/',
618
+ 'steering/rules/',
619
+ 'storage/',
620
+ 'storage/specs/',
621
+ 'storage/archive/',
622
+ 'storage/changes/',
623
+ '.github/',
624
+ '.github/prompts/',
625
+ '.github/skills/',
626
+ 'musubix.config.json',
627
+ 'steering/rules/constitution.md',
628
+ 'steering/product.md',
629
+ 'steering/tech.md',
630
+ 'steering/structure.md',
631
+ 'AGENTS.md',
632
+ 'storage/archive/.gitkeep',
633
+ 'storage/changes/.gitkeep'
634
+ ],
635
+ message: "MUSUBIX project '経費精算システム' initialized successfully!"
636
+ }
637
+ ```
638
+
639
+ ### 5.4 生成されたプロジェクト構造
640
+
641
+ ```mermaid
642
+ flowchart TB
643
+ subgraph Project["expense-management-system/"]
644
+ subgraph GitHub[".github/"]
645
+ GP["prompts/ - AIプロンプトテンプレート"]
646
+ GS["skills/ - エージェントスキル定義"]
647
+ end
648
+
649
+ subgraph Steering["steering/ - プロジェクトメモリ"]
650
+ SR["rules/constitution.md - 9条憲法"]
651
+ SP["product.md - プロダクト情報"]
652
+ ST["tech.md - 技術スタック"]
653
+ SS["structure.md - アーキテクチャ構造"]
654
+ end
655
+
656
+ subgraph Storage["storage/ - 成果物保存"]
657
+ SSp["specs/ - 要件・設計・タスク"]
658
+ SA["archive/ - アーカイブ"]
659
+ SC["changes/ - 変更履歴"]
660
+ end
661
+
662
+ AG["AGENTS.md - AIエージェント向けガイド"]
663
+ CF["musubix.config.json - プロジェクト設定"]
664
+ end
665
+
666
+ style Project fill:#f5f5f5,stroke:#333
667
+ style Steering fill:#e8f5e9,stroke:#2e7d32
668
+ style Storage fill:#e3f2fd,stroke:#1976d2
669
+ ```
670
+
671
+ ### 5.5 設定ファイル(musubix.config.json)
672
+
673
+ ```json:musubix.config.json
674
+ {
675
+ "version": "1.1.6",
676
+ "project": "経費精算システム",
677
+ "steeringDir": "./steering",
678
+ "storageDir": "./storage",
679
+ "llm": {
680
+ "provider": "anthropic",
681
+ "model": "claude-sonnet-4-20250514",
682
+ "maxTokens": 4096,
683
+ "temperature": 0.7
684
+ },
685
+ "yata": {
686
+ "transport": "stdio",
687
+ "server": "yata-mcp",
688
+ "timeout": 30000
689
+ },
690
+ "integration": {
691
+ "neuralThreshold": 0.7,
692
+ "symbolicThreshold": 0.8,
693
+ "defaultStrategy": "neural-validated",
694
+ "gracefulDegradation": true
695
+ }
696
+ }
697
+ ```
698
+
699
+ **設定項目の説明:**
700
+
701
+ | 項目 | 説明 |
702
+ |------|------|
703
+ | `llm.provider` | 使用するLLMプロバイダー(anthropic) |
704
+ | `llm.model` | 使用するモデル(Claude Sonnet 4) |
705
+ | `integration.neuralThreshold` | ニューラル信頼度閾値(0.7以上で採用検討) |
706
+ | `integration.symbolicThreshold` | シンボリック検証閾値(0.8以上で確定) |
707
+ | `integration.defaultStrategy` | デフォルト戦略(neural-validated: Neural生成→Symbolic検証) |
708
+
709
+ ### 5.6 steering/(プロジェクトメモリ)の役割
710
+
711
+ :::note info
712
+ **steering/とは?**
713
+ AIエージェントが参照する「プロジェクトの記憶」です。船の操舵(steering)に由来し、プロジェクトの方向性を定めます。技術スタック、アーキテクチャルール、プロダクト情報を格納し、AIが文脈を理解した上でコードを生成できます。AWS Kiroも同様の概念を採用しています。
714
+ :::
715
+
716
+ MUSUBIXの特徴的な概念である **steering/** ディレクトリは、AIエージェントが参照する「プロジェクトの記憶」です。
717
+
718
+ ```mermaid
719
+ flowchart TB
720
+ subgraph Steering["steering/ - プロジェクトメモリ"]
721
+ R["rules/"]
722
+ R --> C["constitution.md - 絶対に守るべき9つのルール"]
723
+ P["product.md - このプロダクトは何か"]
724
+ T["tech.md - どの技術を使うか"]
725
+ S["structure.md - どのような構造で作るか"]
726
+ end
727
+
728
+ style Steering fill:#e8f5e9,stroke:#2e7d32
729
+ style C fill:#ffcdd2,stroke:#c62828,stroke-width:2px
730
+ ```
731
+
732
+ **9条憲法(constitution.md)** は、すべての開発活動を統治する不変のルールです。AIエージェントは、コード生成前に必ずこのファイルを参照し、ルールに違反する出力を行いません。
733
+
734
+ :::note info
735
+ 📖 詳細は [付録A: MUSUBIX 9条憲法](#付録a-9条憲法constitutional-articles) を参照
736
+ :::
737
+
738
+ ---
739
+
740
+ ## 6. 要件定義
741
+
742
+ MUSUBIXでは、作りたいシステムを自然言語で指示するだけで、AIエージェントが対話を通じてユーザーの要件を確認し、EARS形式の要件定義書を自動作成します。
743
+
744
+ 従来の要件定義では、ドキュメント作成に多大な時間がかかりましたが、MUSUBIXを使えば対話しながら要件を明確化し、形式化された要件定義書を短時間で作成できます。
745
+
746
+ ```mermaid
747
+ flowchart LR
748
+ A[自然言語で指示] --> B[AIが要件を生成]
749
+ B --> C[ユーザーがレビュー]
750
+ C --> D{修正が必要?}
751
+ D -->|はい| E[修正指示]
752
+ E --> B
753
+ D -->|いいえ| F[要件定義完了]
754
+
755
+ style A fill:#e3f2fd,stroke:#1976d2
756
+ style F fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
757
+ ```
758
+
759
+ AIエージェントが作成した要件定義書をユーザーがレビューし、修正が必要な箇所があればフィードバックを伝えます。このレビューと修正のサイクルを、修正の必要がなくなるまで繰り返すことで、高品質な要件定義書が完成します。
760
+
761
+ ### 6.1 自然言語での指示
762
+
763
+ プロジェクト初期化後、AIエージェントに対して自然言語で要件を伝えます。
764
+
765
+ > 「経費精算システムの要件を定義してください。
766
+ >
767
+ > 主な機能:
768
+ > - 経費の申請・登録
769
+ > - 多段階承認ワークフロー(申請者→上長→経理)
770
+ > - 金額による承認ルート分岐(10万円以上は部長承認必要)
771
+ > - 経費カテゴリ管理(交通費、宿泊費、交際費など)
772
+ > - 予算チェック
773
+ > - 領収書の添付
774
+ > - 監査ログの記録
775
+ > - レポート出力」
776
+
777
+ ### 6.2 MUSUBIXが実行する処理
778
+
779
+ MUSUBIXは、この自然言語を**EARS形式**(Easy Approach to Requirements Syntax)に変換します。
780
+
781
+ :::note info
782
+ **EARS形式の背景**
783
+ EARSは2009年にRolls-Royce社のAlistair Mavin氏らが提唱した要件記述法です。航空宇宙産業で的確な要件定義が求められる中、5つのパターンで要件の曖昧さを排除します。AWS KiroもEARSを採用しており、業界標準となりつつあります。
784
+ :::
785
+
786
+ **EARS形式とは:**
787
+
788
+ | パターン | 構文 | 用途 |
789
+ |---------|------|------|
790
+ | Ubiquitous | `THE [system] SHALL [requirement]` | 常に満たすべき要件 |
791
+ | Event-driven | `WHEN [event], THE [system] SHALL [response]` | イベント発生時の要件 |
792
+ | State-driven | `WHILE [state], THE [system] SHALL [response]` | 特定状態での要件 |
793
+ | Unwanted | `THE [system] SHALL NOT [behavior]` | 禁止事項 |
794
+ | Optional | `IF [condition], THEN THE [system] SHALL [response]` | 条件付き要件 |
795
+
796
+ :::note info
797
+ 📖 詳細は [付録C: EARSパターン](#付録c-earsパターン) を参照
798
+ :::
799
+
800
+ ### 6.3 AIエージェントによるEARS変換
801
+
802
+ AIエージェント(GitHub Copilot Agent mode + MUSUBIX)は、自然言語の要件をEARS形式に変換して要件定義書を作成します。
803
+
804
+ **変換例:**
805
+
806
+ | 自然言語 | EARSパターン | EARS形式 |
807
+ |---------|-------------|----------|
808
+ | 「ユーザーが経費を申請すると通知が送られる」 | Event-driven | WHEN a user submits an expense entry, THE System SHALL send notification to the approver. |
809
+ | 「10万円以上は部長承認が必要」 | Optional | IF an expense amount exceeds 100,000 JPY, THEN THE System SHALL require Director approval. |
810
+ | 「自分の経費は自分で承認できない」 | Unwanted | THE System SHALL NOT allow users to approve their own expense entries. |
811
+ | 「すべての操作は監査ログに記録」 | Ubiquitous | THE System SHALL log all operations with timestamp and user ID. |
812
+ | 「7日以上承認待ちならリマインダー」 | State-driven | WHILE an expense is pending for more than 7 days, THE System SHALL send daily reminders. |
813
+
814
+ ### 6.4 生成された要件定義書
815
+
816
+ AIエージェントが生成した要件定義書の一部を示します。
817
+
818
+ ```markdown
819
+ ## 経費申請(Expense Submission)
820
+
821
+ ### REQ-EXP-001: 経費登録
822
+ **[Ubiquitous]**
823
+ > THE Expense Management System SHALL allow authenticated users to create
824
+ > expense entries with date, amount, category, and description.
825
+
826
+ **優先度**: P0(必須)
827
+
828
+ ### REQ-EXP-002: 領収書添付
829
+ **[Event-driven]**
830
+ > WHEN a user creates an expense entry, THE Expense Management System SHALL
831
+ > allow attachment of receipt images in JPEG, PNG, or PDF format.
832
+
833
+ **優先度**: P0(必須)
834
+ ```
835
+
836
+ ```markdown
837
+ ## 承認ワークフロー(Approval Workflow)
838
+
839
+ ### REQ-APR-002: 金額別承認ルート
840
+ **[Optional]**
841
+ > IF an expense amount exceeds 100,000 JPY, THEN THE Expense Management System
842
+ > SHALL require additional Director approval before Finance approval.
843
+
844
+ **優先度**: P0(必須)
845
+
846
+ ### REQ-APR-006: 自己承認禁止
847
+ **[Unwanted]**
848
+ > THE Expense Management System SHALL NOT allow users to approve their own
849
+ > expense entries.
850
+
851
+ **優先度**: P0(必須)
852
+ ```
853
+
854
+ ### 6.5 要件検証の実行
855
+
856
+ 要件定義書をEARS形式で検証します。
857
+
858
+ **自然言語での指示:**
859
+ > 「作成した要件定義書のEARS形式を検証してください」
860
+ >      or
861
+ > 「要件定義定義書をレビュー」
862
+
863
+ **MUSUBIXが実行するコマンド:**
864
+ ```bash
865
+ npx musubix requirements validate storage/specs/REQ-EXP-001-requirements.md
866
+ ```
867
+
868
+ **実行結果:**
869
+ ```json
870
+ {
871
+ "success": true,
872
+ "valid": true,
873
+ "issues": [],
874
+ "summary": { "errors": 0, "warnings": 0, "info": 0 },
875
+ "message": "✅ All requirements are valid"
876
+ }
877
+ ```
878
+
879
+ ### 6.6 要件サマリー
880
+
881
+ | カテゴリ | P0(必須) | P1(重要) | 合計 |
882
+ |---------|----------|----------|------|
883
+ | 経費申請 | 3 | 1 | 4 |
884
+ | 承認ワークフロー | 5 | 2 | 7 |
885
+ | 予算管理 | 2 | 1 | 3 |
886
+ | 監査・コンプライアンス | 3 | 0 | 3 |
887
+ | レポート | 0 | 3 | 3 |
888
+ | セキュリティ | 4 | 0 | 4 |
889
+ | **合計** | **17** | **7** | **24** |
890
+
891
+ ### 6.7 なぜEARS形式が重要か
892
+
893
+ 自然言語で書かれた要件は、読み手によって解釈が異なる可能性があります。「通知する」と書かれていても、「いつ」「誰に」「どのように」通知するのかが不明確です。
894
+
895
+ EARS形式を使うことで、要件の曖昧さを排除し、誰が読んでも同じ解釈ができる要件定義書を作成できます。さらに、形式化された要件は自動検証やテストケース生成にも活用できます。
896
+
897
+ | 観点 | 自然言語 | EARS形式 |
898
+ |------|---------|----------|
899
+ | **曖昧さ** | 「通知する」→ いつ?誰に? | WHEN [trigger], SHALL [action] で明確 |
900
+ | **検証可能性** | テストケース作成困難 | パターンから自動生成可能 |
901
+ | **トレーサビリティ** | 要件↔コードの対応不明 | REQ-ID で追跡可能 |
902
+ | **形式検証** | 数学的検証不可 | Z3/SMTソルバーで証明可能 |
903
+
904
+ :::note info
905
+ **エンタープライズ開発でのメリット**
906
+ - 監査時に「この機能はどの要件に基づいているか」を即座に説明可能
907
+ - 要件変更時の影響範囲を自動分析
908
+ - テストケースの網羅性を要件IDで保証
909
+ :::
910
+
911
+ ---
912
+
913
+ ## 7. 設計
914
+
915
+ ### 7.1 自然言語での指示
916
+
917
+ 要件定義が完了したら、設計フェーズに進みます。
918
+
919
+ > 「経費精算システムの設計を作成してください。
920
+ > C4モデルで構造化し、適切な設計パターンを適用してください。」
921
+ >     or
922
+ > 「設計書を作成」
923
+
924
+ ### 7.2 MUSUBIXが実行する処理
925
+
926
+ MUSUBIXは、要件定義書を入力として**C4モデル**に基づく設計を生成します。
927
+
928
+ :::note info
929
+ **C4モデルの背景**
930
+ C4モデルはSimon Brown氏が提唱したソフトウェアアーキテクチャの可視化手法です。「地図のズーム」のように、4つのレベルでシステムを階層的に説明します。経営層にはContext、技術リーダーにはContainer、開発者にはComponent/Codeと、対象者に合わせた説明が可能です。
931
+ :::
932
+
933
+ **C4モデルとは:**
934
+
935
+ | レベル | 説明 | 対象読者 |
936
+ |-------|------|---------|
937
+ | **Context** | システム境界と外部アクター | 経営層、ステークホルダー |
938
+ | **Container** | 技術選択、コンテナ構成 | アーキテクト、技術リーダー |
939
+ | **Component** | コンテナ内部構造 | 開発者 |
940
+ | **Code** | 実装詳細 | 開発者 |
941
+
942
+ ### 7.3 生成された設計書
943
+
944
+ #### Context Diagram(システムコンテキスト)
945
+
946
+ ```mermaid
947
+ flowchart TB
948
+ subgraph Actors["External Actors"]
949
+ EMP["👤 Employee<br/>(申請者)"]
950
+ MGR["👤 Manager<br/>(上長)"]
951
+ DIR["👤 Director<br/>(部長)"]
952
+ FIN["👤 Finance<br/>(経理)"]
953
+ end
954
+
955
+ EMS["📦 Expense Management System<br/>経費精算システム"]
956
+
957
+ subgraph External["External Systems"]
958
+ EMAIL["📧 Email Server"]
959
+ LDAP["🔐 LDAP/AD<br/>(認証)"]
960
+ ACC["💰 Accounting System"]
961
+ end
962
+
963
+ EMP --> EMS
964
+ MGR --> EMS
965
+ DIR --> EMS
966
+ FIN --> EMS
967
+
968
+ EMS --> EMAIL
969
+ EMS --> LDAP
970
+ EMS --> ACC
971
+
972
+ style EMS fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
973
+ style Actors fill:#e8f5e9,stroke:#2e7d32
974
+ style External fill:#fff3e0,stroke:#e65100
975
+ ```
976
+
977
+ #### Container Diagram(コンテナ図)
978
+
979
+ ```mermaid
980
+ flowchart TB
981
+ subgraph EMS["Expense Management System"]
982
+ subgraph Frontend["Frontend Layer"]
983
+ WEB["🌐 Web Frontend<br/>(React/Next.js)"]
984
+ MOB["📱 Mobile App<br/>(React Native)"]
985
+ end
986
+
987
+ GW["🚪 API Gateway"]
988
+
989
+ subgraph Services["Service Layer"]
990
+ EXPS["Expense<br/>Service"]
991
+ APRS["Approval<br/>Service"]
992
+ BUDS["Budget<br/>Service"]
993
+ end
994
+
995
+ DB[("🗄️ PostgreSQL DB")]
996
+
997
+ WEB --> GW
998
+ MOB --> GW
999
+ GW --> EXPS
1000
+ GW --> APRS
1001
+ GW --> BUDS
1002
+ EXPS --> DB
1003
+ APRS --> DB
1004
+ BUDS --> DB
1005
+ end
1006
+
1007
+ style EMS fill:#f5f5f5,stroke:#333,stroke-width:2px
1008
+ style Frontend fill:#e3f2fd,stroke:#1976d2
1009
+ style Services fill:#fff3e0,stroke:#e65100
1010
+ style GW fill:#c8e6c9,stroke:#388e3c
1011
+ style DB fill:#f3e5f5,stroke:#7b1fa2
1012
+ ```
1013
+
1014
+ ### 7.4 設計パターンの適用
1015
+
1016
+ AIエージェントは、要件に基づいて適切な設計パターンを自動選択・適用します。
1017
+
1018
+ | パターン | 適用箇所 | 選択理由 |
1019
+ |---------|---------|---------|
1020
+ | **Repository** | ExpenseRepository | REQ-AUD-001の監査要件に対応、データアクセス抽象化 |
1021
+ | **Service** | ApprovalService | REQ-APR-001〜007の承認ロジック集約 |
1022
+ | **Factory** | ExpenseFactory | REQ-EXP-001の経費作成ルールカプセル化 |
1023
+ | **Observer** | NotificationObserver | REQ-APR-003の承認通知を疎結合に実現 |
1024
+ | **Strategy** | ApprovalStrategy | REQ-APR-002の金額別承認ルート切り替え |
1025
+ | **State** | ExpenseState | REQ-APR-007のステータス遷移管理 |
1026
+
1027
+ ### 7.5 状態遷移設計
1028
+
1029
+ 経費のステータス遷移を設計します。
1030
+
1031
+ ```
1032
+ Draft → Submitted → ManagerApproved → [DirectorApproved] → FinanceApproved
1033
+ ↘ ↘ ↘
1034
+ Rejected Rejected Rejected
1035
+ ```
1036
+
1037
+ **有効な状態遷移テーブル:**
1038
+
1039
+ | 現在の状態 | 可能な次の状態 |
1040
+ |-----------|---------------|
1041
+ | Draft | Submitted, Cancelled |
1042
+ | Submitted | ManagerApproved, Rejected |
1043
+ | ManagerApproved | DirectorApproved, FinanceApproved, Rejected |
1044
+ | DirectorApproved | FinanceApproved, Rejected |
1045
+ | FinanceApproved | (最終状態) |
1046
+ | Rejected | (最終状態) |
1047
+
1048
+ ### 7.6 トレーサビリティ(要件→設計)
1049
+
1050
+ | 要件ID | 設計ID | コンポーネント |
1051
+ |--------|--------|--------------|
1052
+ | REQ-EXP-001 | DES-SVC-001, DES-ENT-001 | ExpenseService, Expense |
1053
+ | REQ-APR-001 | DES-SVC-002, DES-ENT-002 | ApprovalService, Approval |
1054
+ | REQ-APR-002 | DES-DOM-001 | ApprovalStrategy |
1055
+ | REQ-APR-006 | DES-SVC-002 | ApprovalService.validateSelfApproval() |
1056
+ | REQ-BUD-001 | DES-SVC-003, DES-ENT-003 | BudgetService, Budget |
1057
+ | REQ-AUD-001 | DES-SVC-005, DES-ENT-004 | AuditService, AuditLog |
1058
+
1059
+ ---
1060
+
1061
+ ## 8. タスク分解
1062
+
1063
+ 設計フェーズが完了したら、実装前に**タスク分解**を行います。これはMUSUBIXの推奨ワークフローにおける重要なフェーズです。
1064
+
1065
+ :::note info
1066
+ **なぜタスク分解が必要か?**
1067
+ 設計書をそのまま実装に移すと、全体像が大きすぎて作業が困難になります。タスク分解により:
1068
+ - 作業を適切なサイズ(2-4時間程度)に分割
1069
+ - 依存関係を明確化し、実装順序を決定
1070
+ - 進捗管理が容易に
1071
+ - テスト駆動開発(Red-Green-Blue)サイクルの単位を明確化
1072
+ :::
1073
+
1074
+ ### 8.1 自然言語での指示
1075
+
1076
+ > 「設計書に基づいて、実装タスクを分解してください。
1077
+ > 各タスクは2-4時間で完了できるサイズにしてください。
1078
+ > 依存関係と実装順序も明示してください。」
1079
+ >     or
1080
+ > 「タスク分解を実行」
1081
+
1082
+ ### 8.2 MUSUBIXが実行する処理
1083
+
1084
+ ```bash
1085
+ npx musubix design tasks storage/design/expense-design.md
1086
+ ```
1087
+
1088
+ MUSUBIXは以下の観点でタスクを分解します。
1089
+
1090
+ 1. **設計コンポーネントの依存関係分析**
1091
+ 2. **タスクサイズの適正化**(2-4時間を目安)
1092
+ 3. **実装順序の決定**(依存関係に基づく)
1093
+ 4. **トレーサビリティID(TSK-*)の付与**
1094
+
1095
+ ### 8.3 生成されるタスク分解書
1096
+
1097
+ ```markdown:storage/tasks/expense-tasks.md
1098
+ # 経費精算システム - タスク分解書
1099
+
1100
+ ## 概要
1101
+
1102
+ | 項目 | 値 |
1103
+ |------|-----|
1104
+ | 設計ID | DES-EXP-001 |
1105
+ | 総タスク数 | 12 |
1106
+ | 見積工数 | 32時間 |
1107
+ | 優先度 | P0 |
1108
+
1109
+ ## タスク一覧
1110
+
1111
+ ### Phase 1: ドメイン層(Value Objects)
1112
+
1113
+ | タスクID | タスク名 | 設計ID | 見積 | 依存 |
1114
+ |----------|----------|--------|------|------|
1115
+ | TSK-001 | Amount Value Object実装 | DES-VO-002 | 2h | - |
1116
+ | TSK-002 | ExpenseStatus Value Object実装 | DES-VO-003 | 2h | - |
1117
+ | TSK-003 | ExpenseId Value Object実装 | DES-VO-001 | 1h | - |
1118
+
1119
+ ### Phase 2: ドメイン層(Entities)
1120
+
1121
+ | タスクID | タスク名 | 設計ID | 見積 | 依存 |
1122
+ |----------|----------|--------|------|------|
1123
+ | TSK-004 | Expense Entity実装 | DES-ENT-001 | 3h | TSK-001, TSK-002, TSK-003 |
1124
+ | TSK-005 | Approval Entity実装 | DES-ENT-002 | 2h | TSK-004 |
1125
+
1126
+ ### Phase 3: ドメイン層(Services)
1127
+
1128
+ | タスクID | タスク名 | 設計ID | 見積 | 依存 |
1129
+ |----------|----------|--------|------|------|
1130
+ | TSK-006 | ExpenseService実装 | DES-SVC-001 | 4h | TSK-004 |
1131
+ | TSK-007 | ApprovalService実装 | DES-SVC-002 | 4h | TSK-005 |
1132
+ | TSK-008 | ApprovalStrategy実装 | DES-DOM-001 | 3h | TSK-007 |
1133
+
1134
+ ### Phase 4: インフラ層
1135
+
1136
+ | タスクID | タスク名 | 設計ID | 見積 | 依存 |
1137
+ |----------|----------|--------|------|------|
1138
+ | TSK-009 | ExpenseRepository実装 | DES-REPO-001 | 3h | TSK-004 |
1139
+ | TSK-010 | AuditService実装 | DES-SVC-005 | 3h | TSK-006, TSK-007 |
1140
+
1141
+ ### Phase 5: 統合
1142
+
1143
+ | タスクID | タスク名 | 設計ID | 見積 | 依存 |
1144
+ |----------|----------|--------|------|------|
1145
+ | TSK-011 | Use Case層実装 | DES-UC-001 | 3h | TSK-006, TSK-007, TSK-009 |
1146
+ | TSK-012 | 統合テスト | - | 2h | TSK-011 |
1147
+ ```
1148
+
1149
+ ### 8.4 タスク依存関係の可視化
1150
+
1151
+ ```mermaid
1152
+ flowchart TD
1153
+ subgraph Phase1["Phase 1: Value Objects"]
1154
+ TSK001[TSK-001<br/>Amount VO]
1155
+ TSK002[TSK-002<br/>ExpenseStatus VO]
1156
+ TSK003[TSK-003<br/>ExpenseId VO]
1157
+ end
1158
+
1159
+ subgraph Phase2["Phase 2: Entities"]
1160
+ TSK004[TSK-004<br/>Expense Entity]
1161
+ TSK005[TSK-005<br/>Approval Entity]
1162
+ end
1163
+
1164
+ subgraph Phase3["Phase 3: Services"]
1165
+ TSK006[TSK-006<br/>ExpenseService]
1166
+ TSK007[TSK-007<br/>ApprovalService]
1167
+ TSK008[TSK-008<br/>ApprovalStrategy]
1168
+ end
1169
+
1170
+ subgraph Phase4["Phase 4: Infrastructure"]
1171
+ TSK009[TSK-009<br/>ExpenseRepository]
1172
+ TSK010[TSK-010<br/>AuditService]
1173
+ end
1174
+
1175
+ subgraph Phase5["Phase 5: Integration"]
1176
+ TSK011[TSK-011<br/>Use Case層]
1177
+ TSK012[TSK-012<br/>統合テスト]
1178
+ end
1179
+
1180
+ TSK001 --> TSK004
1181
+ TSK002 --> TSK004
1182
+ TSK003 --> TSK004
1183
+ TSK004 --> TSK005
1184
+ TSK004 --> TSK006
1185
+ TSK005 --> TSK007
1186
+ TSK007 --> TSK008
1187
+ TSK004 --> TSK009
1188
+ TSK006 --> TSK010
1189
+ TSK007 --> TSK010
1190
+ TSK006 --> TSK011
1191
+ TSK007 --> TSK011
1192
+ TSK009 --> TSK011
1193
+ TSK011 --> TSK012
1194
+ ```
1195
+
1196
+ ### 8.5 トレーサビリティ(設計→タスク)
1197
+
1198
+ | 設計ID | タスクID | コンポーネント |
1199
+ |--------|----------|--------------|
1200
+ | DES-VO-001 | TSK-003 | ExpenseId |
1201
+ | DES-VO-002 | TSK-001 | Amount |
1202
+ | DES-VO-003 | TSK-002 | ExpenseStatus |
1203
+ | DES-ENT-001 | TSK-004 | Expense |
1204
+ | DES-ENT-002 | TSK-005 | Approval |
1205
+ | DES-SVC-001 | TSK-006 | ExpenseService |
1206
+ | DES-SVC-002 | TSK-007 | ApprovalService |
1207
+ | DES-DOM-001 | TSK-008 | ApprovalStrategy |
1208
+ | DES-REPO-001 | TSK-009 | ExpenseRepository |
1209
+ | DES-SVC-005 | TSK-010 | AuditService |
1210
+ | DES-UC-001 | TSK-011 | UseCase層 |
1211
+
1212
+ ### 8.6 セルフレビューとユーザー確認
1213
+
1214
+ タスク分解が完了したら、MUSUBIXはセルフレビューを実施します。
1215
+
1216
+ **レビュー観点:**
1217
+ - 設計との対応確認(DES-* → TSK-*)
1218
+ - タスクサイズの適切性(2-4時間)
1219
+ - 依存関係・実行順序の妥当性
1220
+ - 工数見積もりの現実性
1221
+
1222
+ ```
1223
+ 📋 **レビュー結果**
1224
+
1225
+ | 観点 | 状態 | 詳細 |
1226
+ |------|------|------|
1227
+ | トレーサビリティ | ✅ OK | DES-001→TSK-001〜012 完了 |
1228
+ | タスクサイズ | ✅ OK | 各2-4時間で適切 |
1229
+ | 依存関係 | ✅ OK | Phase 1→5の順序が明確 |
1230
+ | 工数見積 | ⚠️ 確認 | 合計32時間(4人日相当) |
1231
+
1232
+ 👉 **次のアクションを選択してください:**
1233
+ - 「修正」/ 具体的な修正指示 → 修正して再提示
1234
+ - 「承認」/「OK」/「進める」 → コード生成フェーズへ
1235
+ ```
1236
+
1237
+ :::note warn
1238
+ **重要**: タスク分解の承認を得てから、コード生成フェーズに進みます。各タスクは **Red-Green-Blue** サイクル(テスト作成→実装→リファクタリング)で実装します。
1239
+ :::
1240
+
1241
+ ---
1242
+
1243
+ ## 9. コード生成
1244
+
1245
+ ### 8.1 自然言語での指示
1246
+
1247
+ 設計が完了したら、コード生成フェーズに進みます。
1248
+
1249
+ > 「設計書に基づいてTypeScriptコードを生成してください。
1250
+ > まずはドメイン層(エンティティ、Value Object)から始めてください。」
1251
+
1252
+ ### 8.2 MUSUBIXが実行する処理
1253
+
1254
+ MUSUBIXは設計書を入力として、以下の順序でコードを生成します。
1255
+
1256
+ :::note info
1257
+ **ドメイン駆動設計(DDD)の基本用語**
1258
+ - **Value Object**: 金額、日付などの「値」を表す不変オブジェクト。IDを持たず、値が同じなら同じものとみなす
1259
+ - **Entity**: IDを持つドメインオブジェクト。「経費」「承認」など一意に識別されるもの
1260
+ - **Repository**: データの保存・取得を抽象化する層。DB変更時もドメイン層に影響しない
1261
+ - **Service**: 複数のエンティティにまたがるビジネスロジックを集約
1262
+ :::
1263
+
1264
+ 1. **Value Objects** - 不変の値オブジェクト
1265
+ 2. **Entities** - ドメインエンティティ
1266
+ 3. **Repositories** - データアクセス層
1267
+ 4. **Services** - ビジネスロジック層
1268
+ 5. **Use Cases** - アプリケーション層
1269
+
1270
+ ### 8.3 生成されたコード例
1271
+
1272
+ #### Amount Value Object(金額)
1273
+
1274
+ :::note info
1275
+ **Result型パターンとは?**
1276
+ 成功または失敗を明示的に表現する型です。`Result<T, E>`は成功時に`T`型の値、失敗時に`E`型のエラーを返します。例外を使わずにエラーハンドリングを強制でき、コンパイル時にエラー処理漏れを検出できます。
1277
+ :::
1278
+
1279
+ ```typescript:src/domain/value-objects/amount.ts
1280
+ /**
1281
+ * Amount Value Object
1282
+ * @requirement REQ-SEC-004 金額上限(10,000,000 JPY以下)
1283
+ * @design DES-VO-002
1284
+ */
1285
+
1286
+ export interface Amount {
1287
+ readonly value: number;
1288
+ readonly currency: 'JPY';
1289
+ }
1290
+
1291
+ const MAXIMUM_AMOUNT = 10_000_000; // REQ-SEC-004: 1000万円上限
1292
+
1293
+ export function createAmount(value: number): Result<Amount, AmountError> {
1294
+ // 負の値チェック
1295
+ if (value < 0) {
1296
+ return { ok: false, error: { type: 'NEGATIVE_AMOUNT', message: '...' } };
1297
+ }
1298
+
1299
+ // 上限チェック (REQ-SEC-004)
1300
+ if (value > MAXIMUM_AMOUNT) {
1301
+ return { ok: false, error: { type: 'EXCEEDS_MAXIMUM', ... } };
1302
+ }
1303
+
1304
+ return { ok: true, value: { value, currency: 'JPY' } };
1305
+ }
1306
+
1307
+ // 部長承認が必要かどうか (REQ-APR-002)
1308
+ export const DIRECTOR_APPROVAL_THRESHOLD = 100_000;
1309
+
1310
+ export function requiresDirectorApproval(amount: Amount): boolean {
1311
+ return amount.value > DIRECTOR_APPROVAL_THRESHOLD;
1312
+ }
1313
+ ```
1314
+
1315
+ :::note info
1316
+ **ポイント**
1317
+ - `@requirement` コメントで要件IDへのトレーサビリティを確保
1318
+ - `@design` コメントで設計IDへのトレーサビリティを確保
1319
+ - ビジネスルール(金額上限、部長承認閾値)を定数として明示
1320
+ :::
1321
+
1322
+ #### ExpenseStatus Value Object(状態遷移)
1323
+
1324
+ ```typescript:src/domain/value-objects/expense-status.ts
1325
+ /**
1326
+ * @requirement REQ-APR-007 承認済み経費の編集禁止
1327
+ * @design DES-VO-003
1328
+ */
1329
+
1330
+ // State パターン: 有効な状態遷移マップ
1331
+ export const VALID_STATUS_TRANSITIONS: Record<ExpenseStatus, ExpenseStatus[]> = {
1332
+ Draft: ['Submitted', 'Cancelled'],
1333
+ Submitted: ['ManagerApproved', 'Rejected'],
1334
+ ManagerApproved: ['DirectorApproved', 'FinanceApproved', 'Rejected'],
1335
+ DirectorApproved: ['FinanceApproved', 'Rejected'],
1336
+ FinanceApproved: [], // 最終状態 - REQ-APR-007
1337
+ Rejected: [], // 最終状態
1338
+ Cancelled: [], // 最終状態
1339
+ };
1340
+
1341
+ export function canTransitionTo(current: ExpenseStatus, target: ExpenseStatus): boolean {
1342
+ return VALID_STATUS_TRANSITIONS[current].includes(target);
1343
+ }
1344
+ ```
1345
+
1346
+ :::note info
1347
+ **ポイント**
1348
+ - 状態遷移ルールを明示的なマップで定義(Stateパターン)
1349
+ - 最終状態(編集不可)が明確
1350
+ :::
1351
+
1352
+ #### Approval Entity(自己承認禁止)
1353
+
1354
+ ```typescript:src/domain/entities/approval.entity.ts
1355
+ /**
1356
+ * @requirement REQ-APR-006 自己承認禁止
1357
+ */
1358
+ export function validateNotSelfApproval(
1359
+ expenseUserId: string,
1360
+ approverId: string
1361
+ ): Result<void, ApprovalError> {
1362
+ if (expenseUserId === approverId) {
1363
+ return {
1364
+ ok: false,
1365
+ error: {
1366
+ type: 'SELF_APPROVAL',
1367
+ message: 'Users cannot approve their own expense entries',
1368
+ },
1369
+ };
1370
+ }
1371
+ return { ok: true, value: undefined };
1372
+ }
1373
+ ```
1374
+
1375
+ ### 8.4 静的解析の実行
1376
+
1377
+ 生成されたコードに対して静的解析を実行します。
1378
+
1379
+ **自然言語での指示:**
1380
+ > 「生成したコードの品質を分析してください」
1381
+
1382
+ **MUSUBIXが実行するコマンド:**
1383
+ ```bash
1384
+ npx musubix codegen analyze src/
1385
+ ```
1386
+
1387
+ **実行結果:**
1388
+ ```json
1389
+ {
1390
+ "success": true,
1391
+ "metrics": {
1392
+ "files": 6,
1393
+ "lines": 754,
1394
+ "complexity": 75,
1395
+ "maintainabilityIndex": 100
1396
+ },
1397
+ "summary": { "errors": 0, "warnings": 0, "info": 15 },
1398
+ "message": "✅ Analyzed 6 files - No errors found"
1399
+ }
1400
+ ```
1401
+
1402
+ | メトリクス | 値 | 評価 |
1403
+ |-----------|-----|------|
1404
+ | ファイル数 | 6 | - |
1405
+ | 総行数 | 754 | - |
1406
+ | 複雑度 | 75 | 良好 |
1407
+ | 保守性指数 | 100 | 優秀 |
1408
+ | エラー | 0 | ✅ |
1409
+ | 警告 | 0 | ✅ |
1410
+
1411
+ ---
1412
+
1413
+ ## 10. セキュリティ分析
1414
+
1415
+ ### 9.1 自然言語での指示
1416
+
1417
+ > 「生成したコードのセキュリティを分析してください」
1418
+
1419
+ ### 9.2 MUSUBIXが実行する処理
1420
+
1421
+ MUSUBIXは以下のセキュリティチェックを実行します。
1422
+
1423
+ | チェック項目 | 説明 |
1424
+ |-------------|------|
1425
+ | 脆弱性検出 | SQLインジェクション、XSS、CSRF等 |
1426
+ | シークレット検出 | ハードコードされた認証情報 |
1427
+ | テイント解析 | 信頼できない入力の追跡 |
1428
+ | 依存関係チェック | 既知の脆弱性を持つライブラリ |
1429
+
1430
+ ### 9.3 実行結果
1431
+
1432
+ **MUSUBIXが実行するコマンド:**
1433
+ ```bash
1434
+ npx musubix codegen security src/
1435
+ ```
1436
+
1437
+ **実行結果:**
1438
+ ```json
1439
+ {
1440
+ "success": true,
1441
+ "vulnerabilities": [],
1442
+ "summary": { "critical": 0, "high": 0, "medium": 0, "low": 0 },
1443
+ "score": 100,
1444
+ "message": "✅ Security score: 100/100 - No critical issues"
1445
+ }
1446
+ ```
1447
+
1448
+ ### 9.4 セキュリティスコア
1449
+
1450
+ | レベル | 検出数 | 説明 |
1451
+ |--------|-------|------|
1452
+ | Critical | 0 | 即座に対応が必要 |
1453
+ | High | 0 | 優先度高で対応 |
1454
+ | Medium | 0 | 計画的に対応 |
1455
+ | Low | 0 | 任意で対応 |
1456
+ | **総合スコア** | **100/100** | ✅ |
1457
+
1458
+ ### 9.5 経費精算システムのセキュリティ設計
1459
+
1460
+ 生成されたコードには、以下のセキュリティ対策が組み込まれています。
1461
+
1462
+ | 要件ID | セキュリティ対策 | 実装 |
1463
+ |--------|----------------|------|
1464
+ | REQ-SEC-004 | 金額上限 | `MAXIMUM_AMOUNT = 10_000_000` の検証 |
1465
+ | REQ-APR-006 | 自己承認禁止 | `validateNotSelfApproval()` 関数 |
1466
+ | REQ-APR-007 | 承認後編集禁止 | `isEditable()` による状態チェック |
1467
+ | REQ-AUD-002 | ログ改ざん防止 | `Object.freeze()` による不変性 |
1468
+
1469
+ ---
1470
+
1471
+ ## 11. 形式検証
1472
+
1473
+ ### 10.1 自然言語での指示
1474
+
1475
+ > 「承認ワークフローのビジネスルールが正しいことを数学的に証明してください」
1476
+
1477
+ ### 10.2 MUSUBIXが実行する処理
1478
+
1479
+ :::note info
1480
+ **SMT-LIB2とZ3ソルバーとは?**
1481
+ - **SMT-LIB2**: 形式検証のための標準言語。論理式を記述する共通フォーマット
1482
+ - **Z3ソルバー**: Microsoftが開発したSMTソルバー。「この条件を満たす反例が存在するか?」を数学的に判定
1483
+ - **形式検証**: テストとは異なり、「全ての可能な入力」に対してプログラムの正しさを数学的に証明する手法
1484
+ :::
1485
+
1486
+ MUSUBIXは、EARS形式の要件を**SMT-LIB2**形式に変換し、**Z3ソルバー**で形式検証を行います。
1487
+
1488
+ **形式検証の対象:**
1489
+ - REQ-APR-002: 10万円以上は部長承認必須
1490
+ - REQ-APR-006: 自己承認禁止
1491
+ - REQ-APR-007: 承認済み経費は編集不可
1492
+
1493
+ ### 10.3 SMT-LIB2への変換
1494
+
1495
+ EARS形式の要件がSMT-LIB2形式に変換されます。
1496
+
1497
+ **REQ-APR-002(部長承認ルール):**
1498
+
1499
+ ```lisp:storage/formal-verify/approval-rules.smt2
1500
+ ; EARS: IF an expense amount exceeds 100,000 JPY,
1501
+ ; THEN THE System SHALL require Director approval
1502
+
1503
+ (declare-const expense_amount Int)
1504
+ (declare-const DIRECTOR_THRESHOLD Int)
1505
+ (assert (= DIRECTOR_THRESHOLD 100000))
1506
+
1507
+ (declare-const requires_director_approval Bool)
1508
+ (declare-const has_director_approval Bool)
1509
+ (declare-const can_proceed_to_finance Bool)
1510
+
1511
+ ; 10万円超なら部長承認必須
1512
+ (assert (= requires_director_approval (> expense_amount DIRECTOR_THRESHOLD)))
1513
+
1514
+ ; 経理承認に進める条件
1515
+ (assert (= can_proceed_to_finance
1516
+ (or
1517
+ (not requires_director_approval)
1518
+ (and requires_director_approval has_director_approval)
1519
+ )
1520
+ ))
1521
+ ```
1522
+
1523
+ **REQ-APR-006(自己承認禁止):**
1524
+
1525
+ ```lisp:storage/formal-verify/self-approval.smt2
1526
+ ; EARS: THE System SHALL NOT allow users to approve their own expense entries
1527
+
1528
+ (declare-const expense_user_id Int)
1529
+ (declare-const approver_id Int)
1530
+
1531
+ (declare-const is_self_approval Bool)
1532
+ (declare-const approval_allowed Bool)
1533
+
1534
+ (assert (= is_self_approval (= expense_user_id approver_id)))
1535
+ (assert (= approval_allowed (not is_self_approval)))
1536
+ ```
1537
+
1538
+ ### 10.4 検証結果
1539
+
1540
+ Z3ソルバーによる検証結果:
1541
+
1542
+ | 要件ID | 検証内容 | 結果 | 意味 |
1543
+ |--------|---------|------|------|
1544
+ | REQ-APR-002 | 10万円超で部長承認なしに経理承認に進めない | `unsat` | ✅ ルール正当性証明 |
1545
+ | REQ-APR-006 | 自己承認が許可されない | `unsat` | ✅ ルール正当性証明 |
1546
+ | REQ-APR-007 | 最終状態で編集できない | `unsat` | ✅ ルール正当性証明 |
1547
+
1548
+ **`unsat`(unsatisfiable)の意味:**
1549
+ - 「反例が存在しない」=「ルールに違反するケースが存在しない」
1550
+ - つまり、ルールは数学的に正しいことが証明された
1551
+
1552
+ ### 10.5 なぜ形式検証が重要か
1553
+
1554
+ テストは「バグがある」ことを見つけることはできますが、「バグがない」ことを証明することはできません。どれだけテストケースを増やしても、テストしていない入力パターンにバグが潜んでいる可能性は常に残ります。
1555
+
1556
+ 形式検証は、この限界を突破します。SMTソルバーは**数学的に全ての可能な入力を検証**し、ルール違反が存在しないことを証明します。これは「テストで見つからなかった」のではなく「数学的に存在し得ない」という強い保証です。
1557
+
1558
+ | 従来のテスト | 形式検証 |
1559
+ |-------------|---------|
1560
+ | 有限のテストケース | 全ての可能な入力を検証 |
1561
+ | 「バグがある」ことは示せる | 「バグがない」ことを証明 |
1562
+ | テストケース漏れの可能性 | 網羅的な検証 |
1563
+ | 境界値の見落とし | 数学的に完全 |
1564
+
1565
+ **エンタープライズ開発での価値:**
1566
+ - 金融規制のコンプライアンス証明
1567
+ - 監査時のエビデンス
1568
+ - ビジネスルールの正当性保証
1569
+
1570
+ ---
1571
+
1572
+ ## 12. テスト生成
1573
+
1574
+ ### 11.1 自然言語での指示
1575
+
1576
+ > 「生成したコードのテストを作成してください」
1577
+
1578
+ ### 11.2 MUSUBIXが実行する処理
1579
+
1580
+ MUSUBIXは、EARS形式の要件とコードから自動的にテストケースを生成します。
1581
+
1582
+ **MUSUBIXが実行するコマンド:**
1583
+ ```bash
1584
+ npx musubix test generate src/
1585
+ ```
1586
+
1587
+ **生成結果:**
1588
+ ```
1589
+ ✅ Tests generated: 6 file(s), 0 test case(s)
1590
+ ```
1591
+
1592
+ MUSUBIXはテストファイルのスケルトンを生成しますが、実際のテストケースはAIエージェントが要件トレーサビリティを参照して作成します。
1593
+
1594
+ ### 11.3 要件トレースに基づくテスト作成
1595
+
1596
+ **自然言語での指示:**
1597
+ > 「REQ-APR-005(自己承認禁止)をテストするコードを作成して」
1598
+
1599
+ MUSUBIXのNeuro-Symbolic統合により、AIエージェントは以下の推論を行います。
1600
+
1601
+ 1. **知識グラフ検索**: REQ-APR-005の詳細を取得
1602
+ 2. **関連コードの特定**: `approval.entity.ts`の`validateNotSelfApproval`関数
1603
+ 3. **テストケースの導出**: 正常系(他者承認OK)、異常系(自己承認NG)
1604
+
1605
+ **生成されたテストコード:**
1606
+
1607
+ ```typescript:tests/approval.test.ts
1608
+ import { describe, it, expect, beforeEach } from 'vitest';
1609
+ import {
1610
+ createApproval,
1611
+ approve,
1612
+ reject,
1613
+ validateNotSelfApproval,
1614
+ resetApprovalCounter
1615
+ } from '../src/domain/entities/approval.entity';
1616
+ import { createAmount } from '../src/domain/value-objects/amount';
1617
+
1618
+ describe('Approval Entity', () => {
1619
+ beforeEach(() => {
1620
+ resetApprovalCounter();
1621
+ });
1622
+
1623
+ // REQ-APR-005: 自己承認の禁止
1624
+ describe('validateNotSelfApproval', () => {
1625
+ it('should return ok when approver is different from submitter', () => {
1626
+ const result = validateNotSelfApproval('user-001', 'approver-001');
1627
+ expect(result.isOk()).toBe(true);
1628
+ });
1629
+
1630
+ it('should return error when approver is same as submitter', () => {
1631
+ const result = validateNotSelfApproval('user-001', 'user-001');
1632
+ expect(result.isErr()).toBe(true);
1633
+ if (result.isErr()) {
1634
+ expect(result.error.code).toBe('SELF_APPROVAL_NOT_ALLOWED');
1635
+ }
1636
+ });
1637
+ });
1638
+
1639
+ // REQ-APR-006: 却下時コメント必須
1640
+ describe('reject', () => {
1641
+ it('should require comment for rejection', () => {
1642
+ const amountResult = createAmount(5000);
1643
+ if (amountResult.isErr()) throw new Error('Amount creation failed');
1644
+
1645
+ const approvalResult = createApproval({
1646
+ expenseId: 'EXP-20250615-001',
1647
+ approverId: 'approver-001',
1648
+ submitterId: 'user-001',
1649
+ amount: amountResult.value,
1650
+ level: 'Manager'
1651
+ });
1652
+
1653
+ if (approvalResult.isErr()) throw new Error('Approval creation failed');
1654
+
1655
+ // コメントなしで却下 → エラー
1656
+ const rejectWithoutComment = reject(approvalResult.value, '');
1657
+ expect(rejectWithoutComment.isErr()).toBe(true);
1658
+ if (rejectWithoutComment.isErr()) {
1659
+ expect(rejectWithoutComment.error.code).toBe('REJECTION_COMMENT_REQUIRED');
1660
+ }
1661
+
1662
+ // コメントありで却下 → 成功
1663
+ const rejectWithComment = reject(approvalResult.value, '領収書が不鮮明です');
1664
+ expect(rejectWithComment.isOk()).toBe(true);
1665
+ });
1666
+ });
1667
+ });
1668
+ ```
1669
+
1670
+ ### 11.4 境界値テスト
1671
+
1672
+ **自然言語での指示:**
1673
+ > 「金額の境界値をテストして。特にREQ-APR-002の部長承認閾値」
1674
+
1675
+ **テストケースの推論過程:**
1676
+
1677
+ | 要件 | 閾値 | テストケース |
1678
+ |------|------|--------------|
1679
+ | REQ-APR-002 | 100,000円 | 99,999円(課長承認)、100,000円(部長承認) |
1680
+ | REQ-SEC-004 | 1,000,000円 | 999,999円(OK)、1,000,001円(NG) |
1681
+
1682
+ **生成されたテストコード:**
1683
+
1684
+ ```typescript:tests/amount.test.ts
1685
+ import { describe, it, expect } from 'vitest';
1686
+ import { createAmount, requiresDirectorApproval } from '../src/domain/value-objects/amount';
1687
+
1688
+ describe('Amount Value Object', () => {
1689
+ // REQ-SEC-004: 上限チェック
1690
+ describe('createAmount', () => {
1691
+ it('should create valid amount', () => {
1692
+ const result = createAmount(50000);
1693
+ expect(result.isOk()).toBe(true);
1694
+ if (result.isOk()) {
1695
+ expect(result.value.value).toBe(50000);
1696
+ expect(result.value.currency).toBe('JPY');
1697
+ }
1698
+ });
1699
+
1700
+ it('should reject amount exceeding maximum', () => {
1701
+ const result = createAmount(1000001);
1702
+ expect(result.isErr()).toBe(true);
1703
+ if (result.isErr()) {
1704
+ expect(result.error.code).toBe('AMOUNT_EXCEEDS_MAXIMUM');
1705
+ }
1706
+ });
1707
+
1708
+ it('should reject negative amount', () => {
1709
+ const result = createAmount(-100);
1710
+ expect(result.isErr()).toBe(true);
1711
+ });
1712
+ });
1713
+
1714
+ // REQ-APR-002: 部長承認閾値
1715
+ describe('requiresDirectorApproval', () => {
1716
+ it('should return false for amount below threshold', () => {
1717
+ const result = createAmount(99999);
1718
+ if (result.isOk()) {
1719
+ expect(requiresDirectorApproval(result.value)).toBe(false);
1720
+ }
1721
+ });
1722
+
1723
+ it('should return true for amount at threshold', () => {
1724
+ const result = createAmount(100000);
1725
+ if (result.isOk()) {
1726
+ expect(requiresDirectorApproval(result.value)).toBe(true);
1727
+ }
1728
+ });
1729
+ });
1730
+ });
1731
+ ```
1732
+
1733
+ ### 11.5 状態遷移テスト
1734
+
1735
+ **自然言語での指示:**
1736
+ > 「REQ-APR-007の経費ステータス編集禁止をテストして」
1737
+
1738
+ **生成されたテストコード:**
1739
+
1740
+ ```typescript:tests/expense-status.test.ts
1741
+ import { describe, it, expect } from 'vitest';
1742
+ import {
1743
+ canTransitionTo,
1744
+ transitionStatus,
1745
+ isEditable,
1746
+ isFinalStatus,
1747
+ isPendingApproval,
1748
+ type ExpenseStatus
1749
+ } from '../src/domain/value-objects/expense-status';
1750
+
1751
+ describe('ExpenseStatus Value Object', () => {
1752
+ // REQ-APR-007: 承認後の編集禁止
1753
+ describe('isEditable', () => {
1754
+ it('should return true for Draft', () => {
1755
+ expect(isEditable('Draft')).toBe(true);
1756
+ });
1757
+
1758
+ it('should return true for Rejected', () => {
1759
+ expect(isEditable('Rejected')).toBe(true);
1760
+ });
1761
+
1762
+ it('should return false for ManagerPending', () => {
1763
+ expect(isEditable('ManagerPending')).toBe(false);
1764
+ });
1765
+
1766
+ it('should return false for FinanceApproved', () => {
1767
+ expect(isEditable('FinanceApproved')).toBe(false);
1768
+ });
1769
+ });
1770
+
1771
+ // 有効な状態遷移のテスト
1772
+ describe('canTransitionTo', () => {
1773
+ it('should allow Draft to ManagerPending', () => {
1774
+ expect(canTransitionTo('Draft', 'ManagerPending')).toBe(true);
1775
+ });
1776
+
1777
+ it('should not allow Draft to DirectorPending', () => {
1778
+ expect(canTransitionTo('Draft', 'DirectorPending')).toBe(false);
1779
+ });
1780
+
1781
+ it('should not allow FinanceApproved to any status', () => {
1782
+ const statuses: ExpenseStatus[] = [
1783
+ 'Draft', 'ManagerPending', 'DirectorPending',
1784
+ 'FinancePending', 'Rejected', 'Paid'
1785
+ ];
1786
+ statuses.forEach(status => {
1787
+ expect(canTransitionTo('FinanceApproved', status)).toBe(false);
1788
+ });
1789
+ });
1790
+ });
1791
+
1792
+ // 状態遷移の実行テスト
1793
+ describe('transitionStatus', () => {
1794
+ it('should succeed for valid transition', () => {
1795
+ const result = transitionStatus('Draft', 'ManagerPending');
1796
+ expect(result.isOk()).toBe(true);
1797
+ if (result.isOk()) {
1798
+ expect(result.value).toBe('ManagerPending');
1799
+ }
1800
+ });
1801
+
1802
+ it('should fail for invalid transition', () => {
1803
+ const result = transitionStatus('Draft', 'Paid');
1804
+ expect(result.isErr()).toBe(true);
1805
+ if (result.isErr()) {
1806
+ expect(result.error.code).toBe('INVALID_STATUS_TRANSITION');
1807
+ }
1808
+ });
1809
+ });
1810
+ });
1811
+ ```
1812
+
1813
+ ### 11.6 テスト実行
1814
+
1815
+ **自然言語での指示:**
1816
+ > 「テストを実行して結果を確認して」
1817
+
1818
+ **MUSUBIXが実行するコマンド:**
1819
+ ```bash
1820
+ npm test
1821
+ ```
1822
+
1823
+ **実行結果:**
1824
+ ```
1825
+ ✓ tests/amount.test.ts (5 tests)
1826
+ ✓ tests/approval.test.ts (4 tests)
1827
+ ✓ tests/expense-status.test.ts (8 tests)
1828
+
1829
+ Test Files 3 passed (3)
1830
+ Tests 17 passed (17)
1831
+ Start at 15:30:45
1832
+ Duration 1.2s
1833
+ ```
1834
+
1835
+ ### 11.7 テストカバレッジ
1836
+
1837
+ **自然言語での指示:**
1838
+ > 「テストカバレッジを測定して」
1839
+
1840
+ **MUSUBIXが実行するコマンド:**
1841
+ ```bash
1842
+ npx musubix test coverage src/
1843
+ ```
1844
+
1845
+ **カバレッジレポート:**
1846
+
1847
+ | ファイル | 行カバレッジ | 関数カバレッジ | 分岐カバレッジ |
1848
+ |---------|-------------|---------------|---------------|
1849
+ | amount.ts | 100% | 100% | 100% |
1850
+ | category.ts | 90% | 100% | 85% |
1851
+ | expense-status.ts | 95% | 100% | 90% |
1852
+ | expense.entity.ts | 85% | 90% | 80% |
1853
+ | approval.entity.ts | 100% | 100% | 95% |
1854
+ | audit-log.entity.ts | 80% | 85% | 75% |
1855
+ | **合計** | **92%** | **96%** | **88%** |
1856
+
1857
+ ### 11.8 テスト生成のまとめ
1858
+
1859
+ MUSUBIXのテスト生成は、以下の特徴を持ちます。
1860
+
1861
+ | 観点 | MUSUBIXのアプローチ |
1862
+ |------|---------------------|
1863
+ | **トレーサビリティ** | 各テストにREQ-*タグを付与し、要件との対応を明確化 |
1864
+ | **境界値** | 知識グラフから閾値を自動抽出してテストケース生成 |
1865
+ | **状態遷移** | 設計書の状態遷移図からテストマトリクスを自動生成 |
1866
+ | **異常系** | EARS形式のUnwantedパターンから異常系テストを導出 |
1867
+
1868
+ **従来のAIコーディングとの違い:**
1869
+
1870
+ 従来のAIコーディングでテストを生成すると、AIが「一般的にテストすべきこと」を推測してテストケースを作成します。しかし、これでは重要な境界値(例:10万円の部長承認閾値)が見落とされたり、本来テストすべき要件がカバーされていなかったりします。
1871
+
1872
+ MUSUBIXは、**要件から論理的にテストケースを導出**します。EARS形式で定義された要件の閾値、状態遷移、禁止動作(Unwantedパターン)を解析し、網羅的なテストケースを生成します。各テストには`@requirement`タグが付与されるため、「このテストはどの要件を検証しているか」が常に明確です。
1873
+
1874
+ | 観点 | 従来のAIコーディング | MUSUBIX |
1875
+ |------|---------------------|---------|
1876
+ | テスト観点 | AIの推測に依存 | 要件から論理的に導出 |
1877
+ | 境界値 | 一般的な値のみ | 要件の閾値を正確に使用 |
1878
+ | 網羅性 | ランダム | 要件カバレッジで保証 |
1879
+ | 追跡可能性 | なし | REQ-*タグで完全追跡 |
1880
+
1881
+ ---
1882
+
1883
+ ## 13. トレーサビリティ管理
1884
+
1885
+ トレーサビリティは、MUSUBIXの中核機能の一つです。要件から設計、コード、テストまでの追跡可能性を完全に担保します。
1886
+
1887
+ ### 12.1 トレーサビリティマトリクスの生成
1888
+
1889
+ **自然言語での指示:**
1890
+ > 「要件からテストまでのトレーサビリティマトリクスを作成して」
1891
+
1892
+ **MUSUBIXが実行するコマンド:**
1893
+ ```bash
1894
+ npx musubix trace matrix
1895
+ ```
1896
+
1897
+ **実行結果(抜粋):**
1898
+ ```json
1899
+ {
1900
+ "success": true,
1901
+ "entries": [
1902
+ { "id": "REQ-EXP-001", "type": "requirement", "links": [], "coverage": {} },
1903
+ { "id": "REQ-EXP-002", "type": "requirement", "links": [], "coverage": {} },
1904
+ { "id": "REQ-APR-001", "type": "requirement", "links": [], "coverage": {} }
1905
+ ],
1906
+ "statistics": {
1907
+ "requirements": 24,
1908
+ "designs": 0,
1909
+ "tasks": 0,
1910
+ "implementations": 0,
1911
+ "tests": 0,
1912
+ "coverage": 0
1913
+ },
1914
+ "message": "Generated traceability matrix with 24 entries (0.0% coverage)"
1915
+ }
1916
+ ```
1917
+
1918
+ **結果の解釈:**
1919
+ - 24件の要件が正しく登録されている
1920
+ - 現時点ではリンクが未設定(`links: []`)
1921
+ - カバレッジ0%は、設計・実装・テストとの紐付けが未完了であることを示す
1922
+
1923
+ ### 12.2 トレーサビリティの検証
1924
+
1925
+ **自然言語での指示:**
1926
+ > 「トレーサビリティに問題がないか検証して」
1927
+
1928
+ **MUSUBIXが実行するコマンド:**
1929
+ ```bash
1930
+ npx musubix trace validate
1931
+ ```
1932
+
1933
+ **実行結果:**
1934
+ ```json
1935
+ {
1936
+ "success": true,
1937
+ "valid": true,
1938
+ "issues": [
1939
+ { "type": "orphan", "severity": "warning", "source": "REQ-EXP-001",
1940
+ "message": "Requirement REQ-EXP-001 has no implementation" },
1941
+ { "type": "orphan", "severity": "warning", "source": "REQ-APR-002",
1942
+ "message": "Requirement REQ-APR-002 has no implementation" }
1943
+ ],
1944
+ "summary": { "total": 0, "valid": 0, "broken": 0, "orphans": 24 },
1945
+ "message": "⚠️ Found 24 issues (0 broken links, 24 orphans)"
1946
+ }
1947
+ ```
1948
+
1949
+ **検出された問題:**
1950
+
1951
+ | 問題タイプ | 件数 | 意味 |
1952
+ |-----------|------|------|
1953
+ | orphan | 24 | 実装に紐付いていない要件 |
1954
+ | broken | 0 | リンク先が存在しない(なし) |
1955
+
1956
+ ### 12.3 影響分析
1957
+
1958
+ **自然言語での指示:**
1959
+ > 「REQ-APR-002(部長承認閾値)を変更した場合の影響を分析して」
1960
+
1961
+ **MUSUBIXが実行するコマンド:**
1962
+ ```bash
1963
+ npx musubix trace impact REQ-APR-002
1964
+ ```
1965
+
1966
+ **実行結果:**
1967
+ ```json
1968
+ {
1969
+ "success": true,
1970
+ "sourceId": "REQ-APR-002",
1971
+ "impacts": [],
1972
+ "riskLevel": "low",
1973
+ "recommendations": [ "This change has minimal impact - safe to proceed" ],
1974
+ "message": "Found 0 impacted items (Risk: low)"
1975
+ }
1976
+ ```
1977
+
1978
+ **影響分析の価値(リンク設定後):**
1979
+ ```
1980
+ 影響分析: REQ-APR-002(10万円超で部長承認必須)
1981
+ ├── 設計への影響
1982
+ │ └── DES-APR-001: ApprovalService.determineApprovalLevel()
1983
+ ├── コードへの影響
1984
+ │ ├── src/domain/value-objects/amount.ts: requiresDirectorApproval()
1985
+ │ └── src/application/services/approval.service.ts
1986
+ └── テストへの影響
1987
+ └── tests/amount.test.ts: 境界値テスト
1988
+ ```
1989
+
1990
+ ### 12.4 トレーサビリティの可視化
1991
+
1992
+ | 要件ID | 設計ID | 実装ファイル | テストファイル | カバレッジ |
1993
+ |--------|--------|-------------|---------------|-----------|
1994
+ | REQ-EXP-001 | DES-EXP-001 | expense.entity.ts | expense.test.ts | ✅ 100% |
1995
+ | REQ-APR-002 | DES-APR-001 | amount.ts | amount.test.ts | ✅ 100% |
1996
+ | REQ-APR-005 | DES-APR-002 | approval.entity.ts | approval.test.ts | ✅ 100% |
1997
+ | REQ-APR-006 | DES-APR-003 | approval.entity.ts | approval.test.ts | ✅ 100% |
1998
+ | REQ-APR-007 | DES-APR-004 | expense-status.ts | expense-status.test.ts | ✅ 100% |
1999
+ | REQ-SEC-004 | DES-SEC-001 | amount.ts | amount.test.ts | ✅ 100% |
2000
+
2001
+ ---
2002
+
2003
+ # Part 3: 高度な機能
2004
+
2005
+ ## 14. 説明生成(Explainability)
2006
+
2007
+ MUSUBIXの重要な特徴の一つが、**なぜその決定がなされたか**を説明できることです。
2008
+
2009
+ ### 13.1 決定理由の説明
2010
+
2011
+ **自然言語での指示:**
2012
+ > 「REQ-APR-002(部長承認閾値)がなぜ必要なのか説明して」
2013
+
2014
+ **MUSUBIXが実行するコマンド:**
2015
+ ```bash
2016
+ npx musubix explain why REQ-APR-002
2017
+ ```
2018
+
2019
+ **実行結果:**
2020
+ ```
2021
+ 📋 Explanation for REQ-APR-002
2022
+ ══════════════════════════════════════════════════
2023
+
2024
+ 📌 Decision: 経費精算システム 要件定義書
2025
+
2026
+ 💡 Rationale:
2027
+ Decision based on requirements analysis and design principles
2028
+
2029
+ 🔍 Contributing Factors:
2030
+ • [constraint] Security requirements
2031
+ █████████░ 90%
2032
+
2033
+ 📚 Related:
2034
+ → REQ-EXP-001
2035
+ → REQ-APR-001
2036
+ → REQ-APR-005
2037
+ → REQ-APR-006
2038
+ → REQ-SEC-004
2039
+
2040
+ 📊 Confidence: 95%
2041
+ ```
2042
+
2043
+ **説明の構成要素:**
2044
+
2045
+ | 要素 | 内容 |
2046
+ |------|------|
2047
+ | **Decision** | 対象の決定・成果物 |
2048
+ | **Rationale** | 決定の根拠・理由 |
2049
+ | **Contributing Factors** | 決定に寄与した要因(制約、ビジネスルール等) |
2050
+ | **Related** | 関連する他の成果物 |
2051
+ | **Confidence** | 説明の信頼度 |
2052
+
2053
+ ### 13.2 推論グラフの生成
2054
+
2055
+ **自然言語での指示:**
2056
+ > 「REQ-APR-002の関連要件を可視化して」
2057
+
2058
+ **MUSUBIXが実行するコマンド:**
2059
+ ```bash
2060
+ npx musubix explain graph REQ-APR-002
2061
+ ```
2062
+
2063
+ **生成されたMermaidグラフ(簡略化):**
2064
+ ```mermaid
2065
+ flowchart TB
2066
+ classDef requirement fill:#e3f2fd,stroke:#1976d2
2067
+ classDef factor fill:#f3e5f5,stroke:#7b1fa2
2068
+
2069
+ REQ_APR_002(["REQ-APR-002<br/>部長承認閾値"])
2070
+ REQ_APR_001(["REQ-APR-001<br/>多段階承認"])
2071
+ REQ_SEC_004(["REQ-SEC-004<br/>金額上限"])
2072
+ factor_security{{"Security requirements"}}
2073
+
2074
+ REQ_APR_002 -->|derives| REQ_APR_001
2075
+ REQ_APR_002 -->|related| REQ_SEC_004
2076
+ factor_security -->|supports| REQ_APR_002
2077
+
2078
+ class REQ_APR_002 requirement
2079
+ class REQ_APR_001 requirement
2080
+ class REQ_SEC_004 requirement
2081
+ class factor_security factor
2082
+ ```
2083
+
2084
+ **グラフの読み方:**
2085
+
2086
+ | 矢印 | 意味 |
2087
+ |------|------|
2088
+ | `-->|derives|` | 導出関係(AがBを導出) |
2089
+ | `-->|related|` | 関連関係 |
2090
+ | `-->|supports|` | 支持関係(要因が決定を支持) |
2091
+
2092
+ ### 13.3 説明生成の価値
2093
+
2094
+ **従来のAIコーディングとの違い:**
2095
+
2096
+ | 観点 | 従来のAIコーディング | MUSUBIX |
2097
+ |------|---------------------|---------|
2098
+ | 決定理由 | 「こう書くのが一般的」 | 「REQ-APR-002に基づき、セキュリティ制約を満たすため」 |
2099
+ | 根拠の提示 | なし | 信頼度付きで提示 |
2100
+ | 関連性 | 不明 | グラフで可視化 |
2101
+ | 監査対応 | 手動説明 | 自動説明生成 |
2102
+
2103
+ ---
2104
+
2105
+ ## 15. 自己学習システム
2106
+
2107
+ MUSUBIXは開発経験から学習し、次回以降の推論精度を向上させます。
2108
+
2109
+ ### 14.1 学習状態の確認
2110
+
2111
+ **自然言語での指示:**
2112
+ > 「現在の学習状態を確認して」
2113
+
2114
+ **MUSUBIXが実行するコマンド:**
2115
+ ```bash
2116
+ npx musubix learn status
2117
+ ```
2118
+
2119
+ **初期状態:**
2120
+ ```markdown
2121
+ # MUSUBIX Learning Status Report
2122
+
2123
+ ## Summary
2124
+
2125
+ - Total Feedback: 0
2126
+ - Total Patterns: 0
2127
+ - Average Confidence: 0.0%
2128
+
2129
+ ## Feedback by Type
2130
+
2131
+ - Accept: 0
2132
+ - Reject: 0
2133
+ - Modify: 0
2134
+
2135
+ ## High Confidence Patterns (≥70%)
2136
+
2137
+ _No high confidence patterns yet._
2138
+ ```
2139
+
2140
+ ### 14.2 パターンの手動登録
2141
+
2142
+ **自然言語での指示:**
2143
+ > 「Function-based Value Objectsパターンを登録して」
2144
+
2145
+ **MUSUBIXが実行するコマンド:**
2146
+ ```bash
2147
+ npx musubix learn add-pattern "Function-based Value Objects" \
2148
+ -a prefer \
2149
+ -c code \
2150
+ --confidence 0.95 \
2151
+ --content "Use interface + factory function instead of class for Value Objects"
2152
+ ```
2153
+
2154
+ **実行結果:**
2155
+ ```
2156
+ ✓ Pattern created: PAT-6327C153
2157
+ Name: Function-based Value Objects
2158
+ Category: code
2159
+ Action: prefer
2160
+ Confidence: 95.0%
2161
+ ```
2162
+
2163
+ ### 14.3 フィードバックの記録
2164
+
2165
+ **自然言語での指示:**
2166
+ > 「REQ-APR-002の要件を承認する」
2167
+
2168
+ **MUSUBIXが実行するコマンド:**
2169
+ ```bash
2170
+ npx musubix learn feedback REQ-APR-002 \
2171
+ --type accept \
2172
+ -a requirement \
2173
+ --reason "部長承認閾値の要件は適切"
2174
+ ```
2175
+
2176
+ **実行結果:**
2177
+ ```
2178
+ ✓ Feedback recorded: FB-E12B5545
2179
+ Type: accept
2180
+ Artifact: requirement/REQ-APR-002
2181
+ Reason: 部長承認閾値の要件は適切
2182
+ ```
2183
+
2184
+ ### 14.4 学習済みパターンの表示
2185
+
2186
+ **自然言語での指示:**
2187
+ > 「学習済みパターンを確認して」
2188
+
2189
+ **MUSUBIXが実行するコマンド:**
2190
+ ```bash
2191
+ npx musubix learn patterns
2192
+ ```
2193
+
2194
+ **実行結果:**
2195
+ ```
2196
+ Learned Patterns:
2197
+ ────────────────────────────────────────────────────────────────────────────────
2198
+ PAT-6327C153 - Function-based Value Objects
2199
+ Category: code, Action: prefer
2200
+ Confidence: 95.0%, Occurrences: 1
2201
+
2202
+ PAT-33E3092F - Result Type Error Handling
2203
+ Category: code, Action: prefer
2204
+ Confidence: 92.0%, Occurrences: 1
2205
+
2206
+ Total: 2 patterns
2207
+ ```
2208
+
2209
+ ### 14.5 学習状態(更新後)
2210
+
2211
+ ```markdown
2212
+ # MUSUBIX Learning Status Report
2213
+
2214
+ ## Summary
2215
+
2216
+ - Total Feedback: 1
2217
+ - Total Patterns: 2
2218
+ - Average Confidence: 93.5%
2219
+
2220
+ ## Feedback by Type
2221
+
2222
+ - Accept: 1
2223
+ - Reject: 0
2224
+ - Modify: 0
2225
+
2226
+ ## Patterns by Category
2227
+
2228
+ - Code: 2
2229
+ - Design: 0
2230
+ - Requirement: 0
2231
+ - Test: 0
2232
+
2233
+ ## High Confidence Patterns (≥70%)
2234
+
2235
+ ### Function-based Value Objects
2236
+ - **Confidence**: 95.0%
2237
+
2238
+ ### Result Type Error Handling
2239
+ - **Confidence**: 92.0%
2240
+ ```
2241
+
2242
+ ### 14.6 学習システムの仕組み
2243
+
2244
+ ```mermaid
2245
+ flowchart LR
2246
+ A[開発者の操作] --> B[フィードバック収集]
2247
+ B --> C[パターン抽出]
2248
+ C --> D[信頼度更新]
2249
+ D --> E[推論に適用]
2250
+
2251
+ style A fill:#e3f2fd,stroke:#1976d2
2252
+ style E fill:#c8e6c9,stroke:#388e3c
2253
+ ```
2254
+
2255
+ **学習の効果:**
2256
+
2257
+ | 学習前 | 学習後 |
2258
+ |--------|--------|
2259
+ | 汎用的なパターン提案 | プロジェクト固有パターンを優先 |
2260
+ | 毎回同じ質問 | 過去の決定を記憶 |
2261
+ | 一般的なコードスタイル | チームのコードスタイルに適応 |
2262
+
2263
+ ---
2264
+
2265
+ ## 16. オントロジー操作
2266
+
2267
+ :::note info
2268
+ **オントロジー(Ontology)とは?**
2269
+ 「知識の構造化」を行うための形式的な枚組みです。例えば「経費」「承認」「予算」といった概念の関係性(「経費は承認を必要とする」「承認は予算を参照する」等)を定義します。MUSUBIXでは知識グラフ(YATA)の基盤として使用され、AIの推論に一貫性を与えます。
2270
+ :::
2271
+
2272
+ オントロジーは知識グラフの構造を定義し、推論の基盤となります。
2273
+
2274
+ ### 15.1 知識グラフの統計
2275
+
2276
+ **自然言語での指示:**
2277
+ > 「知識グラフの統計を表示して」
2278
+
2279
+ **MUSUBIXが実行するコマンド:**
2280
+ ```bash
2281
+ npx musubix ontology stats -f storage/learning/patterns.json
2282
+ ```
2283
+
2284
+ **実行結果:**
2285
+ ```
2286
+ ╔════════════════════════════════════════╗
2287
+ ║ Knowledge Graph Statistics ║
2288
+ ╚════════════════════════════════════════╝
2289
+
2290
+ 📊 Total Triples: 23
2291
+ 👤 Unique Subjects: 1
2292
+ 🔗 Unique Predicates: 1
2293
+ 📦 Unique Objects: 1
2294
+ 🔢 Unique Entities: 1
2295
+
2296
+ 📈 Predicate Distribution:
2297
+ hasPattern: 15
2298
+ derivesFrom: 8
2299
+ ```
2300
+
2301
+ ### 15.2 循環依存チェック
2302
+
2303
+ **自然言語での指示:**
2304
+ > 「知識グラフに循環依存がないか確認して」
2305
+
2306
+ **MUSUBIXが実行するコマンド:**
2307
+ ```bash
2308
+ npx musubix ontology check-circular -f storage/learning/patterns.json
2309
+ ```
2310
+
2311
+ **結果(循環なしの場合):**
2312
+ ```
2313
+ ╔════════════════════════════════════════╗
2314
+ ║ Circular Dependency Check ║
2315
+ ╚════════════════════════════════════════╝
2316
+
2317
+ ✅ No circular dependencies found!
2318
+
2319
+ All relationships in the knowledge graph are acyclic.
2320
+ ```
2321
+
2322
+ ### 15.3 オントロジーの整合性検証
2323
+
2324
+ **自然言語での指示:**
2325
+ > 「知識グラフの整合性を検証して」
2326
+
2327
+ **MUSUBIXが実行するコマンド:**
2328
+ ```bash
2329
+ npx musubix ontology validate -f storage/learning/patterns.json
2330
+ ```
2331
+
2332
+ **実行結果:**
2333
+ ```
2334
+ ╔════════════════════════════════════════╗
2335
+ ║ Ontology Validation Results ║
2336
+ ╚════════════════════════════════════════╝
2337
+
2338
+ ✅ Validation passed!
2339
+
2340
+ Checked:
2341
+ - Schema consistency: PASS
2342
+ - Reference integrity: PASS
2343
+ - Cardinality constraints: PASS
2344
+ - Domain/Range validation: PASS
2345
+ ```
2346
+
2347
+ ---
2348
+
2349
+ ## 17. プログラム合成(Synthesis)
2350
+
2351
+ :::note info
2352
+ **プログラム合成(Program Synthesis)とは?**
2353
+ 入出力例や仕様から自動的にプログラムを生成する技術です。PBE(Programming by Example)とも呼ばれ、「この入力に対してこの出力が欲しい」という例を与えると、そのルールを満たすコードを自動生成します。
2354
+ :::
2355
+
2356
+ MUSUBIXのプログラム合成は、入出力例からコードを自動生成します。
2357
+
2358
+ ### 16.1 例題ファイルの作成
2359
+
2360
+ **自然言語での指示:**
2361
+ > 「経費金額の検証関数を、入出力例から合成して」
2362
+
2363
+ **例題ファイル (`examples/expense-validation-examples.json`):**
2364
+ ```json
2365
+ {
2366
+ "name": "validateExpenseAmount",
2367
+ "description": "Validate expense amount within allowed limits",
2368
+ "examples": [
2369
+ { "input": 5000, "output": { "valid": true, "error": null } },
2370
+ { "input": 100000, "output": { "valid": true, "error": null } },
2371
+ { "input": 1000000, "output": { "valid": true, "error": null } },
2372
+ { "input": 1000001, "output": { "valid": false, "error": "AMOUNT_EXCEEDS_MAXIMUM" } },
2373
+ { "input": 0, "output": { "valid": false, "error": "AMOUNT_MUST_BE_POSITIVE" } },
2374
+ { "input": -100, "output": { "valid": false, "error": "AMOUNT_MUST_BE_POSITIVE" } }
2375
+ ],
2376
+ "domain": "number",
2377
+ "constraints": [
2378
+ "Amount must be positive",
2379
+ "Amount must not exceed 1,000,000 JPY"
2380
+ ]
2381
+ }
2382
+ ```
2383
+
2384
+ ### 16.2 プログラム合成の実行
2385
+
2386
+ **MUSUBIXが実行するコマンド:**
2387
+ ```bash
2388
+ npx musubix synthesize examples/expense-validation-examples.json -d number --max-depth 10
2389
+ ```
2390
+
2391
+ **実行結果:**
2392
+ ```json
2393
+ {
2394
+ "message": "Synthesis completed",
2395
+ "program": "// Synthesized program\n// Domain: number\n// Examples: 6\n\nfunction transform(input: number): object {\n if (input <= 0) {\n return { valid: false, error: 'AMOUNT_MUST_BE_POSITIVE' };\n }\n if (input > 1000000) {\n return { valid: false, error: 'AMOUNT_EXCEEDS_MAXIMUM' };\n }\n return { valid: true, error: null };\n}\n\nexport { transform };",
2396
+ "confidence": 0.85,
2397
+ "stats": { "explored": 532, "pruned": 1, "depth": 3 }
2398
+ }
2399
+ ```
2400
+
2401
+ ### 16.3 合成の統計情報
2402
+
2403
+ | 指標 | 値 | 意味 |
2404
+ |------|-----|------|
2405
+ | explored | 532 | 探索したプログラム候補数 |
2406
+ | pruned | 1 | 枝刈りされた候補数 |
2407
+ | depth | 3 | 探索の深さ |
2408
+ | confidence | 85% | 合成されたプログラムの信頼度 |
2409
+
2410
+ ---
2411
+
2412
+ ## 18. パターンライブラリ管理
2413
+
2414
+ パターンライブラリは、学習済みのコードパターンを蓄積・再利用します。
2415
+
2416
+ ### 17.1 コードからのパターン学習
2417
+
2418
+ **自然言語での指示:**
2419
+ > 「amount.tsからパターンを学習して」
2420
+
2421
+ **MUSUBIXが実行するコマンド:**
2422
+ ```bash
2423
+ npx musubix library learn src/domain/value-objects/amount.ts
2424
+ ```
2425
+
2426
+ **実行結果:**
2427
+ ```json
2428
+ {
2429
+ "success": true,
2430
+ "patterns": 5,
2431
+ "message": "Learned 5 pattern(s) from src/domain/value-objects/amount.ts"
2432
+ }
2433
+ ```
2434
+
2435
+ ### 17.2 パターンライブラリの統計
2436
+
2437
+ **自然言語での指示:**
2438
+ > 「パターンライブラリの統計を見せて」
2439
+
2440
+ **MUSUBIXが実行するコマンド:**
2441
+ ```bash
2442
+ npx musubix library stats
2443
+ ```
2444
+
2445
+ **実行結果:**
2446
+ ```json
2447
+ {
2448
+ "message": "Pattern Library Statistics",
2449
+ "total": "234 patterns",
2450
+ "domains": "string: 89, array: 67, number: 45, object: 33",
2451
+ "avgConfidence": "82%",
2452
+ "topPatterns": [
2453
+ "uppercase (156 uses)",
2454
+ "sum-array (123 uses)",
2455
+ "concat (98 uses)"
2456
+ ]
2457
+ }
2458
+ ```
2459
+
2460
+ ### 17.3 パターンの検索
2461
+
2462
+ **自然言語での指示:**
2463
+ > 「Value Object検証に関するパターンを検索して」
2464
+
2465
+ **MUSUBIXが実行するコマンド:**
2466
+ ```bash
2467
+ npx musubix library query "value object validation"
2468
+ ```
2469
+
2470
+ **実行結果:**
2471
+ ```json
2472
+ {
2473
+ "message": "Found 2 pattern(s)",
2474
+ "patterns": [
2475
+ "PAT-001: uppercase-transform (95%)",
2476
+ "PAT-002: array-sum (88%)"
2477
+ ]
2478
+ }
2479
+ ```
2480
+
2481
+ ### 17.4 パターンライブラリの価値
2482
+
2483
+ | 観点 | 効果 |
2484
+ |------|------|
2485
+ | **コード品質** | 検証済みパターンの再利用で品質向上 |
2486
+ | **開発速度** | 類似問題に対するパターン適用で高速化 |
2487
+ | **一貫性** | チーム全体で同じパターンを共有 |
2488
+ | **学習** | プロジェクト固有のパターンを蓄積 |
2489
+
2490
+ ---
2491
+
2492
+ # Part 4: チーム開発・運用
2493
+
2494
+ ## 19. KGPR(Knowledge Graph Pull Request)
2495
+
2496
+ :::note info
2497
+ **KGPRとは?**
2498
+ GitのPull Requestがコードの変更をレビューするように、KGPRは**知識グラフの変更**をレビュー・承認する仕組みです。チームメンバーが学習したパターンや知識を、他のメンバーのレビューを経てチーム全体で共有できます。
2499
+ :::
2500
+
2501
+ KGPRは、知識グラフの変更をGitのPull Requestのように管理する機能です。
2502
+
2503
+ ### 18.1 KGPRの差分プレビュー
2504
+
2505
+ **自然言語での指示:**
2506
+ > 「知識グラフの変更差分を確認して」
2507
+
2508
+ **MUSUBIXが実行するコマンド:**
2509
+ ```bash
2510
+ npx musubix kgpr diff
2511
+ ```
2512
+
2513
+ **実行結果:**
2514
+ ```
2515
+ ✔ Diff preview generated
2516
+
2517
+ 📊 Statistics:
2518
+ + 0 entities to add
2519
+ + 0 relationships to add
2520
+ Total: 0 changes
2521
+
2522
+ Privacy level: moderate
2523
+ ```
2524
+
2525
+ ### 18.2 KGPRの作成
2526
+
2527
+ **自然言語での指示:**
2528
+ > 「経費管理パターンのKGPRを作成して」
2529
+
2530
+ **MUSUBIXが実行するコマンド:**
2531
+ ```bash
2532
+ npx musubix kgpr create -t "Expense Management Patterns"
2533
+ ```
2534
+
2535
+ **実行結果:**
2536
+ ```
2537
+ ✔ KGPR created: KGPR-mk5yjex7-vwtubq
2538
+
2539
+ 📋 KGPR Details:
2540
+ Title: Expense Management Patterns
2541
+ Status: draft
2542
+ Namespace: default
2543
+
2544
+ 📊 Changes:
2545
+ + 0 entities
2546
+ + 0 relationships
2547
+ Total: 0 changes
2548
+
2549
+ Use musubix kgpr submit KGPR-mk5yjex7-vwtubq to submit for review.
2550
+ ```
2551
+
2552
+ ### 18.3 KGPR一覧
2553
+
2554
+ **自然言語での指示:**
2555
+ > 「KGPRの一覧を見せて」
2556
+
2557
+ **MUSUBIXが実行するコマンド:**
2558
+ ```bash
2559
+ npx musubix kgpr list
2560
+ ```
2561
+
2562
+ **実行結果:**
2563
+ ```
2564
+ KGPRs:
2565
+ KGPR-mk5yjex7-vwtubq - Expense Management Patterns (draft)
2566
+ Created: 2026-01-09
2567
+ Changes: 0 entities, 0 relationships
2568
+
2569
+ Total: 1 KGPR(s)
2570
+ ```
2571
+
2572
+ ### 18.4 KGPRワークフロー
2573
+
2574
+ ```mermaid
2575
+ flowchart TB
2576
+ A["1️⃣ ローカルで知識グラフを更新"] --> B["2️⃣ kgpr diff で変更を確認"]
2577
+ B --> C["3️⃣ kgpr create でドラフト作成"]
2578
+ C --> D["4️⃣ kgpr submit でレビュー依頼"]
2579
+ D --> E["5️⃣ レビュー・承認"]
2580
+ E --> F["6️⃣ グローバル知識グラフにマージ"]
2581
+
2582
+ style A fill:#e3f2fd,stroke:#1976d2
2583
+ style C fill:#fff3e0,stroke:#e65100
2584
+ style F fill:#c8e6c9,stroke:#388e3c
2585
+ ```
2586
+
2587
+ ---
2588
+
2589
+ ## 20. Interactive REPL
2590
+
2591
+ REPLは、MUSUBIXと対話的に操作できるシェルです。
2592
+
2593
+ ### 19.1 REPLの起動
2594
+
2595
+ **自然言語での指示:**
2596
+ > 「対話モードを起動して」
2597
+
2598
+ **MUSUBIXが実行するコマンド:**
2599
+ ```bash
2600
+ npx musubix repl
2601
+ ```
2602
+
2603
+ **REPL画面:**
2604
+ ```
2605
+ ╔════════════════════════════════════════════════════════════════╗
2606
+ ║ MUSUBIX Interactive REPL ║
2607
+ ║ Type 'help' for commands, 'exit' to quit ║
2608
+ ╚════════════════════════════════════════════════════════════════╝
2609
+
2610
+ musubix> help
2611
+
2612
+ Available commands:
2613
+ requirements <subcommand> - Requirement operations
2614
+ design <subcommand> - Design operations
2615
+ trace <subcommand> - Traceability operations
2616
+ learn <subcommand> - Learning operations
2617
+ explain <subcommand> - Explanation operations
2618
+ history - Show command history
2619
+ clear - Clear screen
2620
+ exit - Exit REPL
2621
+
2622
+ musubix> requirements validate
2623
+ ✅ All 24 requirements are valid EARS format
2624
+
2625
+ musubix> trace matrix
2626
+ 📊 24 requirements, 6 designs, 6 implementations, 3 tests
2627
+ Coverage: 92%
2628
+
2629
+ musubix> exit
2630
+ Goodbye!
2631
+ ```
2632
+
2633
+ ### 19.2 REPLの利点
2634
+
2635
+ | 観点 | 効果 |
2636
+ |------|------|
2637
+ | **即時フィードバック** | コマンド結果をすぐに確認 |
2638
+ | **探索的操作** | 試行錯誤しながら操作 |
2639
+ | **履歴** | 過去のコマンドを再利用 |
2640
+ | **効率** | 複数コマンドを連続実行 |
2641
+
2642
+ ---
2643
+
2644
+ ## 21. 学習データのエクスポート/インポート
2645
+
2646
+ チーム間で学習データを共有できます。
2647
+
2648
+ ### 20.1 学習データのエクスポート
2649
+
2650
+ **自然言語での指示:**
2651
+ > 「学習データをエクスポートして」
2652
+
2653
+ **MUSUBIXが実行するコマンド:**
2654
+ ```bash
2655
+ npx musubix learn export -o learned-data.json
2656
+ ```
2657
+
2658
+ **実行結果:**
2659
+ ```
2660
+ ✓ Learning data exported to: learned-data.json
2661
+ ```
2662
+
2663
+ **エクスポートされたデータ(抜粋):**
2664
+ ```json
2665
+ {
2666
+ "feedback": [
2667
+ {
2668
+ "id": "FB-E12B5545",
2669
+ "timestamp": "2026-01-09T06:20:33.143Z",
2670
+ "type": "accept",
2671
+ "artifactType": "requirement",
2672
+ "artifactId": "REQ-APR-002",
2673
+ "reason": "部長承認閾値の要件は適切"
2674
+ }
2675
+ ],
2676
+ "patterns": [
2677
+ {
2678
+ "id": "PAT-6327C153",
2679
+ "name": "Function-based Value Objects",
2680
+ "category": "code",
2681
+ "action": {
2682
+ "type": "prefer",
2683
+ "content": "Use interface + factory function instead of class"
2684
+ },
2685
+ "confidence": 0.95
2686
+ },
2687
+ {
2688
+ "id": "PAT-33E3092F",
2689
+ "name": "Result Type Error Handling",
2690
+ "category": "code",
2691
+ "action": {
2692
+ "type": "prefer",
2693
+ "content": "Use Result<T, E> type for operations that can fail"
2694
+ },
2695
+ "confidence": 0.92
2696
+ }
2697
+ ]
2698
+ }
2699
+ ```
2700
+
2701
+ ### 20.2 学習データのインポート
2702
+
2703
+ **自然言語での指示:**
2704
+ > 「チームの学習データをインポートして」
2705
+
2706
+ **MUSUBIXが実行するコマンド:**
2707
+ ```bash
2708
+ npx musubix learn import team-patterns.json
2709
+ ```
2710
+
2711
+ **実行結果:**
2712
+ ```
2713
+ ✓ Imported learning data from: team-patterns.json
2714
+ Patterns: 15 added, 3 merged
2715
+ Feedback: 8 added
2716
+ ```
2717
+
2718
+ ### 20.3 チーム共有の利点
2719
+
2720
+ | 観点 | 効果 |
2721
+ |------|------|
2722
+ | **知識共有** | チーム全員が同じパターンを使用 |
2723
+ | **オンボーディング** | 新メンバーが即座にチームの知見を活用 |
2724
+ | **一貫性** | コーディングスタイルの統一 |
2725
+ | **継続的改善** | フィードバックの蓄積と活用 |
2726
+
2727
+ ---
2728
+
2729
+ # Part 5: まとめ
2730
+
2731
+ ## 22. 経費精算システム開発の振り返り
2732
+
2733
+ ### 22.1 成果物一覧
2734
+
2735
+ 本マニュアルで作成した成果物:
2736
+
2737
+ | カテゴリ | ファイル | 内容 |
2738
+ |---------|---------|------|
2739
+ | **要件** | `storage/specs/REQ-EXP-001-requirements.md` | 24件のEARS形式要件 |
2740
+ | **設計** | `storage/design/DES-001-design.md` | C4モデル設計 |
2741
+ | **コード** | `src/domain/value-objects/*.ts` | Value Objects(3ファイル) |
2742
+ | **コード** | `src/domain/entities/*.ts` | エンティティ(3ファイル) |
2743
+ | **テスト** | `tests/*.test.ts` | ユニットテスト(3ファイル) |
2744
+ | **検証** | `storage/formal-verify/approval-rules.smt2` | 形式検証ルール |
2745
+ | **学習** | `learned-data.json` | 学習データ |
2746
+
2747
+ ### 22.2 品質メトリクス
2748
+
2749
+ | 指標 | 値 |
2750
+ |------|-----|
2751
+ | EARS要件数 | 24件 |
2752
+ | TypeScriptコード行数 | 754行 |
2753
+ | テストケース数 | 17件 |
2754
+ | テストカバレッジ | 92% |
2755
+ | 静的解析エラー | 0件 |
2756
+ | セキュリティスコア | 100/100 |
2757
+ | 設計パターン適用 | 6種類 |
2758
+
2759
+ ### 22.3 MUSUBIX機能カバレッジ
2760
+
2761
+ 本マニュアルで使用したMUSUBIX機能:
2762
+
2763
+ | 機能 | 使用 | セクション |
2764
+ |------|-----|-----------|
2765
+ | プロジェクト初期化 | ✅ | 5 |
2766
+ | EARS要件分析 | ✅ | 6 |
2767
+ | C4設計生成 | ✅ | 7 |
2768
+ | タスク分解 | ✅ | 8 |
2769
+ | コード生成 | ✅ | 9 |
2770
+ | セキュリティ分析 | ✅ | 10 |
2771
+ | 形式検証 | ✅ | 11 |
2772
+ | テスト生成 | ✅ | 12 |
2773
+ | トレーサビリティ | ✅ | 13 |
2774
+ | 説明生成 | ✅ | 14 |
2775
+ | 自己学習 | ✅ | 15 |
2776
+ | オントロジー | ✅ | 16 |
2777
+ | プログラム合成 | ✅ | 17 |
2778
+ | パターンライブラリ | ✅ | 18 |
2779
+ | KGPR | ✅ | 19 |
2780
+ | REPL | ✅ | 20 |
2781
+ | エクスポート/インポート | ✅ | 21 |
2782
+
2783
+ ---
2784
+
2785
+ ## 23. 従来開発との比較
2786
+
2787
+ ### 23.1 開発プロセスの違い
2788
+
2789
+ | フェーズ | 従来開発 | MUSUBIX |
2790
+ |---------|---------|---------|
2791
+ | **要件定義** | 自然言語で曖昧に記述 | EARS形式で形式化 |
2792
+ | **設計** | ドキュメント分散 | C4モデルで統一 |
2793
+ | **コード生成** | 手動または汎用AIで生成 | 要件トレース付きで生成 |
2794
+ | **テスト** | 手動でテストケース作成 | 要件から自動導出 |
2795
+ | **検証** | テストのみ | 形式検証+テスト |
2796
+ | **追跡** | 手動管理 | 自動トレーサビリティ |
2797
+
2798
+ ### 23.2 品質向上の効果
2799
+
2800
+ | 観点 | 従来 | MUSUBIX |
2801
+ |------|------|---------|
2802
+ | 要件漏れ | 発生しやすい | EARS形式で防止 |
2803
+ | 設計と実装の乖離 | 発生しやすい | トレーサビリティで検出 |
2804
+ | テスト漏れ | レビューで発見 | orphan検出で自動発見 |
2805
+ | コード品質 | レビュー依存 | 自動解析で保証 |
2806
+ | 知識の蓄積 | 属人化 | 知識グラフで共有 |
2807
+
2808
+ ### 23.3 学習のループ
2809
+
2810
+ ```mermaid
2811
+ flowchart LR
2812
+ A[開発] --> B[フィードバック]
2813
+ B --> C[パターン学習]
2814
+ C --> D[次の開発に適用]
2815
+ D --> A
2816
+
2817
+ style A fill:#e3f2fd,stroke:#1976d2
2818
+ style C fill:#fff3e0,stroke:#e65100
2819
+ style D fill:#c8e6c9,stroke:#388e3c
2820
+ ```
2821
+
2822
+ MUSUBIXは単なるコード生成ツールではなく、**継続的に学習し進化するAI開発パートナー**です。
2823
+
2824
+ ---
2825
+
2826
+ # 付録
2827
+
2828
+ ## 付録A: 9条憲法(Constitutional Articles)
2829
+
2830
+ MUSUBIXのすべての開発活動を統治する不変のルールです。
2831
+
2832
+ :::note info
2833
+ **ADR(Architecture Decision Record)とは?**
2834
+ アーキテクチャ上の意思決定を記録するドキュメントです。「なぜその技術を選んだのか」「他の選択肢は何があったのか」を残すことで、後から決定理由を追跡できます。第Ⅷ条はこの記録を義務付けています。
2835
+ :::
2836
+
2837
+ | 条項 | 名称 | 概要 |
2838
+ |-----|------|------|
2839
+ | **I** | Library-First | 機能は独立ライブラリとして開始 |
2840
+ | **II** | CLI Interface | すべてのライブラリはCLI公開必須 |
2841
+ | **III** | Test-First | Red-Green-Blueサイクルでテスト先行 |
2842
+ | **IV** | EARS Format | 要件はEARS形式で記述 |
2843
+ | **V** | Traceability | 要件↔設計↔コード↔テストの100%追跡 |
2844
+ | **VI** | Project Memory | steering/を参照してから決定 |
2845
+ | **VII** | Design Patterns | 設計パターン適用の文書化 |
2846
+ | **VIII** | Decision Records | すべての決定をADRで記録 |
2847
+ | **IX** | Quality Gates | フェーズ移行前の品質検証 |
2848
+
2849
+ ---
2850
+
2851
+ ## 付録B: CLIコマンドリファレンス
2852
+
2853
+ ### プロジェクト管理
2854
+ ```bash
2855
+ npx musubix init [path] [--name <name>] [--force]
2856
+ ```
2857
+
2858
+ ### 要件分析
2859
+ ```bash
2860
+ npx musubix requirements analyze <file>
2861
+ npx musubix requirements validate <file>
2862
+ npx musubix requirements map <file>
2863
+ npx musubix requirements search <query>
2864
+ ```
2865
+
2866
+ ### 設計
2867
+ ```bash
2868
+ npx musubix design generate <file>
2869
+ npx musubix design patterns <context>
2870
+ npx musubix design validate <file>
2871
+ npx musubix design c4 <file>
2872
+ npx musubix design adr <decision>
2873
+ ```
2874
+
2875
+ ### コード生成
2876
+ ```bash
2877
+ npx musubix codegen generate <file>
2878
+ npx musubix codegen analyze <file>
2879
+ npx musubix codegen security <path>
2880
+ ```
2881
+
2882
+ ### テスト
2883
+ ```bash
2884
+ npx musubix test generate <file>
2885
+ npx musubix test coverage <dir>
2886
+ ```
2887
+
2888
+ ### トレーサビリティ
2889
+ ```bash
2890
+ npx musubix trace matrix
2891
+ npx musubix trace impact <id>
2892
+ npx musubix trace validate
2893
+ ```
2894
+
2895
+ ### 説明生成
2896
+ ```bash
2897
+ npx musubix explain why <id>
2898
+ npx musubix explain graph <id>
2899
+ ```
2900
+
2901
+ ### 自己学習
2902
+ ```bash
2903
+ npx musubix learn status
2904
+ npx musubix learn patterns
2905
+ npx musubix learn feedback <id> --type <accept|reject|modify> -a <type>
2906
+ npx musubix learn add-pattern <name> -a <prefer|avoid|suggest> -c <category>
2907
+ npx musubix learn export -o <file>
2908
+ npx musubix learn import <file>
2909
+ ```
2910
+
2911
+ ### オントロジー
2912
+ ```bash
2913
+ npx musubix ontology validate -f <file>
2914
+ npx musubix ontology stats -f <file>
2915
+ npx musubix ontology check-circular -f <file>
2916
+ ```
2917
+
2918
+ ### プログラム合成
2919
+ ```bash
2920
+ npx musubix synthesize <examples.json> [-d <domain>] [--max-depth <n>]
2921
+ npx musubix syn <examples.json>
2922
+ ```
2923
+
2924
+ ### パターンライブラリ
2925
+ ```bash
2926
+ npx musubix library learn <file>
2927
+ npx musubix library query <query>
2928
+ npx musubix library stats
2929
+ ```
2930
+
2931
+ ### KGPR
2932
+ ```bash
2933
+ npx musubix kgpr create -t <title>
2934
+ npx musubix kgpr diff
2935
+ npx musubix kgpr list
2936
+ npx musubix kgpr submit <id>
2937
+ npx musubix kgpr show <id>
2938
+ ```
2939
+
2940
+ ### その他
2941
+ ```bash
2942
+ npx musubix repl # 対話モード
2943
+ npx musubix scaffold domain-model # プロジェクト生成
2944
+ npx musubix --help # ヘルプ
2945
+ ```
2946
+
2947
+ ---
2948
+
2949
+ ## 付録C: EARSパターン
2950
+
2951
+ ### 5つの基本パターン
2952
+
2953
+ | パターン | 構文 | 用途 |
2954
+ |---------|------|------|
2955
+ | **Ubiquitous** | `THE [system] SHALL [requirement]` | 常時満たすべき要件 |
2956
+ | **Event-driven** | `WHEN [event], THE [system] SHALL [response]` | イベント発生時 |
2957
+ | **State-driven** | `WHILE [state], THE [system] SHALL [response]` | 特定状態 |
2958
+ | **Unwanted** | `THE [system] SHALL NOT [behavior]` | 禁止事項 |
2959
+ | **Optional** | `IF [condition], THEN THE [system] SHALL [response]` | 条件付き |
2960
+
2961
+ ### 経費精算システムでの例
2962
+
2963
+ **Ubiquitous:**
2964
+ ```
2965
+ THE Expense Management System SHALL allow authenticated users to create expense entries.
2966
+ ```
2967
+
2968
+ **Event-driven:**
2969
+ ```
2970
+ WHEN an expense entry is submitted for approval, THE Expense Management System SHALL notify the next approver within 5 minutes.
2971
+ ```
2972
+
2973
+ **State-driven:**
2974
+ ```
2975
+ WHILE an expense entry is pending approval for more than 7 days, THE Expense Management System SHALL send reminder notifications daily.
2976
+ ```
2977
+
2978
+ **Unwanted:**
2979
+ ```
2980
+ THE Expense Management System SHALL NOT allow users to approve their own expense entries.
2981
+ ```
2982
+
2983
+ **Optional:**
2984
+ ```
2985
+ IF an expense amount exceeds 100,000 JPY, THEN THE Expense Management System SHALL require Director level approval.
2986
+ ```
2987
+
2988
+ ---
2989
+
2990
+ ## 付録D: プロジェクト構造
2991
+
2992
+ ### 標準ディレクトリ構成
2993
+
2994
+ ```mermaid
2995
+ flowchart TB
2996
+ subgraph Root["project-root/"]
2997
+ Config["musubix.config.json - MUSUBIX設定"]
2998
+
2999
+ subgraph Steering["steering/"]
3000
+ SR["rules/"]
3001
+ SR --> SC["constitution.md - プロジェクト憲法"]
3002
+ end
3003
+
3004
+ subgraph Storage["storage/"]
3005
+ SSp["specs/ - 要件(REQ-*)"]
3006
+ SDe["design/ - 設計(DES-*)"]
3007
+ STr["traceability/ - トレーサビリティマトリクス"]
3008
+ SRe["reviews/ - レビュー結果"]
3009
+ SFo["formal-verify/ - 形式検証ファイル"]
3010
+ end
3011
+
3012
+ subgraph Src["src/"]
3013
+ subgraph Domain["domain/"]
3014
+ DE["entities/ - エンティティ"]
3015
+ DV["value-objects/ - Value Objects"]
3016
+ end
3017
+ subgraph App["application/"]
3018
+ AS["services/ - アプリケーションサービス"]
3019
+ end
3020
+ Infra["infrastructure/ - インフラストラクチャ"]
3021
+ end
3022
+
3023
+ Tests["tests/ - テストファイル"]
3024
+ end
3025
+
3026
+ style Root fill:#f5f5f5,stroke:#333
3027
+ style Steering fill:#e8f5e9,stroke:#2e7d32
3028
+ style Storage fill:#e3f2fd,stroke:#1976d2
3029
+ style Src fill:#fff3e0,stroke:#e65100
3030
+ ```
3031
+
3032
+ ---
3033
+
3034
+ ## 付録E: musubix.config.json
3035
+
3036
+ ### 設定ファイル例
3037
+
3038
+ ```json:musubix.config.json
3039
+ {
3040
+ "projectName": "expense-management-system",
3041
+ "version": "1.0.0",
3042
+ "sdd": {
3043
+ "requirementsFormat": "EARS",
3044
+ "designFormat": "C4",
3045
+ "traceabilityEnabled": true
3046
+ },
3047
+ "learning": {
3048
+ "enabled": true,
3049
+ "feedbackRetention": 365,
3050
+ "patternConfidenceThreshold": 0.7
3051
+ },
3052
+ "security": {
3053
+ "scanEnabled": true,
3054
+ "maxSeverity": "medium"
3055
+ },
3056
+ "formalVerification": {
3057
+ "enabled": true,
3058
+ "solver": "z3"
3059
+ }
3060
+ }
3061
+ ```
3062
+
3063
+ ---
3064
+
3065
+ ## 付録F: 設計パターン一覧
3066
+
3067
+ 本マニュアルで使用した設計パターン:
3068
+
3069
+ | パターン | 用途 | 適用箇所 |
3070
+ |---------|------|---------|
3071
+ | **Repository** | データアクセスの抽象化 | ExpenseRepository |
3072
+ | **Service** | ビジネスロジックの集約 | ApprovalService |
3073
+ | **Factory** | オブジェクト生成の隠蔽 | createExpense(), createAmount() |
3074
+ | **Observer** | イベント通知 | 承認通知 |
3075
+ | **Strategy** | アルゴリズムの切り替え | 承認レベル決定 |
3076
+ | **State** | 状態遷移の管理 | ExpenseStatus |
3077
+
3078
+ ---
3079
+
3080
+ ## 付録G: トラブルシューティング
3081
+
3082
+ ### よくある問題と解決方法
3083
+
3084
+ | 問題 | 原因 | 解決方法 |
3085
+ |------|------|---------|
3086
+ | `musubix: command not found` | 未インストール | `npm install -g @nahisaho/musubix-core` |
3087
+ | `No project found` | 初期化未実行 | `npx musubix init` |
3088
+ | `Invalid EARS format` | 構文エラー | パターン構文を確認 |
3089
+ | `Orphan requirement` | リンク未設定 | コードにトレースタグを追加 |
3090
+ | `Z3 not found` | Z3未インストール | `brew install z3` または `apt install z3` |
3091
+
3092
+ ---
3093
+
3094
+ ## 付録H: 用語集
3095
+
3096
+ | 用語 | 説明 |
3097
+ |------|------|
3098
+ | **EARS** | Easy Approach to Requirements Syntax - 要件記述の標準形式 |
3099
+ | **C4モデル** | Context, Container, Component, Code の4レベル設計 |
3100
+ | **SDD** | Symbolic-Driven Development - 記号駆動開発 |
3101
+ | **YATA** | Yet Another Thinking Architecture - 知識グラフシステム |
3102
+ | **KGPR** | Knowledge Graph Pull Request - 知識グラフの変更管理 |
3103
+ | **Neuro-Symbolic** | ニューラルネットワークとシンボリック推論の統合 |
3104
+ | **Value Object** | 不変の値を表すオブジェクト |
3105
+ | **トレーサビリティ** | 要件から実装までの追跡可能性 |
3106
+ | **形式検証** | 数学的にプログラムの正しさを証明 |
3107
+
3108
+ ---
3109
+
3110
+ ## 付録I: 参考リンク
3111
+
3112
+ - **MUSUBIX GitHub**: https://github.com/nahisaho/MUSUBIX
3113
+ - **EARS論文**: "Easy Approach to Requirements Syntax" by Alistair Mavin
3114
+ - **C4モデル**: https://c4model.com/
3115
+ - **Z3 Theorem Prover**: https://github.com/Z3Prover/z3
3116
+
3117
+ ---
3118
+
3119
+ **Document Information**
3120
+ - **Version**: 2.2.0
3121
+ - **Date**: 2026-01-09
3122
+ - **Author**: MUSUBIX Team
3123
+ - **License**: MITMUSUBIXは単なるコード生成ツールではなく、**継続的に学習し進化するAI開発パートナー**です。