musubix 3.3.7 → 3.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -305
- package/bin/musubix.js +1 -9
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -55
- package/.github/AGENTS.md +0 -949
- package/.github/prompts/sdd-change-apply.prompt.md +0 -283
- package/.github/prompts/sdd-change-archive.prompt.md +0 -241
- package/.github/prompts/sdd-change-init.prompt.md +0 -269
- package/.github/prompts/sdd-design.prompt.md +0 -250
- package/.github/prompts/sdd-implement.prompt.md +0 -387
- package/.github/prompts/sdd-requirements.prompt.md +0 -193
- package/.github/prompts/sdd-review.prompt.md +0 -155
- package/.github/prompts/sdd-security.prompt.md +0 -228
- package/.github/prompts/sdd-steering.prompt.md +0 -269
- package/.github/prompts/sdd-tasks.prompt.md +0 -255
- package/.github/prompts/sdd-test.prompt.md +0 -230
- package/.github/prompts/sdd-validate.prompt.md +0 -304
- package/.github/skills/musubix-adr-generation/SKILL.md +0 -209
- package/.github/skills/musubix-best-practices/SKILL.md +0 -315
- package/.github/skills/musubix-c4-design/SKILL.md +0 -162
- package/.github/skills/musubix-code-generation/SKILL.md +0 -237
- package/.github/skills/musubix-domain-inference/SKILL.md +0 -196
- package/.github/skills/musubix-ears-validation/SKILL.md +0 -161
- package/.github/skills/musubix-sdd-workflow/SKILL.md +0 -217
- package/.github/skills/musubix-technical-writing/SKILL.md +0 -444
- package/.github/skills/musubix-test-generation/SKILL.md +0 -212
- package/.github/skills/musubix-traceability/SKILL.md +0 -141
- package/AGENTS.md +0 -1065
- package/LICENSE +0 -21
- package/README.ja.md +0 -296
- package/bin/musubix-mcp.js +0 -15
- package/docs/API-REFERENCE.md +0 -1425
- package/docs/GITHUB-ACTIONS-NPM-SETUP.md +0 -132
- package/docs/INSTALL-GUIDE.ja.md +0 -459
- package/docs/INSTALL-GUIDE.md +0 -459
- package/docs/MIGRATION-v3.0.md +0 -324
- package/docs/MUSUBI-enhancement_roadmap_20260105.md +0 -651
- package/docs/MUSUBIX-v3.0-User-Guide.md +0 -1357
- package/docs/MUSUBIXv2.2.0-Manual-outline.md +0 -136
- package/docs/MUSUBIXv2.2.0-Manual.md +0 -3123
- package/docs/MUSUBIXv2.3.5-Refactering.md +0 -1310
- package/docs/MUSUBIv1.6.1-enhancement_roadmap_20260105.md +0 -291
- package/docs/MUSUBIv2.2.0-USERGUIDE.md +0 -2079
- package/docs/ROADMAP-v1.5.md +0 -116
- package/docs/SwarmCoding.md +0 -1284
- package/docs/Test-prompt.md +0 -105
- package/docs/USER-GUIDE-v1.8.0.md +0 -2371
- package/docs/USER-GUIDE.ja.md +0 -2147
- package/docs/USER-GUIDE.md +0 -3022
- package/docs/YATA-GLOBAL-GUIDE.ja.md +0 -750
- package/docs/YATA-GLOBAL-GUIDE.md +0 -595
- package/docs/YATA-LOCAL-GUIDE.ja.md +0 -989
- package/docs/YATA-LOCAL-GUIDE.md +0 -730
- package/docs/adr/0001-real-time-pattern-learning-architecture-for-v1-5-0.md +0 -75
- package/docs/adr/0002-pattern-sharing-protocol-for-cross-team-collaborat.md +0 -79
- package/docs/adr/0003-owl-2-rl-implementation-strategy-for-advanced-infe.md +0 -90
- package/docs/enterprise-knowledge-management.md +0 -1737
- package/docs/evolution-from-musubi-to-musubix.md +0 -2170
- package/docs/getting-started-with-sdd.md +0 -1602
- package/docs/moodle-refactering-codegraph-musubix.md +0 -391
- package/docs/moodle-refactering-codegraph.md +0 -278
- package/docs/overview/MUSUBIX-CodeGraph.md +0 -322
- package/docs/overview/MUSUBIX-Core.md +0 -671
- package/docs/overview/MUSUBIX-Decisions.md +0 -494
- package/docs/overview/MUSUBIX-FormalVerify.md +0 -566
- package/docs/overview/MUSUBIX-Knowledge.md +0 -1231
- package/docs/overview/MUSUBIX-Learning.md +0 -837
- package/docs/overview/MUSUBIX-MCP-Server.md +0 -535
- package/docs/overview/MUSUBIX-Overview.md +0 -264
- package/docs/overview/MUSUBIX-Phase1-Complete.md +0 -271
- package/docs/overview/MUSUBIX-Phase2-Complete.md +0 -310
- package/docs/overview/MUSUBIX-Policy.md +0 -477
- package/docs/overview/MUSUBIX-Roadmap-v2.md +0 -399
- package/docs/overview/MUSUBIX-Security-Plan.md +0 -939
- package/docs/overview/MUSUBIX-Security-v2.1.md +0 -668
- package/docs/overview/MUSUBIX-Security.md +0 -891
- package/docs/overview/MUSUBIX-YATA.md +0 -666
- package/docs/overview/MUSUBIX-v2.2.0-Advanced-Learning.md +0 -513
- package/docs/overview/Neuro-SymbolicAI.md +0 -159
- package/docs/packages/knowledge.md +0 -594
- package/docs/qiita-linux-kernel-knowledge-graph.md +0 -596
- package/scripts/generate-quality-gate-report.ts +0 -106
- package/scripts/postinstall.js +0 -94
- package/steering/.musubi-version +0 -1
- package/steering/product.ja.md +0 -572
- package/steering/project.yml +0 -66
- package/steering/rules/constitution.md +0 -491
- package/steering/structure.ja.md +0 -503
- package/steering/tech.ja.md +0 -208
|
@@ -1,2371 +0,0 @@
|
|
|
1
|
-
# Neuro-Symbolic AI Integration System - 次世代AIコーディング支援システム
|
|
2
|
-
|
|
3
|
-
💡 この記事は、MUSUBIXの最新バージョン1.8.0(Security Analysis Edition)の導入から実践的な活用方法までを包括的に解説します。
|
|
4
|
-
|
|
5
|
-
# :book: 目次
|
|
6
|
-
|
|
7
|
-
1. [はじめに](#はじめに)
|
|
8
|
-
2. [MUSUBIXとは](#musubixとは)
|
|
9
|
-
3. [インストール](#インストール)
|
|
10
|
-
4. [クイックスタート](#クイックスタート)
|
|
11
|
-
5. [CLIコマンドリファレンス](#cliコマンドリファレンス)
|
|
12
|
-
6. [MCPサーバー連携](#mcpサーバー連携)
|
|
13
|
-
7. [セキュリティ分析(v1.8.0新機能)](#セキュリティ分析v180新機能)
|
|
14
|
-
- [自動修復システム(Phase 5)](#自動修復システムphase-5)
|
|
15
|
-
- [セキュリティインテリジェンス(Phase 6)](#セキュリティインテリジェンスphase-6)
|
|
16
|
-
8. [形式検証](#形式検証)
|
|
17
|
-
9. [知識グラフ(YATA)](#知識グラフyata)
|
|
18
|
-
10. [学習システム](#学習システム)
|
|
19
|
-
11. [ベストプラクティス](#ベストプラクティス)
|
|
20
|
-
12. [トラブルシューティング](#トラブルシューティング)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# はじめに
|
|
24
|
-
|
|
25
|
-
## AIコーディングツールの課題
|
|
26
|
-
|
|
27
|
-
2025年、GitHub Copilot、Cursor、Claude Codeなど、AIコーディングツールは急速に普及しました。しかし、これらのツールには共通の課題があります。
|
|
28
|
-
|
|
29
|
-
| 課題 | 詳細 |
|
|
30
|
-
|:-----|:-----|
|
|
31
|
-
| 🎲 **確率的な出力** | LLMは確率的に回答を生成するため、同じ質問でも異なる回答が返ることがある |
|
|
32
|
-
| 🔍 **検証が困難** | 生成されたコードが正しいかどうかは、人間がレビューするしかない |
|
|
33
|
-
| 📝 **要件の曖昧さ** | 自然言語の曖昧さがそのままコードに反映され、意図と異なる実装になることがある |
|
|
34
|
-
| 🔗 **追跡不能** | なぜそのコードが生成されたのか、どの要件に基づいているのか追跡できない |
|
|
35
|
-
| 🧠 **学習しない** | フィードバックを与えても、次回の提案に反映されない |
|
|
36
|
-
|
|
37
|
-
## Neuro-Symbolic AIという解決策
|
|
38
|
-
|
|
39
|
-
**MUSUBIX**は、これらの課題を**Neuro-Symbolic AI**(ニューロシンボリックAI)で解決します。
|
|
40
|
-
|
|
41
|
-
```mermaid
|
|
42
|
-
graph TB
|
|
43
|
-
subgraph Traditional["❌ 従来のAIコーディングツール"]
|
|
44
|
-
subgraph NeuralOnly["LLM(Neural)のみ"]
|
|
45
|
-
T1["🎨 創造的だが不正確"]
|
|
46
|
-
T2["❓ 検証できない"]
|
|
47
|
-
T3["📉 学習しない"]
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
Traditional -->|"MUSUBIX で解決"| MUSUBIX
|
|
52
|
-
|
|
53
|
-
subgraph MUSUBIX["✅ MUSUBIX"]
|
|
54
|
-
subgraph Neural["🧠 Neural(LLM)"]
|
|
55
|
-
N1["🎨 創造的なコード生成"]
|
|
56
|
-
N2["💬 自然言語理解"]
|
|
57
|
-
N3["🔍 パターン認識"]
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
subgraph Symbolic["⚙️ Symbolic(知識グラフ・検証)"]
|
|
61
|
-
S1["📝 EARS形式で要件を形式化"]
|
|
62
|
-
S2["✅ Z3で数学的に検証"]
|
|
63
|
-
S3["🔗 知識グラフで追跡"]
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
Neural <-->|"統合"| Symbolic
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
style Traditional fill:#ffebee,stroke:#c62828
|
|
70
|
-
style MUSUBIX fill:#e8f5e9,stroke:#2e7d32
|
|
71
|
-
style Neural fill:#e3f2fd,stroke:#1565c0
|
|
72
|
-
style Symbolic fill:#fff3e0,stroke:#ef6c00
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## 従来ツールとの違い
|
|
76
|
-
|
|
77
|
-
| 観点 | 従来のAIコーディングツール | MUSUBIX |
|
|
78
|
-
|:-----|:---------------------------|:--------|
|
|
79
|
-
| **出力の信頼性** | LLMの確率的出力をそのまま使用 | シンボリック推論で検証してから採用 |
|
|
80
|
-
| **要件定義** | 自然言語のまま(曖昧) | EARS形式で形式化(テスト可能) |
|
|
81
|
-
| **検証** | 人間によるレビューのみ | Z3 SMTソルバで数学的に証明 |
|
|
82
|
-
| **トレーサビリティ** | なし | 要件→設計→コード→テストを100%追跡 |
|
|
83
|
-
| **セキュリティ** | 事後的なスキャン | 生成時にOWASP/CWEパターンをチェック |
|
|
84
|
-
| **学習** | しない | フィードバックからパターンを学習・蓄積 |
|
|
85
|
-
|
|
86
|
-
:::note info
|
|
87
|
-
💡 **MUSUBIXの核心**
|
|
88
|
-
|
|
89
|
-
MUSUBIXは「AIの創造性」と「数学的な厳密性」を組み合わせます。
|
|
90
|
-
|
|
91
|
-
- **LLMが生成** → **シンボリック推論が検証** → **問題があれば却下・修正**
|
|
92
|
-
|
|
93
|
-
これにより、AIの強みを活かしながら、信頼性の高いソフトウェア開発を実現します。
|
|
94
|
-
:::
|
|
95
|
-
|
|
96
|
-
## 誰のためのツールか
|
|
97
|
-
|
|
98
|
-
| ユーザー | MUSUBIXのメリット |
|
|
99
|
-
|:---------|:------------------|
|
|
100
|
-
| **個人開発者** | 一人でも品質の高いコードを書ける。要件の漏れやセキュリティ問題を自動検出 |
|
|
101
|
-
| **スタートアップ** | 少人数でも大企業レベルの開発プロセスを実現。トレーサビリティでコンプライアンス対応 |
|
|
102
|
-
| **エンタープライズ** | 大規模プロジェクトの品質管理。形式検証で重大なバグを防止 |
|
|
103
|
-
| **規制産業** | 医療・金融・航空など、法的にトレーサビリティが求められる分野に最適 |
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
# MUSUBIXとは
|
|
107
|
-
|
|
108
|
-
**MUSUBIX**(ムスビックス)は、**GitHub Copilot**や**Claude Code**などのAIコーディングエージェントを**機能強化**するツールです。
|
|
109
|
-
|
|
110
|
-
**Neural(LLM)** と **Symbolic(Knowledge Graph)** 推論を統合し、AIエージェントに以下の能力を追加します。
|
|
111
|
-
|
|
112
|
-
- 🎯 **要件定義支援** - 対話形式でEARS形式の要件を自動生成
|
|
113
|
-
- 📐 **設計支援** - C4モデルによる設計書の自動生成
|
|
114
|
-
- 🛡️ **セキュリティ分析** - 脆弱性の自動検出と修正提案
|
|
115
|
-
- ✅ **形式検証** - Z3 SMTソルバによる数学的検証
|
|
116
|
-
- 🔗 **トレーサビリティ** - 要件→設計→コード→テストの100%追跡
|
|
117
|
-
- 📚 **知識グラフ** - プロジェクト知識の蓄積と再利用
|
|
118
|
-
|
|
119
|
-
:::note info
|
|
120
|
-
💡 **名前の由来**
|
|
121
|
-
|
|
122
|
-
**MUSUBIX(ムスビックス)**
|
|
123
|
-
- **M**odel **U**nified **S**ymbolic **U**nderstanding and **B**ehavior **I**ntegration e**X**tension の略
|
|
124
|
-
- Model: AIモデル(LLM)
|
|
125
|
-
- Unified: 統合された
|
|
126
|
-
- Symbolic Understanding: シンボリック理解(知識グラフ・形式検証)
|
|
127
|
-
- Behavior Integration: 振る舞いの統合(要件→設計→コード→テスト)
|
|
128
|
-
- eXtension: 拡張(AIエージェントを拡張する)
|
|
129
|
-
- 日本語の「**結び**(むすび)」に由来
|
|
130
|
-
- 「結び」は「つなぐ」「統合する」という意味を持つ
|
|
131
|
-
- Neural(LLM)とSymbolic(知識グラフ)を**結び**つける
|
|
132
|
-
- 要件→設計→コード→テストを**結び**つける(トレーサビリティ)
|
|
133
|
-
- 人間とAIを**結び**つける
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
**YATA(ヤタ)**
|
|
137
|
-
- **Y**et **A**nother **T**raceability **A**rchitecture の略
|
|
138
|
-
- 日本神話の「**八咫鏡**(やたのかがみ)」にも通じる
|
|
139
|
-
- 八咫鏡は「真実を映し出す鏡」として知られる
|
|
140
|
-
- YATAは知識グラフとして、プロジェクトの**真実**(要件、設計、コード、テストの関係)を映し出す
|
|
141
|
-
:::
|
|
142
|
-
|
|
143
|
-
:::note info
|
|
144
|
-
💡 **MUSUBIXを導入すると、AIエージェントが...**
|
|
145
|
-
- 自然言語だけでソフトウェア開発の全工程を実行できるようになります
|
|
146
|
-
- 要件の漏れや設計の矛盾を自動的に検出できるようになります
|
|
147
|
-
- セキュリティ脆弱性をコード生成時に防止できるようになります
|
|
148
|
-
:::
|
|
149
|
-
|
|
150
|
-
:::note warn
|
|
151
|
-
📖 **専門用語の解説**
|
|
152
|
-
|
|
153
|
-
**🧠 Neuro-Symbolic統合とは?**
|
|
154
|
-
- **Neural(ニューラル)**: LLM(大規模言語モデル)による創造的な推論。自然言語理解、コード生成、パターン認識が得意
|
|
155
|
-
- **Symbolic(シンボリック)**: 知識グラフやルールベースの論理的推論。厳密な検証、一貫性チェック、トレーサビリティが得意
|
|
156
|
-
- **統合の利点**: LLMの「創造性」とシンボリック推論の「精密性」を組み合わせ、高品質なソフトウェア開発を実現
|
|
157
|
-
|
|
158
|
-
**📝 EARS形式とは?**
|
|
159
|
-
- **EARS** = Easy Approach to Requirements Syntax(要件構文への簡易アプローチ)
|
|
160
|
-
- 自然言語の曖昧さを排除し、テスト可能な要件を記述するための形式
|
|
161
|
-
- 5つのパターン: Ubiquitous(常時)、Event-driven(イベント駆動)、State-driven(状態駆動)、Unwanted(禁止)、Optional(条件付き)
|
|
162
|
-
|
|
163
|
-
**🛡️ OWASP / CWE とは?**
|
|
164
|
-
- **OWASP Top 10**: Webアプリケーションの最も危険なセキュリティリスク上位10項目(インジェクション、認証不備、XSSなど)
|
|
165
|
-
- **CWE Top 25**: 最も危険なソフトウェア脆弱性上位25項目(バッファオーバーフロー、SQLインジェクション、パストラバーサルなど)
|
|
166
|
-
- MUSUBIXはこれらの脆弱性パターンを自動検出し、修正を提案します
|
|
167
|
-
|
|
168
|
-
**✅ 形式検証(Formal Verification)とは?**
|
|
169
|
-
- **定義**: プログラムが仕様を満たすことを**数学的に証明**する手法
|
|
170
|
-
- **テストとの違い**:
|
|
171
|
-
- テスト: 「いくつかの入力で正しく動いた」→ バグがないことは保証できない
|
|
172
|
-
- 形式検証: 「すべての可能な入力で正しく動く」→ 数学的に証明
|
|
173
|
-
- **何ができるか**:
|
|
174
|
-
- 🔢 「この関数は常に0以上の値を返す」を証明
|
|
175
|
-
- 📏 「配列のインデックスは絶対に範囲外にならない」を証明
|
|
176
|
-
- 🔄 「デッドロックは発生しない」を証明
|
|
177
|
-
- 💰 「口座残高がマイナスになることはない」を証明
|
|
178
|
-
- **適用分野**: 航空宇宙、医療機器、金融システム、暗号通貨など、バグが許されない分野で必須
|
|
179
|
-
- **MUSUBIXでの活用**: EARS形式の要件を自動的にSMT式に変換し、Z3ソルバで検証
|
|
180
|
-
|
|
181
|
-
**🔧 Z3 SMTソルバとは?**
|
|
182
|
-
- **Z3**: Microsoft Researchが開発した世界最高水準の定理証明器(Theorem Prover)
|
|
183
|
-
- **SMT** = Satisfiability Modulo Theories(理論付き充足可能性問題)
|
|
184
|
-
- コードの性質を数学的に検証し、「この関数は常に正の値を返す」「配列のインデックスは範囲内」などを証明
|
|
185
|
-
- バグを実行前に数学的に発見できる強力なツール
|
|
186
|
-
- **具体例**:
|
|
187
|
-
```
|
|
188
|
-
// この関数が「常に正の値を返す」ことをZ3で証明
|
|
189
|
-
function calculatePrice(quantity: number, unitPrice: number): number {
|
|
190
|
-
// 事前条件: quantity > 0 かつ unitPrice > 0
|
|
191
|
-
// 事後条件: 戻り値 > 0
|
|
192
|
-
return quantity * unitPrice;
|
|
193
|
-
}
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**📚 知識グラフとは?**
|
|
197
|
-
- エンティティ(概念)とリレーション(関係)で知識を構造化したデータベース
|
|
198
|
-
- MUSUBIXでは**YATA**(Yet Another Traceability Architecture)を使用
|
|
199
|
-
- プロジェクトの要件、設計、コード、テストの関係を記録し、影響分析やトレーサビリティに活用
|
|
200
|
-
|
|
201
|
-
**🔗 トレーサビリティとは?なぜ必要?**
|
|
202
|
-
- **定義**: 要件→設計→コード→テストの各成果物間の関連を追跡できる状態
|
|
203
|
-
- **なぜ必要か**:
|
|
204
|
-
- 📋 **変更影響分析**: 「この要件を変更したら、どのコードとテストに影響する?」がすぐわかる
|
|
205
|
-
- 🐛 **バグ原因追跡**: バグが発生したとき、どの要件の実装ミスかを特定できる
|
|
206
|
-
- ✅ **テスト網羅性確認**: すべての要件がテストでカバーされているか検証できる
|
|
207
|
-
- 📊 **進捗管理**: 要件ごとの実装・テスト状況を可視化できる
|
|
208
|
-
- 🔒 **コンプライアンス**: 医療・金融・航空など規制産業では法的に必須
|
|
209
|
-
- **従来の問題**: Excelやドキュメントで手動管理→更新漏れ、整合性崩壊
|
|
210
|
-
- **MUSUBIXの解決策**: 知識グラフで自動追跡、AIエージェントが常に最新状態を維持
|
|
211
|
-
|
|
212
|
-
**🔄 Wake-Sleepサイクルとは?**
|
|
213
|
-
- **起源**: 神経科学のWake-Sleep学習アルゴリズムに着想を得た継続的学習システム
|
|
214
|
-
- **Wakeフェーズ(覚醒期)**:
|
|
215
|
-
- コードを観察し、パターンを抽出
|
|
216
|
-
- 新しい知識を知識グラフに追加
|
|
217
|
-
- リアルタイムで開発パターンを学習
|
|
218
|
-
- **Sleepフェーズ(睡眠期)**:
|
|
219
|
-
- 蓄積したパターンを統合・圧縮
|
|
220
|
-
- 類似パターンをマージして汎化
|
|
221
|
-
- メモリを最適化し、ノイズを除去
|
|
222
|
-
- **なぜ必要か**:
|
|
223
|
-
- 🧠 **継続的改善**: 使えば使うほど賢くなる
|
|
224
|
-
- 📦 **知識の圧縮**: 冗長なパターンを統合し、効率的に保存
|
|
225
|
-
- 🎯 **精度向上**: プロジェクト固有のパターンを学習し、より的確な提案が可能に
|
|
226
|
-
- **MUSUBIXでの動作**:
|
|
227
|
-
```
|
|
228
|
-
Wake: コード観察 → パターン抽出 → 知識グラフ更新
|
|
229
|
-
Sleep: パターン統合 → 圧縮 → メモリ最適化
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
**📐 C4モデルとは?**
|
|
233
|
-
- **C4** = Context, Container, Component, Code の4つのレベルで設計を表現
|
|
234
|
-
- Simon Brownが提唱したソフトウェアアーキテクチャの可視化手法
|
|
235
|
-
- **4つのレベル**:
|
|
236
|
-
- **Context(コンテキスト)**: システム全体と外部アクター(ユーザー、外部システム)の関係
|
|
237
|
-
- **Container(コンテナ)**: アプリケーション、データベース、マイクロサービスなどの技術的な構成要素
|
|
238
|
-
- **Component(コンポーネント)**: コンテナ内部の論理的な構成要素(サービス、リポジトリ等)
|
|
239
|
-
- **Code(コード)**: 実際のクラス、関数、モジュールレベルの設計
|
|
240
|
-
- **なぜ使うか**: 異なる関係者(経営層、開発者、運用)に適切な粒度で設計を説明できる
|
|
241
|
-
|
|
242
|
-
**🔌 MCP(Model Context Protocol)とは?**
|
|
243
|
-
- Anthropicが提唱したAIエージェントとツールを接続するためのオープンプロトコル
|
|
244
|
-
- **3つの要素**:
|
|
245
|
-
- **Tools(ツール)**: AIエージェントが呼び出せる機能(例:`sdd_create_requirements`)
|
|
246
|
-
- **Prompts(プロンプト)**: 事前定義されたプロンプトテンプレート
|
|
247
|
-
- **Resources(リソース)**: AIエージェントがアクセスできるデータ
|
|
248
|
-
- **対応エージェント**: Claude Code、GitHub Copilot、Cursor、Windsurf、Gemini CLI
|
|
249
|
-
- **MUSUBIXでの活用**: MCPサーバーを通じて24のツールと3のプロンプトを提供
|
|
250
|
-
|
|
251
|
-
**🦉 OWL 2 RLとは?**
|
|
252
|
-
- **OWL** = Web Ontology Language(Webオントロジー言語)
|
|
253
|
-
- **OWL 2 RL**: OWL 2のサブセットで、ルールベースの推論に最適化されたプロファイル
|
|
254
|
-
- **特徴**:
|
|
255
|
-
- 効率的な推論が可能(多項式時間)
|
|
256
|
-
- Datalog(論理プログラミング言語)で実装可能
|
|
257
|
-
- クラス階層、プロパティ継承、推移的関係などを推論
|
|
258
|
-
- **MUSUBIXでの活用**: 知識グラフの自動推論(「AがBのサブクラスで、BがCのサブクラスなら、AはCのサブクラス」など)
|
|
259
|
-
|
|
260
|
-
**📜 Hoare論理とは?**
|
|
261
|
-
- **定義**: プログラムの正しさを証明するための形式的手法(1969年、Tony Hoare提唱)
|
|
262
|
-
- **Hoareトリプル**: `{P} C {Q}` の形式で表現
|
|
263
|
-
- **P(事前条件)**: プログラム実行前に成り立つべき条件
|
|
264
|
-
- **C(コマンド)**: 実行するプログラム
|
|
265
|
-
- **Q(事後条件)**: プログラム実行後に成り立つべき条件
|
|
266
|
-
- **例**:
|
|
267
|
-
```
|
|
268
|
-
{x > 0} // 事前条件: xは正
|
|
269
|
-
y = x * 2; // コマンド
|
|
270
|
-
{y > 0 ∧ y > x} // 事後条件: yは正かつxより大きい
|
|
271
|
-
```
|
|
272
|
-
- **MUSUBIXでの活用**: 関数の事前・事後条件を自動検証
|
|
273
|
-
|
|
274
|
-
**📋 ADR(Architecture Decision Record)とは?**
|
|
275
|
-
- **定義**: アーキテクチャ上の重要な決定を記録するドキュメント形式
|
|
276
|
-
- **なぜ必要か**:
|
|
277
|
-
- 🤔 **Why**: なぜその技術を選んだのか?後から理由がわからなくなる問題を防ぐ
|
|
278
|
-
- 🔄 **変更履歴**: 過去の決定を振り返り、同じ議論を繰り返さない
|
|
279
|
-
- 👥 **チーム共有**: 新メンバーがプロジェクトの背景を理解できる
|
|
280
|
-
- **構成要素**: タイトル、ステータス、コンテキスト、決定、結果
|
|
281
|
-
- **MUSUBIXでの活用**: `npx musubix design adr <decision>` で自動生成
|
|
282
|
-
|
|
283
|
-
**🏗️ DDD(ドメイン駆動設計)関連用語**
|
|
284
|
-
- **Entity(エンティティ)**: 一意のIDを持つオブジェクト(例:ユーザー、注文)
|
|
285
|
-
- **Value Object(値オブジェクト)**: IDを持たず、値で同一性を判断するオブジェクト(例:住所、金額)
|
|
286
|
-
- **Aggregate(集約)**: 一貫性を保つべきEntityとValue Objectのグループ
|
|
287
|
-
- **Repository(リポジトリ)**: Aggregateの永続化・取得を担当
|
|
288
|
-
- **Service(サービス)**: 特定のEntityに属さないドメインロジック
|
|
289
|
-
- **MUSUBIXでの活用**: DDDパターンを自動検出し、適切な設計を提案
|
|
290
|
-
|
|
291
|
-
**🔒 テイント解析(Taint Analysis)とは?**
|
|
292
|
-
- **定義**: ユーザー入力(信頼できないデータ)がプログラム内をどう流れるかを追跡する静的解析手法
|
|
293
|
-
- **Source(ソース)**: テイントデータの発生源(例:`req.body`、`req.query`、`process.env`)
|
|
294
|
-
- **Sink(シンク)**: テイントデータが到達してはいけない危険な関数(例:`eval()`、`exec()`、SQL実行)
|
|
295
|
-
- **なぜ必要か**: インジェクション攻撃(SQL、コマンド、XSS)を防ぐ
|
|
296
|
-
- **MUSUBIXでの活用**: `@nahisaho/musubix-security`パッケージでテイント解析を実行
|
|
297
|
-
|
|
298
|
-
**🎯 Result型パターンとは?**
|
|
299
|
-
- **定義**: 処理の成功/失敗を明示的に表現する型パターン
|
|
300
|
-
- **従来の問題**: 例外(throw)は制御フローを分断し、型安全性を損なう
|
|
301
|
-
- **Result型の利点**:
|
|
302
|
-
- ✅ 成功/失敗が型で明示される
|
|
303
|
-
- 🔄 呼び出し側で必ずエラー処理が必要になる
|
|
304
|
-
- 📝 どんなエラーが発生するか型で表現できる
|
|
305
|
-
- **例**:
|
|
306
|
-
```typescript
|
|
307
|
-
type Result<T, E> = { ok: true; value: T } | { ok: false; error: E };
|
|
308
|
-
|
|
309
|
-
function divide(a: number, b: number): Result<number, string> {
|
|
310
|
-
if (b === 0) return { ok: false, error: 'Division by zero' };
|
|
311
|
-
return { ok: true, value: a / b };
|
|
312
|
-
}
|
|
313
|
-
```
|
|
314
|
-
- **MUSUBIXでの活用**: ベストプラクティスとしてResult型パターンを推奨
|
|
315
|
-
:::
|
|
316
|
-
|
|
317
|
-
## 主要な特徴
|
|
318
|
-
|
|
319
|
-
| 特徴 | 説明 |
|
|
320
|
-
|:-----|:-----|
|
|
321
|
-
| 🧠 **Neuro-Symbolic統合** | LLMの創造性とシンボリック推論の精密性を融合 |
|
|
322
|
-
| 📝 **EARS形式要件** | 5パターンの形式的要件記述 |
|
|
323
|
-
| 📜 **9条憲法** | 開発プロセスを統治する9つの不変ルール |
|
|
324
|
-
| 🔗 **完全トレーサビリティ** | 要件→設計→コード→テストの100%追跡 |
|
|
325
|
-
| 🛡️ **セキュリティ分析** | OWASP Top 10 / CWE Top 25対応の脆弱性検出 |
|
|
326
|
-
| ✅ **形式検証** | Z3 SMTソルバによる数学的正確性の検証 |
|
|
327
|
-
| 📚 **知識グラフ** | YATA - SQLiteベースのローカル知識グラフ |
|
|
328
|
-
| 💡 **自己学習** | フィードバックに基づくパターン学習と適応 |
|
|
329
|
-
|
|
330
|
-
## プロジェクト統計
|
|
331
|
-
|
|
332
|
-
| 項目 | 数値 | 説明 |
|
|
333
|
-
|:-----|:-----|:-----|
|
|
334
|
-
| **バージョン** | 1.8.0 | Security Analysis Edition |
|
|
335
|
-
| **テスト数** | 1,586 | 全テスト合格 |
|
|
336
|
-
| **MCPツール** | 24 | SDD(9) + Pattern(7) + Ontology(3) + KGPR(5) |
|
|
337
|
-
| **MCPプロンプト** | 3 | 要件分析、レビュー、設計生成 |
|
|
338
|
-
| **Agent Skills** | 12 | Claude Code対応 |
|
|
339
|
-
| **OWL 2 RLルール** | 20+ | 組み込み推論ルール |
|
|
340
|
-
| **パッケージ数** | 12 | モノレポ構成 |
|
|
341
|
-
|
|
342
|
-
## アーキテクチャ概要
|
|
343
|
-
|
|
344
|
-
```mermaid
|
|
345
|
-
graph TB
|
|
346
|
-
subgraph AI["🤖 AI Agent Layer"]
|
|
347
|
-
Agent["AI Agent<br/>(Claude, Copilot, Cursor, Gemini)"]
|
|
348
|
-
end
|
|
349
|
-
|
|
350
|
-
subgraph MCP["🔌 MCP Server Layer"]
|
|
351
|
-
MCPServer["MUSUBIX MCP Server"]
|
|
352
|
-
subgraph MCPComponents["Components"]
|
|
353
|
-
Tools["Tools (24+)"]
|
|
354
|
-
Prompts["Prompts (3)"]
|
|
355
|
-
Resources["Resources"]
|
|
356
|
-
end
|
|
357
|
-
end
|
|
358
|
-
|
|
359
|
-
subgraph Core["⚙️ MUSUBIX Core Layer"]
|
|
360
|
-
CoreEngine["MUSUBIX Core"]
|
|
361
|
-
subgraph CoreModules["Modules"]
|
|
362
|
-
Symbolic["Symbolic<br/>Reasoning"]
|
|
363
|
-
CodeGen["Code<br/>Generation"]
|
|
364
|
-
Security["Security<br/>Analysis"]
|
|
365
|
-
FormalVerify["Formal<br/>Verification"]
|
|
366
|
-
end
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
subgraph YATA["📊 YATA Knowledge Graph Layer"]
|
|
370
|
-
YATALocal["YATA Local<br/>(SQLite)"]
|
|
371
|
-
YATAGlobal["YATA Global<br/>(Distributed)"]
|
|
372
|
-
YATAUI["YATA UI<br/>(Web)"]
|
|
373
|
-
end
|
|
374
|
-
|
|
375
|
-
Agent -->|"MCP Protocol"| MCPServer
|
|
376
|
-
MCPServer --> Tools
|
|
377
|
-
MCPServer --> Prompts
|
|
378
|
-
MCPServer --> Resources
|
|
379
|
-
MCPServer --> CoreEngine
|
|
380
|
-
CoreEngine --> Symbolic
|
|
381
|
-
CoreEngine --> CodeGen
|
|
382
|
-
CoreEngine --> Security
|
|
383
|
-
CoreEngine --> FormalVerify
|
|
384
|
-
CoreEngine --> YATALocal
|
|
385
|
-
YATALocal <-->|"Sync"| YATAGlobal
|
|
386
|
-
YATAGlobal <--> YATAUI
|
|
387
|
-
|
|
388
|
-
style AI fill:#e1f5fe,stroke:#01579b
|
|
389
|
-
style MCP fill:#f3e5f5,stroke:#4a148c
|
|
390
|
-
style Core fill:#e8f5e9,stroke:#1b5e20
|
|
391
|
-
style YATA fill:#fff3e0,stroke:#e65100
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
## 他のAIコーディングツールとの比較
|
|
395
|
-
|
|
396
|
-
MUSUBIXは既存のAIコーディングツールとは異なるアプローチを取っています。
|
|
397
|
-
|
|
398
|
-
| ツール | カテゴリ | 特徴 | MUSUBIXとの違い |
|
|
399
|
-
|:-------|:---------|:-----|:----------------|
|
|
400
|
-
| **Vibe Coding** | 開発スタイル | 自然言語でコードを生成する開発スタイル(2025年提唱) | MUSUBIXは**Vibe Codingを実現するためのインフラ**。要件定義→設計→実装の全工程を自然言語で行える |
|
|
401
|
-
| **GitHub Copilot** | AIコード補完 | コード補完、チャット、エージェント機能 | **AGENTS.md経由で直接利用可能**。MCP設定不要でEARS要件、セキュリティ分析、形式検証を追加 |
|
|
402
|
-
| **Claude Code** | AIコーディング | Anthropicの自律コーディングエージェント | **CLAUDE.md経由で直接利用可能**。MCP設定不要で全機能を活用可能 |
|
|
403
|
-
| **Cursor** | AI統合IDE | AIネイティブなコードエディタ | MUSUBIXは**CursorのMCP機能で利用可能**。知識グラフとトレーサビリティを追加 |
|
|
404
|
-
| **Windsurf** | AI統合IDE | Codeiumが開発したAIエディタ | MUSUBIXは**WindsurfのMCP機能で利用可能**。シンボリック推論を追加 |
|
|
405
|
-
| **AWS Kiro** | 要件駆動開発 | Spec(仕様)から実装を生成(2025年発表) | MUSUBIXは**オープンソース**で**知識グラフによる学習機能**を持つ。クラウド非依存 |
|
|
406
|
-
| **GitHub SpecKit** | 仕様管理 | 仕様ファイルからコード生成(2025年発表) | MUSUBIXは**EARS形式**でより厳密な要件定義。**形式検証**で数学的に正確性を保証 |
|
|
407
|
-
| **Google Antigravity** | AIコード生成 | Geminiベースのコード生成(2025年発表) | MUSUBIXは**エージェント非依存**。どのLLMでも利用可能。**9条憲法**で品質を担保 |
|
|
408
|
-
|
|
409
|
-
:::note info
|
|
410
|
-
💡 **MUSUBIXのポジショニング**
|
|
411
|
-
|
|
412
|
-
MUSUBIXは「AIコーディングツール」ではなく、**「AIコーディングツールを強化するプラットフォーム」** です。
|
|
413
|
-
|
|
414
|
-
**🚀 GitHub Copilot / Claude Code ユーザーへ**
|
|
415
|
-
MCP設定は不要です!プロジェクトに`AGENTS.md`(GitHub Copilot用)または`CLAUDE.md`(Claude Code用)ファイルがあれば、自動的にMUSUBIXの機能を認識します。
|
|
416
|
-
|
|
417
|
-
```mermaid
|
|
418
|
-
graph TB
|
|
419
|
-
subgraph VibeCoding["🎨 Vibe Coding"]
|
|
420
|
-
VC["自然言語でコードを書く開発スタイル"]
|
|
421
|
-
end
|
|
422
|
-
|
|
423
|
-
subgraph AIAgents["🤖 AIコーディングエージェント"]
|
|
424
|
-
Copilot["GitHub Copilot"]
|
|
425
|
-
Cursor["Cursor"]
|
|
426
|
-
Windsurf["Windsurf"]
|
|
427
|
-
Claude["Claude Code"]
|
|
428
|
-
end
|
|
429
|
-
|
|
430
|
-
subgraph MUSUBIX["⚡ MUSUBIX(MCPサーバー)"]
|
|
431
|
-
EARS["📝 EARS要件定義"]
|
|
432
|
-
KG["📚 知識グラフ"]
|
|
433
|
-
Security["🛡️ セキュリティ分析"]
|
|
434
|
-
Formal["✅ 形式検証"]
|
|
435
|
-
Trace["🔗 トレーサビリティ"]
|
|
436
|
-
Learn["💡 自己学習"]
|
|
437
|
-
end
|
|
438
|
-
|
|
439
|
-
VC --> Copilot
|
|
440
|
-
VC --> Cursor
|
|
441
|
-
VC --> Windsurf
|
|
442
|
-
VC --> Claude
|
|
443
|
-
|
|
444
|
-
Copilot --> MUSUBIX
|
|
445
|
-
Cursor --> MUSUBIX
|
|
446
|
-
Windsurf --> MUSUBIX
|
|
447
|
-
Claude --> MUSUBIX
|
|
448
|
-
|
|
449
|
-
style VibeCoding fill:#e3f2fd,stroke:#1565c0
|
|
450
|
-
style AIAgents fill:#f3e5f5,stroke:#7b1fa2
|
|
451
|
-
style MUSUBIX fill:#e8f5e9,stroke:#2e7d32
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
**AWS KiroやGitHub SpecKitとの違い**:
|
|
455
|
-
|
|
456
|
-
2025年に登場したAWS KiroやGitHub SpecKitも「仕様駆動開発」を掲げていますが、MUSUBIXには以下の差別化ポイントがあります。
|
|
457
|
-
|
|
458
|
-
| 観点 | AWS Kiro / GitHub SpecKit | MUSUBIX |
|
|
459
|
-
|:-----|:--------------------------|:--------|
|
|
460
|
-
| **ライセンス** | プロプライエタリ | オープンソース(MIT) |
|
|
461
|
-
| **プラットフォーム** | 特定クラウド/サービスに依存 | クラウド非依存、ローカル実行可能 |
|
|
462
|
-
| **AIエージェント** | 専用エージェント | MCP対応の任意のエージェント |
|
|
463
|
-
| **要件形式** | 独自フォーマット | EARS形式(業界標準) |
|
|
464
|
-
| **検証方式** | ルールベース | Z3 SMTソルバ(数学的証明) |
|
|
465
|
-
| **知識管理** | セッション単位 | 知識グラフで永続化・学習 |
|
|
466
|
-
| **カスタマイズ** | 限定的 | 完全にカスタマイズ可能 |
|
|
467
|
-
|
|
468
|
-
- **オープンソース**: ベンダーロックインなし、カスタマイズ自由。コードを読んで動作を理解できる
|
|
469
|
-
- **エージェント非依存**: GitHub Copilot、Claude Code、Cursor、Windsurf、Gemini CLIなど、MCP対応の任意のAIエージェントで利用可能
|
|
470
|
-
- **知識グラフ(YATA)**: プロジェクト知識を構造化して蓄積。過去の決定理由、パターン、フィードバックを学習し、次のプロジェクトに活かせる
|
|
471
|
-
- **形式検証**: Z3 SMTソルバによる数学的な正確性保証。「この関数は常に正の値を返す」といった性質を証明できる
|
|
472
|
-
:::
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
# インストール
|
|
476
|
-
|
|
477
|
-
## システム要件
|
|
478
|
-
|
|
479
|
-
| 項目 | 要件 |
|
|
480
|
-
|:-----|:-----|
|
|
481
|
-
| **ランタイム** | Node.js >= 20.0.0 |
|
|
482
|
-
| **パッケージマネージャ** | npm >= 10.0.0 |
|
|
483
|
-
| **OS** | Windows / macOS / Linux |
|
|
484
|
-
|
|
485
|
-
## グローバルインストール
|
|
486
|
-
|
|
487
|
-
```bash
|
|
488
|
-
# CLIツールをグローバルにインストール
|
|
489
|
-
npm install -g musubix
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
## プロジェクトへのインストール
|
|
493
|
-
|
|
494
|
-
```bash
|
|
495
|
-
# プロジェクトの依存関係として追加
|
|
496
|
-
npm install musubix
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
:::note info
|
|
500
|
-
`musubix`パッケージをインストールすると、以下のサブパッケージがすべて自動的にインストールされます。
|
|
501
|
-
- `@nahisaho/musubix-core` - コア機能
|
|
502
|
-
- `@nahisaho/musubix-mcp-server` - MCPサーバー
|
|
503
|
-
- `@nahisaho/musubix-security` - セキュリティ分析
|
|
504
|
-
- `@nahisaho/musubix-formal-verify` - 形式検証
|
|
505
|
-
- `@nahisaho/musubix-yata-client` - YATA知識グラフクライアント
|
|
506
|
-
- その他の依存パッケージ
|
|
507
|
-
:::
|
|
508
|
-
|
|
509
|
-
## インストール確認
|
|
510
|
-
|
|
511
|
-
```bash
|
|
512
|
-
# バージョン確認
|
|
513
|
-
npx musubix --version
|
|
514
|
-
# 出力: 1.8.0
|
|
515
|
-
|
|
516
|
-
# ヘルプ表示
|
|
517
|
-
npx musubix --help
|
|
518
|
-
```
|
|
519
|
-
|
|
520
|
-
## パッケージ構成
|
|
521
|
-
|
|
522
|
-
MUSUBIXはモノレポ構成で、以下の17パッケージで構成されています。
|
|
523
|
-
|
|
524
|
-
```
|
|
525
|
-
packages/
|
|
526
|
-
├── core/ # @nahisaho/musubix-core
|
|
527
|
-
├── mcp-server/ # @nahisaho/musubix-mcp-server
|
|
528
|
-
├── security/ # @nahisaho/musubix-security (v1.8.0 NEW!)
|
|
529
|
-
├── formal-verify/ # @nahisaho/musubix-formal-verify
|
|
530
|
-
├── yata-client/ # @nahisaho/musubix-yata-client
|
|
531
|
-
├── yata-local/ # @nahisaho/yata-local
|
|
532
|
-
├── yata-global/ # @nahisaho/yata-global
|
|
533
|
-
├── yata-ui/ # @nahisaho/yata-ui
|
|
534
|
-
├── pattern-mcp/ # @nahisaho/musubix-pattern-mcp
|
|
535
|
-
├── ontology-mcp/ # @nahisaho/musubix-ontology-mcp
|
|
536
|
-
├── wake-sleep/ # @nahisaho/musubix-wake-sleep
|
|
537
|
-
└── sdd-ontology/ # @nahisaho/musubix-sdd-ontology
|
|
538
|
-
```
|
|
539
|
-
|
|
540
|
-
| パッケージ | npm名 | 役割 |
|
|
541
|
-
|:-----------|:------|:-----|
|
|
542
|
-
| **core** | `@nahisaho/musubix-core` | CLI、EARS検証、コード生成、設計パターン |
|
|
543
|
-
| **mcp-server** | `@nahisaho/musubix-mcp-server` | AIエージェント連携(MCP)- 24ツール・3プロンプト |
|
|
544
|
-
| **security** | `@nahisaho/musubix-security` | セキュリティ分析 - OWASP Top 10、CWE Top 25 (v1.8.0新機能) |
|
|
545
|
-
| **formal-verify** | `@nahisaho/musubix-formal-verify` | Z3統合、Hoare検証、EARS→SMT変換 |
|
|
546
|
-
| **yata-client** | `@nahisaho/musubix-yata-client` | YATA知識グラフクライアント |
|
|
547
|
-
| **yata-local** | `@nahisaho/yata-local` | SQLiteベースローカル知識グラフ |
|
|
548
|
-
| **yata-global** | `@nahisaho/yata-global` | 分散型知識グラフプラットフォーム |
|
|
549
|
-
| **yata-ui** | `@nahisaho/yata-ui` | Web可視化・管理インターフェース |
|
|
550
|
-
| **pattern-mcp** | `@nahisaho/musubix-pattern-mcp` | パターン抽出・圧縮・ライブラリ |
|
|
551
|
-
| **ontology-mcp** | `@nahisaho/musubix-ontology-mcp` | N3Store・OWL 2 RL推論エンジン |
|
|
552
|
-
| **wake-sleep** | `@nahisaho/musubix-wake-sleep` | Wake-Sleep学習サイクル |
|
|
553
|
-
| **sdd-ontology** | `@nahisaho/musubix-sdd-ontology` | SDD方法論オントロジー |
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
# クイックスタート
|
|
557
|
-
|
|
558
|
-
## 前提条件
|
|
559
|
-
|
|
560
|
-
- MUSUBIXがインストールされていること
|
|
561
|
-
- AIエージェント(Claude Code、GitHub Copilot、Cursor等)が利用可能であること
|
|
562
|
-
|
|
563
|
-
:::note info
|
|
564
|
-
💡 **GitHub CopilotとClaude Codeは設定不要!**
|
|
565
|
-
|
|
566
|
-
GitHub Copilotは`AGENTS.md`、Claude Codeは`CLAUDE.md`ファイルがあれば自動的にMUSUBIXの機能を認識します。MCP設定は不要です。
|
|
567
|
-
|
|
568
|
-
Cursor、Windsurf等の他のエージェントを使う場合は、[MCPサーバー連携](#mcpサーバー連携)を参照してMCPサーバーを設定してください。
|
|
569
|
-
:::
|
|
570
|
-
|
|
571
|
-
## 1. プロジェクトの初期化
|
|
572
|
-
|
|
573
|
-
CLIコマンドでプロジェクトを初期化します。
|
|
574
|
-
|
|
575
|
-
```bash
|
|
576
|
-
# 新しいプロジェクトを初期化
|
|
577
|
-
npx musubix init my-project
|
|
578
|
-
|
|
579
|
-
# または現在のディレクトリを初期化
|
|
580
|
-
npx musubix init
|
|
581
|
-
```
|
|
582
|
-
|
|
583
|
-
以下のファイルが生成されます:
|
|
584
|
-
- `steering/` - プロジェクトメモリ
|
|
585
|
-
- `storage/` - 要件・設計・トレーサビリティ
|
|
586
|
-
- `musubix.config.json` - 設定ファイル
|
|
587
|
-
- `AGENTS.md` - GitHub Copilot用設定
|
|
588
|
-
- `CLAUDE.md` - Claude Code用設定
|
|
589
|
-
|
|
590
|
-
## 2. 対話形式で要件定義を作成
|
|
591
|
-
|
|
592
|
-
MUSUBIXには**対話形式の要件定義機能**が備わっています。作りたいシステムを伝えて「要件定義を開始」と言うだけで、AIエージェントが質問を通じて要件を引き出してくれます。
|
|
593
|
-
|
|
594
|
-
```
|
|
595
|
-
💬 「ユーザー認証システムを作りたいので、要件定義を開始してください」
|
|
596
|
-
```
|
|
597
|
-
|
|
598
|
-
🤖 AIエージェントが対話形式で要件をヒアリングします。
|
|
599
|
-
|
|
600
|
-
```
|
|
601
|
-
🤖 「ユーザー認証システムの要件定義を開始します。
|
|
602
|
-
いくつか質問させてください。
|
|
603
|
-
|
|
604
|
-
Q1: 認証方式は何を使いますか?
|
|
605
|
-
a) メールアドレス + パスワード
|
|
606
|
-
b) ソーシャルログイン(Google, GitHub等)
|
|
607
|
-
c) 多要素認証(MFA)
|
|
608
|
-
d) 上記の組み合わせ」
|
|
609
|
-
|
|
610
|
-
💬 「aとcを組み合わせたいです。最初はメールとパスワードで、
|
|
611
|
-
オプションでMFAを有効にできるようにしてください」
|
|
612
|
-
|
|
613
|
-
🤖 「了解しました。次の質問です。
|
|
614
|
-
|
|
615
|
-
Q2: セッション管理について教えてください。
|
|
616
|
-
- セッションの有効期限は何分ですか?
|
|
617
|
-
- 同時ログインは許可しますか?
|
|
618
|
-
- 自動ログアウト機能は必要ですか?」
|
|
619
|
-
|
|
620
|
-
💬 「有効期限は30分、同時ログインは許可しない、
|
|
621
|
-
非アクティブ状態が続いたら自動ログアウトしてください」
|
|
622
|
-
|
|
623
|
-
🤖 「ありがとうございます。セキュリティ要件についてお聞きします。
|
|
624
|
-
|
|
625
|
-
Q3: ログイン試行の制限は必要ですか?
|
|
626
|
-
- 連続失敗時のアカウントロック
|
|
627
|
-
- CAPTCHAの表示
|
|
628
|
-
- IPアドレスによる制限」
|
|
629
|
-
|
|
630
|
-
💬 「5回連続で失敗したら30分ロック、3回目からCAPTCHAを表示してください」
|
|
631
|
-
|
|
632
|
-
🤖 「十分な情報が集まりました。要件定義書を生成します...
|
|
633
|
-
|
|
634
|
-
【生成された要件定義書】
|
|
635
|
-
|
|
636
|
-
## REQ-AUTH-001: ユーザー認証
|
|
637
|
-
WHEN a user submits email and password,
|
|
638
|
-
THE system SHALL validate credentials
|
|
639
|
-
AND return a JWT token within 2 seconds.
|
|
640
|
-
|
|
641
|
-
## REQ-AUTH-002: 多要素認証
|
|
642
|
-
IF a user has MFA enabled,
|
|
643
|
-
THEN THE system SHALL require a TOTP code after password validation.
|
|
644
|
-
|
|
645
|
-
## REQ-AUTH-003: セッション管理
|
|
646
|
-
WHILE a user session is active,
|
|
647
|
-
THE system SHALL maintain the session for 30 minutes of inactivity.
|
|
648
|
-
THE system SHALL NOT allow concurrent sessions for the same user.
|
|
649
|
-
|
|
650
|
-
## REQ-AUTH-004: ログイン試行制限
|
|
651
|
-
WHEN login attempts exceed 5 times within 10 minutes,
|
|
652
|
-
THE system SHALL lock the account for 30 minutes.
|
|
653
|
-
WHEN login attempts exceed 2 times,
|
|
654
|
-
THE system SHALL display CAPTCHA verification.
|
|
655
|
-
|
|
656
|
-
...
|
|
657
|
-
|
|
658
|
-
この要件定義書でよろしいですか?」
|
|
659
|
-
```
|
|
660
|
-
|
|
661
|
-
:::note info
|
|
662
|
-
💡 **対話形式のメリット**
|
|
663
|
-
- 要件の漏れを防げる(AIが適切な質問をしてくれる)
|
|
664
|
-
- 曖昧な点を明確化できる
|
|
665
|
-
- 非機能要件も自動的にヒアリングしてくれる
|
|
666
|
-
- EARS形式への変換を意識する必要がない
|
|
667
|
-
:::
|
|
668
|
-
|
|
669
|
-
## 3. 要件定義書のレビューと修正
|
|
670
|
-
|
|
671
|
-
生成された要件を確認し、必要に応じて修正を依頼します。
|
|
672
|
-
|
|
673
|
-
```
|
|
674
|
-
💬 「この要件定義書をレビューしてください。
|
|
675
|
-
漏れている要件や曖昧な点があれば指摘してください」
|
|
676
|
-
```
|
|
677
|
-
|
|
678
|
-
🤖 AIエージェントが要件定義書をレビューし、以下の観点でフィードバックします。
|
|
679
|
-
- EARS形式の構文チェック
|
|
680
|
-
- 要件の網羅性・完全性
|
|
681
|
-
- 要件間の矛盾や重複
|
|
682
|
-
- 非機能要件(性能、セキュリティ等)の漏れ
|
|
683
|
-
|
|
684
|
-
```
|
|
685
|
-
💬 「いいですね。ただ、以下を追加・修正してください:
|
|
686
|
-
- ログイン試行は5回までにして、超えたら30分アカウントをロック
|
|
687
|
-
- パスワードの最小文字数は8文字以上
|
|
688
|
-
- レスポンス時間の要件を2秒から1秒に変更」
|
|
689
|
-
```
|
|
690
|
-
|
|
691
|
-
🤖 AIエージェントが要件を追加・修正し、更新された要件定義書を提示します。
|
|
692
|
-
|
|
693
|
-
:::note warn
|
|
694
|
-
📝 **要件定義書のレビューポイント**
|
|
695
|
-
- すべての機能要件がEARS形式で記述されているか
|
|
696
|
-
- 非機能要件(性能、セキュリティ、可用性等)が含まれているか
|
|
697
|
-
- 各要件に一意のIDが付与されているか
|
|
698
|
-
- 曖昧な表現(「適切に」「できるだけ」等)がないか
|
|
699
|
-
:::
|
|
700
|
-
|
|
701
|
-
## 4. 設計の生成を依頼
|
|
702
|
-
|
|
703
|
-
要件が固まったら、設計を依頼します。
|
|
704
|
-
|
|
705
|
-
```
|
|
706
|
-
💬 「この要件でC4モデルの設計を作成してください」
|
|
707
|
-
```
|
|
708
|
-
|
|
709
|
-
🤖 AIエージェントがC4モデル(Context → Container → Component)の設計を生成します。
|
|
710
|
-
|
|
711
|
-
## 5. 設計書のレビューと修正
|
|
712
|
-
|
|
713
|
-
生成された設計をレビューします。
|
|
714
|
-
|
|
715
|
-
```
|
|
716
|
-
💬 「この設計書をレビューしてください。
|
|
717
|
-
アーキテクチャの問題点やSOLID原則への違反があれば指摘してください」
|
|
718
|
-
```
|
|
719
|
-
|
|
720
|
-
🤖 AIエージェントが設計書をレビューし、以下の観点でフィードバックします。
|
|
721
|
-
- C4モデルの各レベルの整合性
|
|
722
|
-
- コンポーネント間の依存関係
|
|
723
|
-
- SOLID原則への準拠
|
|
724
|
-
- 設計パターンの適切な適用
|
|
725
|
-
|
|
726
|
-
```
|
|
727
|
-
💬 「設計を以下のように修正してください:
|
|
728
|
-
- AuthServiceとTokenServiceを分離
|
|
729
|
-
- キャッシュ層(Redis)を追加
|
|
730
|
-
- 認証ログを記録するAuditServiceを追加」
|
|
731
|
-
```
|
|
732
|
-
|
|
733
|
-
🤖 AIエージェントが設計を修正し、更新された設計書を提示します。
|
|
734
|
-
|
|
735
|
-
:::note warn
|
|
736
|
-
📐 **設計書のレビューポイント**
|
|
737
|
-
- 各コンポーネントの責務が明確か(単一責任原則)
|
|
738
|
-
- 依存関係が適切か(依存性逆転原則)
|
|
739
|
-
- すべての要件がコンポーネントにマッピングされているか
|
|
740
|
-
- スケーラビリティ・保守性が考慮されているか
|
|
741
|
-
:::
|
|
742
|
-
|
|
743
|
-
## 6. 憲法準拠チェックを依頼
|
|
744
|
-
|
|
745
|
-
設計が9条憲法に準拠しているか確認します。
|
|
746
|
-
|
|
747
|
-
```
|
|
748
|
-
💬 「この設計が憲法に準拠しているか検証してください」
|
|
749
|
-
```
|
|
750
|
-
|
|
751
|
-
🤖 AIエージェントが各条項への準拠状況をレポートします。
|
|
752
|
-
|
|
753
|
-
## 7. コード生成を依頼
|
|
754
|
-
|
|
755
|
-
設計からコードを生成します。
|
|
756
|
-
|
|
757
|
-
```
|
|
758
|
-
💬 「この設計からTypeScriptのコードを生成してください。
|
|
759
|
-
Repositoryパターンを使って、テストも一緒に作成してください」
|
|
760
|
-
```
|
|
761
|
-
|
|
762
|
-
🤖 AIエージェントがコードとテストを生成します。
|
|
763
|
-
|
|
764
|
-
## 8. セキュリティチェックを依頼
|
|
765
|
-
|
|
766
|
-
生成されたコードのセキュリティを確認します。
|
|
767
|
-
|
|
768
|
-
```
|
|
769
|
-
💬 「生成されたコードにセキュリティの問題がないか確認してください」
|
|
770
|
-
```
|
|
771
|
-
|
|
772
|
-
🤖 AIエージェントがセキュリティスキャンを実行し、問題があれば修正案を提示します。
|
|
773
|
-
|
|
774
|
-
## 9. トレーサビリティを確認
|
|
775
|
-
|
|
776
|
-
要件から実装までの追跡可能性を確認します。
|
|
777
|
-
|
|
778
|
-
```
|
|
779
|
-
💬 「要件からコードまでのトレーサビリティを確認してください」
|
|
780
|
-
```
|
|
781
|
-
|
|
782
|
-
🤖 AIエージェントがトレーサビリティマトリクスを生成し、リンクの整合性を検証します。
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
:::note info
|
|
786
|
-
🎉 **これで完了です!**
|
|
787
|
-
|
|
788
|
-
コードを一行も書かずに、自然言語だけでソフトウェア開発の一連のプロセスを実行できました。
|
|
789
|
-
:::
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
# CLIコマンドリファレンス
|
|
793
|
-
|
|
794
|
-
## 初期化コマンド
|
|
795
|
-
|
|
796
|
-
```bash
|
|
797
|
-
# プロジェクト初期化
|
|
798
|
-
npx musubix init [path] [--name <name>] [--force]
|
|
799
|
-
|
|
800
|
-
# オプション
|
|
801
|
-
# path : 初期化先のパス(デフォルト: カレントディレクトリ)
|
|
802
|
-
# --name : プロジェクト名
|
|
803
|
-
# --force : 既存ファイルを上書き
|
|
804
|
-
```
|
|
805
|
-
|
|
806
|
-
## 要件分析コマンド
|
|
807
|
-
|
|
808
|
-
```bash
|
|
809
|
-
# 自然言語 → EARS変換
|
|
810
|
-
npx musubix requirements analyze <file>
|
|
811
|
-
|
|
812
|
-
# EARS構文検証
|
|
813
|
-
npx musubix requirements validate <file>
|
|
814
|
-
|
|
815
|
-
# オントロジーマッピング
|
|
816
|
-
npx musubix requirements map <file>
|
|
817
|
-
|
|
818
|
-
# 関連要件検索
|
|
819
|
-
npx musubix requirements search <query>
|
|
820
|
-
```
|
|
821
|
-
|
|
822
|
-
## 設計生成コマンド
|
|
823
|
-
|
|
824
|
-
```bash
|
|
825
|
-
# 要件から設計生成
|
|
826
|
-
npx musubix design generate <file>
|
|
827
|
-
|
|
828
|
-
# パターン検出
|
|
829
|
-
npx musubix design patterns <context>
|
|
830
|
-
|
|
831
|
-
# SOLID準拠検証
|
|
832
|
-
npx musubix design validate <file>
|
|
833
|
-
|
|
834
|
-
# C4ダイアグラム生成
|
|
835
|
-
npx musubix design c4 <file> [--level <level>]
|
|
836
|
-
# level: context | container | component | code
|
|
837
|
-
|
|
838
|
-
# ADR生成
|
|
839
|
-
npx musubix design adr <decision>
|
|
840
|
-
```
|
|
841
|
-
|
|
842
|
-
## コード生成コマンド
|
|
843
|
-
|
|
844
|
-
```bash
|
|
845
|
-
# 設計からコード生成
|
|
846
|
-
npx musubix codegen generate <file> [--output <dir>]
|
|
847
|
-
|
|
848
|
-
# 静的解析
|
|
849
|
-
npx musubix codegen analyze <file>
|
|
850
|
-
|
|
851
|
-
# セキュリティスキャン
|
|
852
|
-
npx musubix codegen security <path>
|
|
853
|
-
```
|
|
854
|
-
|
|
855
|
-
## テストコマンド
|
|
856
|
-
|
|
857
|
-
```bash
|
|
858
|
-
# テスト生成
|
|
859
|
-
npx musubix test generate <file>
|
|
860
|
-
|
|
861
|
-
# カバレッジ測定
|
|
862
|
-
npx musubix test coverage <dir>
|
|
863
|
-
```
|
|
864
|
-
|
|
865
|
-
## トレーサビリティコマンド
|
|
866
|
-
|
|
867
|
-
```bash
|
|
868
|
-
# トレーサビリティマトリクス
|
|
869
|
-
npx musubix trace matrix
|
|
870
|
-
|
|
871
|
-
# 影響分析
|
|
872
|
-
npx musubix trace impact <id>
|
|
873
|
-
|
|
874
|
-
# リンク検証
|
|
875
|
-
npx musubix trace validate
|
|
876
|
-
|
|
877
|
-
# 自動同期(v1.6.7+)
|
|
878
|
-
npx musubix trace sync [--dry-run]
|
|
879
|
-
```
|
|
880
|
-
|
|
881
|
-
## 学習システムコマンド
|
|
882
|
-
|
|
883
|
-
```bash
|
|
884
|
-
# 学習状態ダッシュボード
|
|
885
|
-
npx musubix learn status
|
|
886
|
-
|
|
887
|
-
# フィードバック記録
|
|
888
|
-
npx musubix learn feedback <id>
|
|
889
|
-
|
|
890
|
-
# パターン一覧
|
|
891
|
-
npx musubix learn patterns
|
|
892
|
-
|
|
893
|
-
# 推奨パターン
|
|
894
|
-
npx musubix learn recommend
|
|
895
|
-
|
|
896
|
-
# ベストプラクティス表示
|
|
897
|
-
npx musubix learn best-practices [--category <cat>] [--high-confidence]
|
|
898
|
-
|
|
899
|
-
# エクスポート
|
|
900
|
-
npx musubix learn export [--output <file>] [--privacy-filter]
|
|
901
|
-
|
|
902
|
-
# インポート
|
|
903
|
-
npx musubix learn import <file> [--merge-strategy <strategy>]
|
|
904
|
-
```
|
|
905
|
-
|
|
906
|
-
## KGPR(Knowledge Graph Pull Request)コマンド
|
|
907
|
-
|
|
908
|
-
```bash
|
|
909
|
-
# KGPR作成
|
|
910
|
-
npx musubix kgpr create -t "title"
|
|
911
|
-
|
|
912
|
-
# 差分プレビュー
|
|
913
|
-
npx musubix kgpr diff
|
|
914
|
-
|
|
915
|
-
# KGPR一覧
|
|
916
|
-
npx musubix kgpr list
|
|
917
|
-
|
|
918
|
-
# KGPR送信
|
|
919
|
-
npx musubix kgpr submit <id>
|
|
920
|
-
```
|
|
921
|
-
|
|
922
|
-
## REPLモード
|
|
923
|
-
|
|
924
|
-
```bash
|
|
925
|
-
# 対話的シェルを起動
|
|
926
|
-
npx musubix repl
|
|
927
|
-
|
|
928
|
-
# REPL内コマンド例
|
|
929
|
-
> requirements validate ./req.md
|
|
930
|
-
> design patterns authentication
|
|
931
|
-
> trace matrix
|
|
932
|
-
> exit
|
|
933
|
-
```
|
|
934
|
-
|
|
935
|
-
## グローバルオプション
|
|
936
|
-
|
|
937
|
-
| オプション | 説明 |
|
|
938
|
-
|:-----------|:-----|
|
|
939
|
-
| `--verbose, -v` | 詳細出力 |
|
|
940
|
-
| `--json` | JSON形式で出力 |
|
|
941
|
-
| `--config <file>` | 設定ファイル指定 |
|
|
942
|
-
| `--quiet, -q` | 静音モード |
|
|
943
|
-
|
|
944
|
-
## 終了コード
|
|
945
|
-
|
|
946
|
-
| コード | 意味 |
|
|
947
|
-
|:-------|:-----|
|
|
948
|
-
| 0 | 成功 |
|
|
949
|
-
| 1 | 一般エラー |
|
|
950
|
-
| 2 | 検証エラー |
|
|
951
|
-
| 3 | 設定エラー |
|
|
952
|
-
| 4 | 入出力エラー |
|
|
953
|
-
| 5 | 内部エラー |
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
# MCPサーバー連携
|
|
957
|
-
|
|
958
|
-
MUSUBIXは **Model Context Protocol(MCP)** を通じて、主要なAIコーディングエージェントと連携できます。
|
|
959
|
-
|
|
960
|
-
## 対応プラットフォーム
|
|
961
|
-
|
|
962
|
-
| プラットフォーム | 対応状況 |
|
|
963
|
-
|:----------------|:---------|
|
|
964
|
-
| Claude Code | :white_check_mark: 完全対応 |
|
|
965
|
-
| GitHub Copilot | :white_check_mark: 完全対応 |
|
|
966
|
-
| Cursor | :white_check_mark: 完全対応 |
|
|
967
|
-
| Gemini CLI | :white_check_mark: 完全対応 |
|
|
968
|
-
| Windsurf | :white_check_mark: 対応 |
|
|
969
|
-
|
|
970
|
-
## MCPサーバー起動
|
|
971
|
-
|
|
972
|
-
```bash
|
|
973
|
-
# 標準入出力(stdio)トランスポート
|
|
974
|
-
npx @nahisaho/musubix-mcp-server
|
|
975
|
-
|
|
976
|
-
# または
|
|
977
|
-
npx musubix-mcp --transport stdio
|
|
978
|
-
|
|
979
|
-
# HTTPトランスポート
|
|
980
|
-
npx musubix-mcp --transport http --port 3000
|
|
981
|
-
```
|
|
982
|
-
|
|
983
|
-
## Claude Code設定
|
|
984
|
-
|
|
985
|
-
`~/.config/claude/claude_desktop_config.json`:
|
|
986
|
-
|
|
987
|
-
```json
|
|
988
|
-
{
|
|
989
|
-
"mcpServers": {
|
|
990
|
-
"musubix": {
|
|
991
|
-
"command": "npx",
|
|
992
|
-
"args": ["@nahisaho/musubix-mcp-server"],
|
|
993
|
-
"env": {}
|
|
994
|
-
}
|
|
995
|
-
}
|
|
996
|
-
}
|
|
997
|
-
```
|
|
998
|
-
|
|
999
|
-
## VS Code設定(GitHub Copilot)
|
|
1000
|
-
|
|
1001
|
-
`.vscode/settings.json`:
|
|
1002
|
-
|
|
1003
|
-
```json
|
|
1004
|
-
{
|
|
1005
|
-
"mcp.servers": {
|
|
1006
|
-
"musubix": {
|
|
1007
|
-
"command": "npx",
|
|
1008
|
-
"args": ["@nahisaho/musubix-mcp-server"]
|
|
1009
|
-
}
|
|
1010
|
-
}
|
|
1011
|
-
}
|
|
1012
|
-
```
|
|
1013
|
-
|
|
1014
|
-
## Cursor設定
|
|
1015
|
-
|
|
1016
|
-
`.cursor/mcp.json`:
|
|
1017
|
-
|
|
1018
|
-
```json
|
|
1019
|
-
{
|
|
1020
|
-
"mcpServers": {
|
|
1021
|
-
"musubix": {
|
|
1022
|
-
"command": "npx",
|
|
1023
|
-
"args": ["@nahisaho/musubix-mcp-server"]
|
|
1024
|
-
}
|
|
1025
|
-
}
|
|
1026
|
-
}
|
|
1027
|
-
```
|
|
1028
|
-
|
|
1029
|
-
## MCPツール一覧(24ツール)
|
|
1030
|
-
|
|
1031
|
-
### SDD基本ツール(9ツール)
|
|
1032
|
-
|
|
1033
|
-
| ツール名 | 説明 |
|
|
1034
|
-
|:---------|:-----|
|
|
1035
|
-
| `sdd_create_requirements` | EARS形式の要件ドキュメント作成 |
|
|
1036
|
-
| `sdd_validate_requirements` | 要件のEARS検証・憲法準拠チェック |
|
|
1037
|
-
| `sdd_create_design` | C4モデル設計ドキュメント作成 |
|
|
1038
|
-
| `sdd_validate_design` | 設計の要件トレーサビリティ検証 |
|
|
1039
|
-
| `sdd_create_tasks` | 設計から実装タスク生成 |
|
|
1040
|
-
| `sdd_query_knowledge` | YATA知識グラフへのクエリ |
|
|
1041
|
-
| `sdd_update_knowledge` | 知識グラフの更新 |
|
|
1042
|
-
| `sdd_validate_constitution` | 9憲法条項への準拠検証 |
|
|
1043
|
-
| `sdd_validate_traceability` | 要件↔設計↔タスクのトレーサビリティ検証 |
|
|
1044
|
-
|
|
1045
|
-
### シンボリックツール(5ツール)
|
|
1046
|
-
|
|
1047
|
-
| ツール名 | 説明 |
|
|
1048
|
-
|:---------|:-----|
|
|
1049
|
-
| `symbolic_filter_code` | LLM出力のセマンティック検証 |
|
|
1050
|
-
| `symbolic_detect_hallucination` | ハルシネーション検出 |
|
|
1051
|
-
| `symbolic_check_constitution` | 憲法ルールチェック |
|
|
1052
|
-
| `symbolic_estimate_confidence` | 信頼度推定 |
|
|
1053
|
-
| `symbolic_route_decision` | 信頼度ルーティング |
|
|
1054
|
-
|
|
1055
|
-
### パターン統合ツール(7ツール)
|
|
1056
|
-
|
|
1057
|
-
| ツール名 | 説明 |
|
|
1058
|
-
|:---------|:-----|
|
|
1059
|
-
| `pattern_extract` | コードからパターンを抽出 |
|
|
1060
|
-
| `pattern_compress` | パターンの抽象化・圧縮 |
|
|
1061
|
-
| `pattern_store` | パターンライブラリへの保存 |
|
|
1062
|
-
| `pattern_query` | パターンの検索・取得 |
|
|
1063
|
-
| `pattern_consolidate` | 類似パターンの統合 |
|
|
1064
|
-
| `ontology_query` | オントロジーグラフへのクエリ |
|
|
1065
|
-
| `ontology_infer` | オントロジーによる推論実行 |
|
|
1066
|
-
|
|
1067
|
-
### KGPRツール(5ツール)
|
|
1068
|
-
|
|
1069
|
-
| ツール名 | 説明 |
|
|
1070
|
-
|:---------|:-----|
|
|
1071
|
-
| `kgpr_create` | KGPR作成 |
|
|
1072
|
-
| `kgpr_diff` | 差分プレビュー |
|
|
1073
|
-
| `kgpr_list` | KGPR一覧表示 |
|
|
1074
|
-
| `kgpr_submit` | KGPR送信 |
|
|
1075
|
-
| `kgpr_review` | KGPRレビュー |
|
|
1076
|
-
|
|
1077
|
-
### 形式検証ツール(6ツール)
|
|
1078
|
-
|
|
1079
|
-
| ツール名 | 説明 |
|
|
1080
|
-
|:---------|:-----|
|
|
1081
|
-
| `verify_precondition` | 事前条件検証(Z3) |
|
|
1082
|
-
| `verify_postcondition` | 事後条件検証(Hoare) |
|
|
1083
|
-
| `ears_to_smt` | EARS→SMT-LIB2変換 |
|
|
1084
|
-
| `trace_add_link` | トレースリンク追加 |
|
|
1085
|
-
| `trace_query` | トレースクエリ |
|
|
1086
|
-
| `trace_impact` | 影響分析 |
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
# セキュリティ分析(v1.8.0新機能)
|
|
1090
|
-
|
|
1091
|
-
v1.8.0で追加された`@nahisaho/musubix-security`パッケージは、包括的なセキュリティ分析機能を提供します。
|
|
1092
|
-
|
|
1093
|
-
## 機能概要
|
|
1094
|
-
|
|
1095
|
-
| 機能 | 説明 |
|
|
1096
|
-
|:-----|:-----|
|
|
1097
|
-
| :mag: **脆弱性スキャン** | SQLインジェクション、XSS、コマンドインジェクション等の検出 |
|
|
1098
|
-
| :key: **シークレット検出** | APIキー、認証情報、秘密鍵のハードコード検出 |
|
|
1099
|
-
| :droplet: **テイント解析** | ユーザー入力から危険な関数へのデータフロー追跡 |
|
|
1100
|
-
| :package: **依存関係監査** | npm audit統合による脆弱な依存関係の検出 |
|
|
1101
|
-
| :wrench: **自動修正生成** | 検出された脆弱性に対する修正コードの提案 |
|
|
1102
|
-
| :hammer: **自動修復システム** | パッチ生成、修復計画、セキュアコード変換 (Phase 5) |
|
|
1103
|
-
| :shield: **セキュリティインテリジェンス** | 脅威情報、リスクスコア、予測分析 (Phase 6) |
|
|
1104
|
-
|
|
1105
|
-
## 脆弱性スキャン
|
|
1106
|
-
|
|
1107
|
-
CLIからの実行:
|
|
1108
|
-
|
|
1109
|
-
```bash
|
|
1110
|
-
# ディレクトリをスキャン
|
|
1111
|
-
npx musubix codegen security ./src
|
|
1112
|
-
|
|
1113
|
-
# 詳細レポート
|
|
1114
|
-
npx musubix codegen security ./src --verbose --json
|
|
1115
|
-
```
|
|
1116
|
-
|
|
1117
|
-
プログラマティックな使用:
|
|
1118
|
-
|
|
1119
|
-
```typescript
|
|
1120
|
-
import { VulnerabilityScanner } from '@nahisaho/musubix-security';
|
|
1121
|
-
|
|
1122
|
-
const scanner = new VulnerabilityScanner();
|
|
1123
|
-
const result = await scanner.scanDirectory('./src');
|
|
1124
|
-
|
|
1125
|
-
console.log(result.vulnerabilities); // 検出された脆弱性
|
|
1126
|
-
console.log(result.summary); // 重要度別サマリー
|
|
1127
|
-
```
|
|
1128
|
-
|
|
1129
|
-
## 検出可能な脆弱性
|
|
1130
|
-
|
|
1131
|
-
| カテゴリ | CWE | 重要度 |
|
|
1132
|
-
|:---------|:----|:-------|
|
|
1133
|
-
| **SQLインジェクション** | CWE-89 | Critical |
|
|
1134
|
-
| **コマンドインジェクション** | CWE-78 | Critical |
|
|
1135
|
-
| **コードインジェクション** | CWE-94 | Critical |
|
|
1136
|
-
| **XSS** | CWE-79 | High |
|
|
1137
|
-
| **パストラバーサル** | CWE-22 | High |
|
|
1138
|
-
| **NoSQLインジェクション** | CWE-943 | High |
|
|
1139
|
-
| **XXE** | CWE-611 | High |
|
|
1140
|
-
| **オープンリダイレクト** | CWE-601 | Medium |
|
|
1141
|
-
|
|
1142
|
-
## シークレット検出
|
|
1143
|
-
|
|
1144
|
-
```typescript
|
|
1145
|
-
import { SecretDetector } from '@nahisaho/musubix-security';
|
|
1146
|
-
|
|
1147
|
-
const detector = new SecretDetector();
|
|
1148
|
-
const result = await detector.scan('./src');
|
|
1149
|
-
|
|
1150
|
-
console.log(result.secrets); // 検出されたシークレット
|
|
1151
|
-
```
|
|
1152
|
-
|
|
1153
|
-
検出可能なシークレット:
|
|
1154
|
-
|
|
1155
|
-
- Azure Connection Strings
|
|
1156
|
-
- AWS Access Key / Secret Key
|
|
1157
|
-
- GitHub Token
|
|
1158
|
-
- Private Keys (PEM)
|
|
1159
|
-
- Database URLs
|
|
1160
|
-
- JWT Secrets
|
|
1161
|
-
- Stripe Keys
|
|
1162
|
-
- Slack Webhooks
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
## テイント解析
|
|
1166
|
-
|
|
1167
|
-
ユーザー入力から危険な関数へのデータフローを追跡:
|
|
1168
|
-
|
|
1169
|
-
```typescript
|
|
1170
|
-
import { TaintAnalyzer } from '@nahisaho/musubix-security';
|
|
1171
|
-
|
|
1172
|
-
const analyzer = new TaintAnalyzer();
|
|
1173
|
-
const result = analyzer.analyze('./src');
|
|
1174
|
-
|
|
1175
|
-
console.log(result.paths); // ソースからシンクへのパス
|
|
1176
|
-
```
|
|
1177
|
-
|
|
1178
|
-
## 統合セキュリティスキャン
|
|
1179
|
-
|
|
1180
|
-
すべてのセキュリティ機能を一度に実行:
|
|
1181
|
-
|
|
1182
|
-
```typescript
|
|
1183
|
-
import { createSecurityService } from '@nahisaho/musubix-security';
|
|
1184
|
-
|
|
1185
|
-
const service = createSecurityService();
|
|
1186
|
-
|
|
1187
|
-
const result = await service.scan({
|
|
1188
|
-
target: './src',
|
|
1189
|
-
vulnerabilities: true,
|
|
1190
|
-
taint: true,
|
|
1191
|
-
secrets: true,
|
|
1192
|
-
dependencies: true,
|
|
1193
|
-
generateFixes: true, // 自動修正コードを生成
|
|
1194
|
-
});
|
|
1195
|
-
|
|
1196
|
-
console.log(result.summary);
|
|
1197
|
-
```
|
|
1198
|
-
|
|
1199
|
-
## レポート形式
|
|
1200
|
-
|
|
1201
|
-
```bash
|
|
1202
|
-
# JSON形式
|
|
1203
|
-
npx musubix codegen security ./src --format json
|
|
1204
|
-
|
|
1205
|
-
# Markdown形式
|
|
1206
|
-
npx musubix codegen security ./src --format markdown
|
|
1207
|
-
|
|
1208
|
-
# SARIF形式(GitHub Code Scanning互換)
|
|
1209
|
-
npx musubix codegen security ./src --format sarif
|
|
1210
|
-
```
|
|
1211
|
-
|
|
1212
|
-
## 自動修復システム(Phase 5)
|
|
1213
|
-
|
|
1214
|
-
検出された脆弱性に対する自動修復機能を提供します。
|
|
1215
|
-
|
|
1216
|
-
### AutoFixer
|
|
1217
|
-
|
|
1218
|
-
```typescript
|
|
1219
|
-
import { createAutoFixer } from '@nahisaho/musubix-security';
|
|
1220
|
-
|
|
1221
|
-
const fixer = createAutoFixer();
|
|
1222
|
-
|
|
1223
|
-
// 脆弱性に対する修正を生成
|
|
1224
|
-
const fixes = fixer.generateFixes(vulnerability, {
|
|
1225
|
-
maxFixes: 3,
|
|
1226
|
-
minConfidence: 0.7,
|
|
1227
|
-
includeBreakingChanges: false,
|
|
1228
|
-
preferredStrategies: ['sanitization', 'parameterization'],
|
|
1229
|
-
});
|
|
1230
|
-
|
|
1231
|
-
// 修正を適用
|
|
1232
|
-
const result = fixer.applyFix(fixes[0], fileContent);
|
|
1233
|
-
```
|
|
1234
|
-
|
|
1235
|
-
### PatchGenerator
|
|
1236
|
-
|
|
1237
|
-
```typescript
|
|
1238
|
-
import { createPatchGenerator } from '@nahisaho/musubix-security';
|
|
1239
|
-
|
|
1240
|
-
const generator = createPatchGenerator();
|
|
1241
|
-
|
|
1242
|
-
// パッチ生成
|
|
1243
|
-
const patch = generator.generatePatch(fix, originalContent, {
|
|
1244
|
-
format: 'unified', // unified | git | json | context
|
|
1245
|
-
contextLines: 3,
|
|
1246
|
-
});
|
|
1247
|
-
|
|
1248
|
-
// パッチの適用
|
|
1249
|
-
const applied = generator.applyPatch(patch, targetContent);
|
|
1250
|
-
```
|
|
1251
|
-
|
|
1252
|
-
### RemediationPlanner
|
|
1253
|
-
|
|
1254
|
-
複数の脆弱性に対する修復計画を策定:
|
|
1255
|
-
|
|
1256
|
-
```typescript
|
|
1257
|
-
import { createRemediationPlanner } from '@nahisaho/musubix-security';
|
|
1258
|
-
|
|
1259
|
-
const planner = createRemediationPlanner();
|
|
1260
|
-
|
|
1261
|
-
const plan = planner.createPlan(vulnerabilities, {
|
|
1262
|
-
strategy: 'risk-based', // severity-first | effort-first | risk-based
|
|
1263
|
-
maxParallelFixes: 3,
|
|
1264
|
-
});
|
|
1265
|
-
|
|
1266
|
-
console.log(plan.phases); // フェーズ分けされた修復順序
|
|
1267
|
-
console.log(plan.estimatedEffort); // 推定作業量
|
|
1268
|
-
console.log(plan.riskReduction); // リスク削減効果
|
|
1269
|
-
```
|
|
1270
|
-
|
|
1271
|
-
### SecureCodeTransformer
|
|
1272
|
-
|
|
1273
|
-
セキュアなコードパターンへの変換:
|
|
1274
|
-
|
|
1275
|
-
```typescript
|
|
1276
|
-
import { createSecureCodeTransformer } from '@nahisaho/musubix-security';
|
|
1277
|
-
|
|
1278
|
-
const transformer = createSecureCodeTransformer();
|
|
1279
|
-
|
|
1280
|
-
const result = transformer.transform(code, {
|
|
1281
|
-
categories: ['output-encoding', 'cryptography', 'error-handling'],
|
|
1282
|
-
});
|
|
1283
|
-
|
|
1284
|
-
console.log(result.transformed); // 変換後のコード
|
|
1285
|
-
console.log(result.changes); // 変更一覧
|
|
1286
|
-
```
|
|
1287
|
-
|
|
1288
|
-
## セキュリティインテリジェンス(Phase 6)
|
|
1289
|
-
|
|
1290
|
-
脅威情報の統合とリスク分析機能を提供します。
|
|
1291
|
-
|
|
1292
|
-
### ThreatIntelligence
|
|
1293
|
-
|
|
1294
|
-
外部脅威フィードとの統合:
|
|
1295
|
-
|
|
1296
|
-
```typescript
|
|
1297
|
-
import { createThreatIntelligence } from '@nahisaho/musubix-security';
|
|
1298
|
-
|
|
1299
|
-
const intel = createThreatIntelligence();
|
|
1300
|
-
|
|
1301
|
-
// フィードの追加
|
|
1302
|
-
await intel.addFeed({
|
|
1303
|
-
id: 'custom-feed',
|
|
1304
|
-
name: 'Custom Threat Feed',
|
|
1305
|
-
url: 'https://threat-feed.example.com/iocs',
|
|
1306
|
-
type: 'stix',
|
|
1307
|
-
refreshInterval: 3600000,
|
|
1308
|
-
});
|
|
1309
|
-
|
|
1310
|
-
// コードに対するIOCマッチング
|
|
1311
|
-
const matches = intel.matchCode(sourceCode);
|
|
1312
|
-
```
|
|
1313
|
-
|
|
1314
|
-
### AttackPatternMatcher
|
|
1315
|
-
|
|
1316
|
-
MITRE ATT&CKフレームワークとの統合:
|
|
1317
|
-
|
|
1318
|
-
```typescript
|
|
1319
|
-
import { createAttackPatternMatcher } from '@nahisaho/musubix-security';
|
|
1320
|
-
|
|
1321
|
-
const matcher = createAttackPatternMatcher();
|
|
1322
|
-
|
|
1323
|
-
// コードに対するパターンマッチング
|
|
1324
|
-
const matches = matcher.matchCode(sourceCode);
|
|
1325
|
-
|
|
1326
|
-
// 特定のテクニックの取得
|
|
1327
|
-
const technique = matcher.getTechnique('T1059');
|
|
1328
|
-
|
|
1329
|
-
// タクティクス別のテクニック一覧
|
|
1330
|
-
const techniques = matcher.getTechniquesByTactic('execution');
|
|
1331
|
-
```
|
|
1332
|
-
|
|
1333
|
-
### RiskScorer
|
|
1334
|
-
|
|
1335
|
-
CVSS計算とビジネスインパクト評価:
|
|
1336
|
-
|
|
1337
|
-
```typescript
|
|
1338
|
-
import { createRiskScorer } from '@nahisaho/musubix-security';
|
|
1339
|
-
|
|
1340
|
-
const scorer = createRiskScorer();
|
|
1341
|
-
|
|
1342
|
-
// CVSS計算
|
|
1343
|
-
const cvss = scorer.calculateCVSS(vulnerability);
|
|
1344
|
-
console.log(cvss.baseScore); // 基本スコア
|
|
1345
|
-
console.log(cvss.severity); // 重要度ラベル
|
|
1346
|
-
|
|
1347
|
-
// ビジネスインパクト評価
|
|
1348
|
-
const impact = scorer.assessBusinessImpact(vulnerability, {
|
|
1349
|
-
assetCriticality: 'high',
|
|
1350
|
-
dataClassification: 'confidential',
|
|
1351
|
-
serviceAvailability: 'critical',
|
|
1352
|
-
});
|
|
1353
|
-
```
|
|
1354
|
-
|
|
1355
|
-
### SecurityAnalytics
|
|
1356
|
-
|
|
1357
|
-
セキュリティメトリクスとダッシュボード:
|
|
1358
|
-
|
|
1359
|
-
```typescript
|
|
1360
|
-
import { createSecurityAnalytics } from '@nahisaho/musubix-security';
|
|
1361
|
-
|
|
1362
|
-
const analytics = createSecurityAnalytics();
|
|
1363
|
-
|
|
1364
|
-
// イベントの記録
|
|
1365
|
-
analytics.recordVulnerability(vulnerability);
|
|
1366
|
-
analytics.recordFix(fix);
|
|
1367
|
-
analytics.recordScan(scanResult);
|
|
1368
|
-
|
|
1369
|
-
// メトリクス計算
|
|
1370
|
-
const mttr = analytics.calculateMetric('mean-time-to-remediation');
|
|
1371
|
-
|
|
1372
|
-
// ダッシュボード生成
|
|
1373
|
-
const dashboard = analytics.generateDashboard();
|
|
1374
|
-
console.log(dashboard.summary); // サマリー
|
|
1375
|
-
console.log(dashboard.kpis); // KPI一覧
|
|
1376
|
-
```
|
|
1377
|
-
|
|
1378
|
-
### PredictiveAnalyzer
|
|
1379
|
-
|
|
1380
|
-
セキュリティトレンドの予測と異常検出:
|
|
1381
|
-
|
|
1382
|
-
```typescript
|
|
1383
|
-
import { createPredictiveAnalyzer } from '@nahisaho/musubix-security';
|
|
1384
|
-
|
|
1385
|
-
const analyzer = createPredictiveAnalyzer();
|
|
1386
|
-
|
|
1387
|
-
// データポイントの追加
|
|
1388
|
-
analyzer.addDataPoints([
|
|
1389
|
-
{ timestamp: new Date('2026-01-01'), value: 10, metric: 'vulnerabilities' },
|
|
1390
|
-
{ timestamp: new Date('2026-01-02'), value: 12, metric: 'vulnerabilities' },
|
|
1391
|
-
]);
|
|
1392
|
-
|
|
1393
|
-
// リスク予測(30日先)
|
|
1394
|
-
const projection = analyzer.projectRisk(30);
|
|
1395
|
-
console.log(projection.projectedRisk); // 予測リスク値
|
|
1396
|
-
console.log(projection.confidence); // 信頼度
|
|
1397
|
-
console.log(projection.trend); // トレンド方向
|
|
1398
|
-
|
|
1399
|
-
// 異常検出
|
|
1400
|
-
const anomalies = analyzer.detectAnomalies();
|
|
1401
|
-
```
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
# 形式検証
|
|
1405
|
-
|
|
1406
|
-
`@nahisaho/musubix-formal-verify`パッケージは、Z3 SMTソルバを使用した形式検証機能を提供します。
|
|
1407
|
-
|
|
1408
|
-
## Z3統合
|
|
1409
|
-
|
|
1410
|
-
```typescript
|
|
1411
|
-
import { Z3Adapter } from '@nahisaho/musubix-formal-verify';
|
|
1412
|
-
|
|
1413
|
-
const z3 = new Z3Adapter();
|
|
1414
|
-
await z3.initialize();
|
|
1415
|
-
|
|
1416
|
-
const result = await z3.verify(`
|
|
1417
|
-
(declare-const x Int)
|
|
1418
|
-
(declare-const y Int)
|
|
1419
|
-
(assert (> x 0))
|
|
1420
|
-
(assert (> y 0))
|
|
1421
|
-
(assert (= (+ x y) 10))
|
|
1422
|
-
(check-sat)
|
|
1423
|
-
`);
|
|
1424
|
-
|
|
1425
|
-
console.log(result.status); // 'sat' | 'unsat' | 'unknown'
|
|
1426
|
-
```
|
|
1427
|
-
|
|
1428
|
-
## 事前条件検証
|
|
1429
|
-
|
|
1430
|
-
```typescript
|
|
1431
|
-
import { PreconditionVerifier } from '@nahisaho/musubix-formal-verify';
|
|
1432
|
-
|
|
1433
|
-
const verifier = new PreconditionVerifier();
|
|
1434
|
-
|
|
1435
|
-
const result = await verifier.verify({
|
|
1436
|
-
condition: {
|
|
1437
|
-
expression: 'amount > 0 && amount <= balance',
|
|
1438
|
-
format: 'javascript',
|
|
1439
|
-
},
|
|
1440
|
-
variables: [
|
|
1441
|
-
{ name: 'amount', type: 'Int' },
|
|
1442
|
-
{ name: 'balance', type: 'Int' },
|
|
1443
|
-
],
|
|
1444
|
-
});
|
|
1445
|
-
|
|
1446
|
-
console.log(result.status); // 'valid' | 'invalid' | 'unknown'
|
|
1447
|
-
```
|
|
1448
|
-
|
|
1449
|
-
## 事後条件検証(Hoareトリプル)
|
|
1450
|
-
|
|
1451
|
-
```typescript
|
|
1452
|
-
import { PostconditionVerifier } from '@nahisaho/musubix-formal-verify';
|
|
1453
|
-
|
|
1454
|
-
const verifier = new PostconditionVerifier();
|
|
1455
|
-
|
|
1456
|
-
const result = await verifier.verify({
|
|
1457
|
-
precondition: {
|
|
1458
|
-
expression: 'balance >= amount && amount > 0',
|
|
1459
|
-
format: 'javascript',
|
|
1460
|
-
},
|
|
1461
|
-
postcondition: {
|
|
1462
|
-
expression: 'balance_new == balance - amount',
|
|
1463
|
-
format: 'javascript',
|
|
1464
|
-
},
|
|
1465
|
-
preVariables: [
|
|
1466
|
-
{ name: 'balance', type: 'Int' },
|
|
1467
|
-
{ name: 'amount', type: 'Int' },
|
|
1468
|
-
],
|
|
1469
|
-
postVariables: [
|
|
1470
|
-
{ name: 'balance_new', type: 'Int' },
|
|
1471
|
-
],
|
|
1472
|
-
transition: 'balance_new := balance - amount',
|
|
1473
|
-
});
|
|
1474
|
-
```
|
|
1475
|
-
|
|
1476
|
-
## EARS→SMT変換
|
|
1477
|
-
|
|
1478
|
-
EARS形式の要件をSMT-LIB2形式に変換:
|
|
1479
|
-
|
|
1480
|
-
```typescript
|
|
1481
|
-
import { EarsToSmtConverter } from '@nahisaho/musubix-formal-verify';
|
|
1482
|
-
|
|
1483
|
-
const converter = new EarsToSmtConverter();
|
|
1484
|
-
|
|
1485
|
-
const result = converter.convert(
|
|
1486
|
-
'WHEN a user submits login form, THE system SHALL validate credentials within 2 seconds.'
|
|
1487
|
-
);
|
|
1488
|
-
|
|
1489
|
-
console.log(result.pattern); // 'event-driven'
|
|
1490
|
-
console.log(result.smtLib2); // SMT-LIB2 コード
|
|
1491
|
-
```
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
# 知識グラフ(YATA)
|
|
1495
|
-
|
|
1496
|
-
**YATA (Yet Another Triple Architecture)** は、MUSUBIXの知識グラフシステムです。
|
|
1497
|
-
|
|
1498
|
-
## アーキテクチャ
|
|
1499
|
-
|
|
1500
|
-
```mermaid
|
|
1501
|
-
flowchart TB
|
|
1502
|
-
subgraph Agent["🤖 AI Agent"]
|
|
1503
|
-
AIAgent["AI Agent<br/>(Claude, Copilot, etc.)"]
|
|
1504
|
-
end
|
|
1505
|
-
|
|
1506
|
-
subgraph Client["🔗 YATA Client"]
|
|
1507
|
-
YATAClient["YATA Client<br/>統一API・キャッシュ・同期"]
|
|
1508
|
-
end
|
|
1509
|
-
|
|
1510
|
-
subgraph Storage["💾 Knowledge Graph Storage"]
|
|
1511
|
-
direction LR
|
|
1512
|
-
YATALocal["📁 YATA Local<br/>SQLite<br/>ローカルKG"]
|
|
1513
|
-
YATAGlobal["🌐 YATA Global<br/>分散型<br/>グローバルKG"]
|
|
1514
|
-
end
|
|
1515
|
-
|
|
1516
|
-
AIAgent --> YATAClient
|
|
1517
|
-
YATAClient --> YATALocal
|
|
1518
|
-
YATAClient --> YATAGlobal
|
|
1519
|
-
YATALocal <-->|"同期"| YATAGlobal
|
|
1520
|
-
|
|
1521
|
-
style Agent fill:#e3f2fd,stroke:#1565c0
|
|
1522
|
-
style Client fill:#f3e5f5,stroke:#7b1fa2
|
|
1523
|
-
style Storage fill:#e8f5e9,stroke:#2e7d32
|
|
1524
|
-
```
|
|
1525
|
-
|
|
1526
|
-
## YATA Local vs YATA Global
|
|
1527
|
-
|
|
1528
|
-
| 項目 | YATA Local | YATA Global |
|
|
1529
|
-
|:-----|:-----------|:------------|
|
|
1530
|
-
| **用途** | プロジェクト固有の知識管理 | チーム・組織横断の知識共有 |
|
|
1531
|
-
| **ストレージ** | SQLite(ローカルファイル) | 分散型(P2Pネットワーク) |
|
|
1532
|
-
| **同期** | オフラインでも動作 | リアルタイム同期 |
|
|
1533
|
-
| **プライバシー** | 完全にローカル | プライバシーフィルタリング |
|
|
1534
|
-
| **スケール** | 単一プロジェクト | 複数プロジェクト・チーム |
|
|
1535
|
-
|
|
1536
|
-
:::note info
|
|
1537
|
-
💡 **どちらを使うべき?**
|
|
1538
|
-
- **個人開発・プライベートプロジェクト**: YATA Local のみで十分
|
|
1539
|
-
- **チーム開発**: YATA Local + YATA Global で知識を共有
|
|
1540
|
-
- **オープンソースプロジェクト**: YATA Global で学習パターンをコミュニティと共有
|
|
1541
|
-
:::
|
|
1542
|
-
|
|
1543
|
-
## YATA Local 詳細
|
|
1544
|
-
|
|
1545
|
-
**YATA Local**は、SQLiteベースの軽量な知識グラフです。プロジェクトごとに独立した知識を管理します。
|
|
1546
|
-
|
|
1547
|
-
### セットアップ
|
|
1548
|
-
|
|
1549
|
-
```bash
|
|
1550
|
-
# プロジェクト初期化時に自動作成
|
|
1551
|
-
npx musubix init
|
|
1552
|
-
|
|
1553
|
-
# または手動で作成
|
|
1554
|
-
npx musubix yata init --local
|
|
1555
|
-
```
|
|
1556
|
-
|
|
1557
|
-
初期化すると、以下のファイルが作成されます。
|
|
1558
|
-
```
|
|
1559
|
-
storage/
|
|
1560
|
-
└── knowledge/
|
|
1561
|
-
└── local.db # SQLiteデータベース
|
|
1562
|
-
```
|
|
1563
|
-
|
|
1564
|
-
### 基本操作
|
|
1565
|
-
|
|
1566
|
-
```typescript
|
|
1567
|
-
import { YataLocal } from '@nahisaho/yata-local';
|
|
1568
|
-
|
|
1569
|
-
// 初期化
|
|
1570
|
-
const yata = new YataLocal({
|
|
1571
|
-
dbPath: './storage/knowledge/local.db',
|
|
1572
|
-
});
|
|
1573
|
-
|
|
1574
|
-
// トリプル追加(主語-述語-目的語)
|
|
1575
|
-
await yata.addTriple({
|
|
1576
|
-
subject: 'req:REQ-AUTH-001', // 主語: 要件ID
|
|
1577
|
-
predicate: 'rdf:type', // 述語: 型
|
|
1578
|
-
object: 'sdd:Requirement', // 目的語: 要件クラス
|
|
1579
|
-
});
|
|
1580
|
-
|
|
1581
|
-
// 関連付け
|
|
1582
|
-
await yata.addTriple({
|
|
1583
|
-
subject: 'des:DES-AUTH-001', // 設計ID
|
|
1584
|
-
predicate: 'sdd:implements', // 実装する
|
|
1585
|
-
object: 'req:REQ-AUTH-001', // 要件ID
|
|
1586
|
-
});
|
|
1587
|
-
|
|
1588
|
-
// トリプル検索
|
|
1589
|
-
const results = await yata.query({
|
|
1590
|
-
subject: 'req:REQ-AUTH-001',
|
|
1591
|
-
});
|
|
1592
|
-
// => [{subject, predicate, object}, ...]
|
|
1593
|
-
|
|
1594
|
-
// SPARQLクエリ(高度な検索)
|
|
1595
|
-
const sparqlResults = await yata.sparql(`
|
|
1596
|
-
SELECT ?design ?requirement
|
|
1597
|
-
WHERE {
|
|
1598
|
-
?design sdd:implements ?requirement .
|
|
1599
|
-
?requirement rdf:type sdd:Requirement .
|
|
1600
|
-
}
|
|
1601
|
-
`);
|
|
1602
|
-
```
|
|
1603
|
-
|
|
1604
|
-
### CLIでの操作
|
|
1605
|
-
|
|
1606
|
-
```bash
|
|
1607
|
-
# トリプル追加
|
|
1608
|
-
npx musubix yata add --subject "req:REQ-001" --predicate "rdf:type" --object "sdd:Requirement"
|
|
1609
|
-
|
|
1610
|
-
# クエリ実行
|
|
1611
|
-
npx musubix yata query --subject "req:REQ-001"
|
|
1612
|
-
|
|
1613
|
-
# SPARQLクエリ
|
|
1614
|
-
npx musubix yata sparql "SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10"
|
|
1615
|
-
|
|
1616
|
-
# 統計表示
|
|
1617
|
-
npx musubix yata stats
|
|
1618
|
-
```
|
|
1619
|
-
|
|
1620
|
-
### AIエージェントからの利用
|
|
1621
|
-
|
|
1622
|
-
```
|
|
1623
|
-
💬 「REQ-AUTH-001 に関連する設計を知識グラフから検索してください」
|
|
1624
|
-
|
|
1625
|
-
🤖 AIエージェント:
|
|
1626
|
-
「[sdd_query_knowledge ツールを実行]
|
|
1627
|
-
|
|
1628
|
-
REQ-AUTH-001 に関連する設計を検索しました:
|
|
1629
|
-
|
|
1630
|
-
- DES-AUTH-001: 認証コンポーネント設計
|
|
1631
|
-
- DES-AUTH-002: トークン管理設計
|
|
1632
|
-
- DES-AUTH-003: セッション管理設計
|
|
1633
|
-
|
|
1634
|
-
これらの設計はすべて REQ-AUTH-001 を実装しています。」
|
|
1635
|
-
```
|
|
1636
|
-
|
|
1637
|
-
## YATA Global 詳細
|
|
1638
|
-
|
|
1639
|
-
**YATA Global**は、分散型の知識グラフです。チーム・組織・コミュニティ間で知識を共有できます。
|
|
1640
|
-
|
|
1641
|
-
### セットアップ
|
|
1642
|
-
|
|
1643
|
-
```bash
|
|
1644
|
-
# YATA Global ノードを初期化
|
|
1645
|
-
npx musubix yata init --global --node-id "my-team-node"
|
|
1646
|
-
|
|
1647
|
-
# ピアに接続
|
|
1648
|
-
npx musubix yata connect --peer "https://yata.example.com"
|
|
1649
|
-
```
|
|
1650
|
-
|
|
1651
|
-
設定ファイル(`musubix.config.json`):
|
|
1652
|
-
```json
|
|
1653
|
-
{
|
|
1654
|
-
"yata": {
|
|
1655
|
-
"global": {
|
|
1656
|
-
"enabled": true,
|
|
1657
|
-
"nodeId": "my-team-node",
|
|
1658
|
-
"peers": [
|
|
1659
|
-
"https://yata-peer-1.example.com",
|
|
1660
|
-
"https://yata-peer-2.example.com"
|
|
1661
|
-
],
|
|
1662
|
-
"privacy": {
|
|
1663
|
-
"filter": "strict",
|
|
1664
|
-
"excludePatterns": ["password", "secret", "key"]
|
|
1665
|
-
}
|
|
1666
|
-
}
|
|
1667
|
-
}
|
|
1668
|
-
}
|
|
1669
|
-
```
|
|
1670
|
-
|
|
1671
|
-
### 基本操作
|
|
1672
|
-
|
|
1673
|
-
```typescript
|
|
1674
|
-
import { YataGlobal } from '@nahisaho/yata-global';
|
|
1675
|
-
|
|
1676
|
-
// 初期化
|
|
1677
|
-
const yataGlobal = new YataGlobal({
|
|
1678
|
-
nodeId: 'my-team-node',
|
|
1679
|
-
peers: ['https://yata-peer-1.example.com'],
|
|
1680
|
-
privacy: {
|
|
1681
|
-
filter: 'strict',
|
|
1682
|
-
excludePatterns: ['password', 'secret', 'api_key'],
|
|
1683
|
-
},
|
|
1684
|
-
});
|
|
1685
|
-
|
|
1686
|
-
// ピアネットワークに接続
|
|
1687
|
-
await yataGlobal.connect();
|
|
1688
|
-
|
|
1689
|
-
// グローバル知識を検索
|
|
1690
|
-
const patterns = await yataGlobal.query({
|
|
1691
|
-
predicate: 'sdd:pattern',
|
|
1692
|
-
object: 'authentication',
|
|
1693
|
-
});
|
|
1694
|
-
|
|
1695
|
-
// ローカル知識をグローバルに共有(プライバシーフィルタ適用)
|
|
1696
|
-
await yataGlobal.publish({
|
|
1697
|
-
triples: localTriples,
|
|
1698
|
-
namespace: 'patterns',
|
|
1699
|
-
privacy: 'strict',
|
|
1700
|
-
});
|
|
1701
|
-
```
|
|
1702
|
-
|
|
1703
|
-
### KGPR(Knowledge Graph Pull Request)
|
|
1704
|
-
|
|
1705
|
-
GitのPull Requestのように、知識グラフへの変更をレビュー可能な形式で提案できます。
|
|
1706
|
-
|
|
1707
|
-
```bash
|
|
1708
|
-
# KGPR作成
|
|
1709
|
-
npx musubix kgpr create -t "認証パターンの追加"
|
|
1710
|
-
|
|
1711
|
-
# 差分プレビュー
|
|
1712
|
-
npx musubix kgpr diff
|
|
1713
|
-
|
|
1714
|
-
# KGPR一覧
|
|
1715
|
-
npx musubix kgpr list
|
|
1716
|
-
|
|
1717
|
-
# KGPR送信(レビュー依頼)
|
|
1718
|
-
npx musubix kgpr submit <kgpr-id>
|
|
1719
|
-
```
|
|
1720
|
-
|
|
1721
|
-
```typescript
|
|
1722
|
-
// プログラムから KGPR を作成
|
|
1723
|
-
const kgpr = await yataGlobal.createKGPR({
|
|
1724
|
-
title: 'Add authentication patterns',
|
|
1725
|
-
description: 'New patterns learned from Project-15',
|
|
1726
|
-
changes: [
|
|
1727
|
-
{ operation: 'add', triple: { subject: 'pattern:jwt-auth', ... } },
|
|
1728
|
-
{ operation: 'add', triple: { subject: 'pattern:oauth2', ... } },
|
|
1729
|
-
],
|
|
1730
|
-
});
|
|
1731
|
-
|
|
1732
|
-
// KGPR送信
|
|
1733
|
-
await yataGlobal.submitKGPR(kgpr.id);
|
|
1734
|
-
|
|
1735
|
-
// KGPRレビュー
|
|
1736
|
-
await yataGlobal.reviewKGPR(kgpr.id, {
|
|
1737
|
-
decision: 'approve', // 'approve' | 'changes_requested' | 'commented'
|
|
1738
|
-
comment: 'LGTM! Great patterns.',
|
|
1739
|
-
});
|
|
1740
|
-
```
|
|
1741
|
-
|
|
1742
|
-
### プライバシー設定
|
|
1743
|
-
|
|
1744
|
-
YATA Globalは、機密情報を自動的にフィルタリングします。
|
|
1745
|
-
|
|
1746
|
-
| プライバシーレベル | フィルタリング内容 |
|
|
1747
|
-
|:------------------|:-------------------|
|
|
1748
|
-
| `strict` | パスワード、シークレット、API キー、個人情報をすべて除外 |
|
|
1749
|
-
| `moderate` | シークレット、API キーのみ除外 |
|
|
1750
|
-
| `none` | フィルタリングなし(プライベートネットワーク用) |
|
|
1751
|
-
|
|
1752
|
-
```typescript
|
|
1753
|
-
// プライバシーフィルタの例
|
|
1754
|
-
const filtered = yataGlobal.applyPrivacyFilter(triples, {
|
|
1755
|
-
level: 'strict',
|
|
1756
|
-
customPatterns: [
|
|
1757
|
-
/password/i,
|
|
1758
|
-
/secret/i,
|
|
1759
|
-
/api[_-]?key/i,
|
|
1760
|
-
/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/, // メールアドレス
|
|
1761
|
-
],
|
|
1762
|
-
});
|
|
1763
|
-
```
|
|
1764
|
-
|
|
1765
|
-
## Local ↔ Global 同期
|
|
1766
|
-
|
|
1767
|
-
YATA LocalとYATA Globalは自動的に同期できます。
|
|
1768
|
-
|
|
1769
|
-
```typescript
|
|
1770
|
-
import { YataClient } from '@nahisaho/musubix-yata-client';
|
|
1771
|
-
|
|
1772
|
-
const client = new YataClient({
|
|
1773
|
-
local: { dbPath: './storage/knowledge/local.db' },
|
|
1774
|
-
global: { nodeId: 'my-node', peers: [...] },
|
|
1775
|
-
sync: {
|
|
1776
|
-
enabled: true,
|
|
1777
|
-
interval: 60000, // 60秒ごとに同期
|
|
1778
|
-
direction: 'bidirectional', // 双方向同期
|
|
1779
|
-
},
|
|
1780
|
-
});
|
|
1781
|
-
|
|
1782
|
-
// 手動同期
|
|
1783
|
-
await client.sync();
|
|
1784
|
-
|
|
1785
|
-
// 同期状態を確認
|
|
1786
|
-
const status = await client.getSyncStatus();
|
|
1787
|
-
// => { lastSync: Date, pending: 5, conflicts: 0 }
|
|
1788
|
-
```
|
|
1789
|
-
|
|
1790
|
-
## 推論エンジン
|
|
1791
|
-
|
|
1792
|
-
```typescript
|
|
1793
|
-
const yata = new YataLocal({
|
|
1794
|
-
inference: {
|
|
1795
|
-
enabled: true,
|
|
1796
|
-
rules: ['transitive', 'subclass', 'inverse'],
|
|
1797
|
-
},
|
|
1798
|
-
});
|
|
1799
|
-
|
|
1800
|
-
// 推移的閉包クエリ
|
|
1801
|
-
const ancestors = await yata.inferTransitive({
|
|
1802
|
-
subject: 'comp:UserService',
|
|
1803
|
-
predicate: 'sdd:dependsOn',
|
|
1804
|
-
});
|
|
1805
|
-
```
|
|
1806
|
-
|
|
1807
|
-
## KGPR(Knowledge Graph Pull Request)
|
|
1808
|
-
|
|
1809
|
-
知識グラフへの変更をレビュー可能な形式で提案:
|
|
1810
|
-
|
|
1811
|
-
```typescript
|
|
1812
|
-
import { YataGlobal } from '@nahisaho/yata-global';
|
|
1813
|
-
|
|
1814
|
-
const yataGlobal = new YataGlobal({
|
|
1815
|
-
nodeId: 'node-001',
|
|
1816
|
-
peers: ['https://yata-peer-1.example.com'],
|
|
1817
|
-
});
|
|
1818
|
-
|
|
1819
|
-
// KGPR作成
|
|
1820
|
-
const kgpr = await yataGlobal.createKGPR({
|
|
1821
|
-
title: 'Add authentication patterns',
|
|
1822
|
-
description: 'New patterns learned from Project-15',
|
|
1823
|
-
changes: [{ operation: 'add', triple: {...} }],
|
|
1824
|
-
});
|
|
1825
|
-
|
|
1826
|
-
// KGPR送信
|
|
1827
|
-
await yataGlobal.submitKGPR(kgpr.id);
|
|
1828
|
-
|
|
1829
|
-
// KGPRレビュー
|
|
1830
|
-
await yataGlobal.reviewKGPR(kgpr.id, {
|
|
1831
|
-
decision: 'approve',
|
|
1832
|
-
comment: 'LGTM',
|
|
1833
|
-
});
|
|
1834
|
-
```
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
# 学習システム
|
|
1838
|
-
|
|
1839
|
-
MUSUBIXは、Wake-Sleepサイクルに基づく自律学習機能を提供します。
|
|
1840
|
-
|
|
1841
|
-
## Wake-Sleepサイクル
|
|
1842
|
-
|
|
1843
|
-
```mermaid
|
|
1844
|
-
flowchart TB
|
|
1845
|
-
subgraph WakePhase["☀️ Wake Phase"]
|
|
1846
|
-
W1["👁️ コード観察"]
|
|
1847
|
-
W2["🔍 パターン抽出"]
|
|
1848
|
-
W3["📝 知識グラフ更新"]
|
|
1849
|
-
W1 --> W2 --> W3
|
|
1850
|
-
end
|
|
1851
|
-
|
|
1852
|
-
subgraph SleepPhase["🌙 Sleep Phase"]
|
|
1853
|
-
S1["🔄 パターン統合"]
|
|
1854
|
-
S2["📦 類似パターン圧縮"]
|
|
1855
|
-
S3["⚡ メモリ最適化"]
|
|
1856
|
-
S1 --> S2 --> S3
|
|
1857
|
-
end
|
|
1858
|
-
|
|
1859
|
-
subgraph Library["📚 Pattern Library"]
|
|
1860
|
-
PL["学習済みパターン<br/>信頼度スコア<br/>メタデータ"]
|
|
1861
|
-
end
|
|
1862
|
-
|
|
1863
|
-
W3 --> Library
|
|
1864
|
-
S3 --> Library
|
|
1865
|
-
Library -.->|"フィードバック"| WakePhase
|
|
1866
|
-
|
|
1867
|
-
style WakePhase fill:#fff8e1,stroke:#f57f17
|
|
1868
|
-
style SleepPhase fill:#e8eaf6,stroke:#3f51b5
|
|
1869
|
-
style Library fill:#e8f5e9,stroke:#2e7d32
|
|
1870
|
-
```
|
|
1871
|
-
|
|
1872
|
-
## パターン抽出
|
|
1873
|
-
|
|
1874
|
-
```typescript
|
|
1875
|
-
import { PatternExtractor } from '@nahisaho/musubix-pattern-mcp';
|
|
1876
|
-
|
|
1877
|
-
const extractor = new PatternExtractor();
|
|
1878
|
-
|
|
1879
|
-
const patterns = await extractor.extract(`
|
|
1880
|
-
class UserService {
|
|
1881
|
-
constructor(private readonly userRepo: UserRepository) {}
|
|
1882
|
-
|
|
1883
|
-
async findUser(id: string): Promise<User | null> {
|
|
1884
|
-
return this.userRepo.findById(id);
|
|
1885
|
-
}
|
|
1886
|
-
}
|
|
1887
|
-
`);
|
|
1888
|
-
```
|
|
1889
|
-
|
|
1890
|
-
## パターンライブラリ
|
|
1891
|
-
|
|
1892
|
-
```typescript
|
|
1893
|
-
import { PatternLibrary } from '@nahisaho/musubix-pattern-mcp';
|
|
1894
|
-
|
|
1895
|
-
const library = new PatternLibrary({
|
|
1896
|
-
storagePath: './patterns.db',
|
|
1897
|
-
});
|
|
1898
|
-
|
|
1899
|
-
// パターン保存
|
|
1900
|
-
await library.store(pattern);
|
|
1901
|
-
|
|
1902
|
-
// パターン検索
|
|
1903
|
-
const matches = await library.search({
|
|
1904
|
-
type: 'design-pattern',
|
|
1905
|
-
domain: 'authentication',
|
|
1906
|
-
minConfidence: 0.9,
|
|
1907
|
-
});
|
|
1908
|
-
|
|
1909
|
-
// パターン推奨
|
|
1910
|
-
const recommendations = await library.recommend({
|
|
1911
|
-
context: 'user-service-implementation',
|
|
1912
|
-
maxResults: 5,
|
|
1913
|
-
});
|
|
1914
|
-
```
|
|
1915
|
-
|
|
1916
|
-
## フィードバック記録
|
|
1917
|
-
|
|
1918
|
-
```bash
|
|
1919
|
-
# フィードバックを記録
|
|
1920
|
-
npx musubix learn feedback <pattern-id>
|
|
1921
|
-
|
|
1922
|
-
# 学習状態を確認
|
|
1923
|
-
npx musubix learn status
|
|
1924
|
-
```
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
# ベストプラクティス
|
|
1928
|
-
|
|
1929
|
-
## 9条憲法(Constitutional Articles)
|
|
1930
|
-
|
|
1931
|
-
MUSUBIXのすべての開発活動を統治する**不変のルール**です。AIエージェントもこれらのルールに従って動作します。
|
|
1932
|
-
|
|
1933
|
-
| 条項 | 名称 | 概要 | 詳細 |
|
|
1934
|
-
|:-----|:-----|:-----|:-----|
|
|
1935
|
-
| **I** | Specification First | 要件を先に定義 | 実装の前に必ず要件を定義。曖昧なまま開発しない |
|
|
1936
|
-
| **II** | Design Before Code | 設計を先に行う | コードを書く前に設計を完了。C4モデル必須 |
|
|
1937
|
-
| **III** | Single Source of Truth | 唯一の真実の源 | `steering/`がプロジェクトの権威ある情報源 |
|
|
1938
|
-
| **IV** | Traceability | 追跡可能性 | 要件→設計→コード→テストを100%追跡可能に |
|
|
1939
|
-
| **V** | Incremental Progress | 漸進的な進歩 | 小さく頻繁にデリバリー。大きな変更は分割 |
|
|
1940
|
-
| **VI** | Decision Documentation | 決定の文書化 | すべての決定はADR(Architecture Decision Record)で記録 |
|
|
1941
|
-
| **VII** | Quality Gates | 品質ゲート | フェーズ移行前に品質検証を必須化 |
|
|
1942
|
-
| **VIII** | User-Centric | ユーザー中心 | ユーザー価値を文書化。技術だけでなく価値を重視 |
|
|
1943
|
-
| **IX** | Continuous Learning | 継続的学習 | レトロスペクティブと改善を継続 |
|
|
1944
|
-
|
|
1945
|
-
:::note info
|
|
1946
|
-
💡 **憲法準拠チェック**
|
|
1947
|
-
|
|
1948
|
-
AIエージェントに「この設計が憲法に準拠しているか検証してください」と依頼すると、各条項への準拠状況を自動的にチェックします。
|
|
1949
|
-
|
|
1950
|
-
```
|
|
1951
|
-
💬 「この設計が憲法に準拠しているか検証してください」
|
|
1952
|
-
|
|
1953
|
-
🤖 AIエージェント:
|
|
1954
|
-
「[sdd_validate_constitution ツールを実行]
|
|
1955
|
-
|
|
1956
|
-
憲法準拠チェック結果:
|
|
1957
|
-
|
|
1958
|
-
✅ Article I (Specification First): 準拠 - 要件が定義済み
|
|
1959
|
-
✅ Article II (Design Before Code): 準拠 - C4設計が存在
|
|
1960
|
-
✅ Article III (Single Source of Truth): 準拠 - steering/参照済み
|
|
1961
|
-
⚠️ Article IV (Traceability): 警告 - 2件の要件がリンクなし
|
|
1962
|
-
...」
|
|
1963
|
-
```
|
|
1964
|
-
:::
|
|
1965
|
-
|
|
1966
|
-
## シンボリック推論モジュール
|
|
1967
|
-
|
|
1968
|
-
MUSUBIXのシンボリック推論は、3つのフェーズで構成されています。
|
|
1969
|
-
|
|
1970
|
-
### Phase 1: 基盤機能
|
|
1971
|
-
|
|
1972
|
-
| コンポーネント | 機能 |
|
|
1973
|
-
|:--------------|:-----|
|
|
1974
|
-
| **SemanticCodeFilterPipeline** | LLM出力の意味的検証 |
|
|
1975
|
-
| **HallucinationDetector** | 未定義シンボル・無効なインポートの検出 |
|
|
1976
|
-
| **ConstitutionRuleRegistry** | 9条憲法の強制 |
|
|
1977
|
-
| **ConfidenceEstimator** | AST複雑度、要件カバレッジのスコアリング |
|
|
1978
|
-
| **ConfidenceBasedRouter** | 信頼度に基づくルーティング決定 |
|
|
1979
|
-
|
|
1980
|
-
### Phase 2: 形式検証
|
|
1981
|
-
|
|
1982
|
-
| コンポーネント | 機能 |
|
|
1983
|
-
|:--------------|:-----|
|
|
1984
|
-
| **EarsToFormalSpecConverter** | EARS → SMT-LIB変換 |
|
|
1985
|
-
| **VerificationConditionGenerator** | 検証条件(VC)生成 |
|
|
1986
|
-
| **Z3Adapter** | Z3 SMTソルバ統合 |
|
|
1987
|
-
| **SecurityScanner** | OWASPパターン、シークレット検出 |
|
|
1988
|
-
|
|
1989
|
-
### Phase 3: 高度な機能
|
|
1990
|
-
|
|
1991
|
-
| コンポーネント | 機能 |
|
|
1992
|
-
|:--------------|:-----|
|
|
1993
|
-
| **CandidateRanker** | マルチクライテリア候補スコアリング |
|
|
1994
|
-
| **ResultBlender** | Neural/Symbolic結果統合(3戦略) |
|
|
1995
|
-
| **AuditLogger** | SHA-256ハッシュチェーン改ざん検出 |
|
|
1996
|
-
| **QualityGateValidator** | 自動品質ゲート検証 |
|
|
1997
|
-
|
|
1998
|
-
## OWL 2 RL推論エンジン
|
|
1999
|
-
|
|
2000
|
-
MUSUBIXは、OWL 2 RLプロファイルに準拠した推論エンジンを搭載しています。
|
|
2001
|
-
|
|
2002
|
-
### 組み込み推論ルール
|
|
2003
|
-
|
|
2004
|
-
| カテゴリ | ルール | 説明 |
|
|
2005
|
-
|:--------|:-------|:-----|
|
|
2006
|
-
| クラス公理 | cax-sco, cax-eqc | サブクラス、等価クラス推論 |
|
|
2007
|
-
| プロパティ | prp-dom, prp-rng | ドメイン、レンジ推論 |
|
|
2008
|
-
| プロパティ特性 | prp-symp, prp-trp, prp-inv | 対称、推移、逆関係 |
|
|
2009
|
-
| 等価性 | eq-ref, eq-sym, eq-trans | sameAs推論 |
|
|
2010
|
-
|
|
2011
|
-
```typescript
|
|
2012
|
-
import { OWL2RLReasoner } from '@nahisaho/musubix-ontology-mcp';
|
|
2013
|
-
|
|
2014
|
-
const reasoner = new OWL2RLReasoner();
|
|
2015
|
-
|
|
2016
|
-
// 推論実行
|
|
2017
|
-
const inferred = await reasoner.infer(triples, {
|
|
2018
|
-
rules: ['cax-sco', 'prp-trp', 'prp-inv'],
|
|
2019
|
-
maxIterations: 100,
|
|
2020
|
-
});
|
|
2021
|
-
|
|
2022
|
-
// 推論の説明を取得
|
|
2023
|
-
const explanation = await reasoner.explain(inferredTriple, {
|
|
2024
|
-
format: 'markdown',
|
|
2025
|
-
});
|
|
2026
|
-
```
|
|
2027
|
-
|
|
2028
|
-
## EARS要件形式
|
|
2029
|
-
|
|
2030
|
-
5つのEARSパターンで要件を形式化します。
|
|
2031
|
-
|
|
2032
|
-
| パターン | 構文 | 用途 |
|
|
2033
|
-
|:---------|:-----|:-----|
|
|
2034
|
-
| **Ubiquitous** | `THE [system] SHALL [requirement]` | 常時満たすべき要件 |
|
|
2035
|
-
| **Event-driven** | `WHEN [event], THE [system] SHALL [response]` | イベント発生時の要件 |
|
|
2036
|
-
| **State-driven** | `WHILE [state], THE [system] SHALL [response]` | 特定状態での要件 |
|
|
2037
|
-
| **Unwanted** | `THE [system] SHALL NOT [behavior]` | 禁止事項 |
|
|
2038
|
-
| **Optional** | `IF [condition], THEN THE [system] SHALL [response]` | 条件付き要件 |
|
|
2039
|
-
|
|
2040
|
-
**例:**
|
|
2041
|
-
|
|
2042
|
-
```markdown
|
|
2043
|
-
# Ubiquitous(常時)
|
|
2044
|
-
THE system SHALL encrypt all user data at rest.
|
|
2045
|
-
|
|
2046
|
-
# Event-driven(イベント駆動)
|
|
2047
|
-
WHEN a user submits a login form, THE system SHALL validate credentials within 2 seconds.
|
|
2048
|
-
|
|
2049
|
-
# State-driven(状態駆動)
|
|
2050
|
-
WHILE the system is in maintenance mode, THE system SHALL reject all API requests.
|
|
2051
|
-
|
|
2052
|
-
# Unwanted(禁止)
|
|
2053
|
-
THE system SHALL NOT store passwords in plain text.
|
|
2054
|
-
|
|
2055
|
-
# Optional(条件付き)
|
|
2056
|
-
IF the user has admin privileges, THEN THE system SHALL display the admin dashboard.
|
|
2057
|
-
```
|
|
2058
|
-
|
|
2059
|
-
## 学習済みベストプラクティス
|
|
2060
|
-
|
|
2061
|
-
MUSUBIXは過去のプロジェクトから学習したベストプラクティスを蓄積しています。CLIで表示できます。
|
|
2062
|
-
|
|
2063
|
-
```bash
|
|
2064
|
-
# 全ベストプラクティス表示
|
|
2065
|
-
npx musubix learn best-practices
|
|
2066
|
-
|
|
2067
|
-
# カテゴリ別フィルタ
|
|
2068
|
-
npx musubix learn best-practices --category code
|
|
2069
|
-
npx musubix learn best-practices --category design
|
|
2070
|
-
npx musubix learn best-practices --category test
|
|
2071
|
-
|
|
2072
|
-
# 高信頼度パターンのみ
|
|
2073
|
-
npx musubix learn best-practices --high-confidence
|
|
2074
|
-
```
|
|
2075
|
-
|
|
2076
|
-
## コードパターン
|
|
2077
|
-
|
|
2078
|
-
| ID | 名称 | 概要 | 信頼度 |
|
|
2079
|
-
|:---|:-----|:-----|:-------|
|
|
2080
|
-
| BP-CODE-001 | Entity Input DTO | エンティティ作成にInput DTOを使用 | 95% |
|
|
2081
|
-
| BP-CODE-002 | Date-based ID Format | PREFIX-YYYYMMDD-NNN形式でIDを生成 | 90% |
|
|
2082
|
-
| BP-CODE-003 | Value Objects | ドメイン概念にValue Objectを使用 | 90% |
|
|
2083
|
-
| BP-CODE-004 | Function-based Value Objects | interface+factory関数でVO実装 | 95% |
|
|
2084
|
-
| BP-CODE-005 | Result Type | 失敗可能な操作にResult<T, E>を使用 | 95% |
|
|
2085
|
-
|
|
2086
|
-
**Function-based Value Object例:**
|
|
2087
|
-
|
|
2088
|
-
```typescript
|
|
2089
|
-
// ✅ 推奨: Interface + Factory Function
|
|
2090
|
-
interface Price {
|
|
2091
|
-
readonly amount: number;
|
|
2092
|
-
readonly currency: 'JPY';
|
|
2093
|
-
}
|
|
2094
|
-
|
|
2095
|
-
function createPrice(amount: number): Result<Price, ValidationError> {
|
|
2096
|
-
if (amount < 100 || amount > 1_000_000) {
|
|
2097
|
-
return err(new ValidationError('Price must be between 100 and 1,000,000 JPY'));
|
|
2098
|
-
}
|
|
2099
|
-
return ok({ amount, currency: 'JPY' });
|
|
2100
|
-
}
|
|
2101
|
-
```
|
|
2102
|
-
|
|
2103
|
-
## 設計パターン
|
|
2104
|
-
|
|
2105
|
-
| ID | 名称 | 概要 | 信頼度 |
|
|
2106
|
-
|:---|:-----|:-----|:-------|
|
|
2107
|
-
| BP-DESIGN-001 | Status Transition Map | 有効なステータス遷移をMapで定義 | 95% |
|
|
2108
|
-
| BP-DESIGN-002 | Repository Async Pattern | 将来のDB移行に備えてasync化 | 85% |
|
|
2109
|
-
| BP-DESIGN-003 | Service Layer with DI | リポジトリをDIしたService層 | 90% |
|
|
2110
|
-
| BP-DESIGN-004 | Optimistic Locking | 同時編集検出のためのversion管理 | 90% |
|
|
2111
|
-
| BP-DESIGN-005 | AuditService | データ変更の監査ログ記録 | 85% |
|
|
2112
|
-
| BP-DESIGN-006 | Entity Counter Reset | テスト用のresetXxxCounter()関数を提供 | 95% |
|
|
2113
|
-
| BP-DESIGN-007 | Expiry Time Logic | 有効期限をexpiresAtフィールドで明示管理 | 90% |
|
|
2114
|
-
|
|
2115
|
-
**Status Transition Map例:**
|
|
2116
|
-
|
|
2117
|
-
```typescript
|
|
2118
|
-
const validStatusTransitions: Record<Status, Status[]> = {
|
|
2119
|
-
draft: ['active', 'cancelled'],
|
|
2120
|
-
active: ['completed', 'cancelled'],
|
|
2121
|
-
completed: [],
|
|
2122
|
-
cancelled: [],
|
|
2123
|
-
};
|
|
2124
|
-
```
|
|
2125
|
-
|
|
2126
|
-
## テストパターン
|
|
2127
|
-
|
|
2128
|
-
| ID | 名称 | 概要 | 信頼度 |
|
|
2129
|
-
|:---|:-----|:-----|:-------|
|
|
2130
|
-
| BP-TEST-001 | Test Counter Reset | beforeEachでIDカウンターをリセット | 95% |
|
|
2131
|
-
| BP-TEST-002 | Verify API Before Test | テスト前にAPIシグネチャを確認 | 80% |
|
|
2132
|
-
| BP-TEST-003 | Vitest ESM Configuration | Vitest + TypeScript ESM構成 | 85% |
|
|
2133
|
-
| BP-TEST-004 | Result Type Test Pattern | isOk()/isErr()で両方のケースをテスト | 95% |
|
|
2134
|
-
| BP-TEST-005 | Status Transition Testing | 有効・無効な遷移を網羅的にテスト | 90% |
|
|
2135
|
-
|
|
2136
|
-
**Result Type Test例:**
|
|
2137
|
-
|
|
2138
|
-
```typescript
|
|
2139
|
-
describe('createPrice', () => {
|
|
2140
|
-
it('should create valid price', () => {
|
|
2141
|
-
const result = createPrice(1000);
|
|
2142
|
-
expect(result.isOk()).toBe(true);
|
|
2143
|
-
if (result.isOk()) {
|
|
2144
|
-
expect(result.value.amount).toBe(1000);
|
|
2145
|
-
}
|
|
2146
|
-
});
|
|
2147
|
-
|
|
2148
|
-
it('should reject price below minimum', () => {
|
|
2149
|
-
const result = createPrice(50);
|
|
2150
|
-
expect(result.isErr()).toBe(true);
|
|
2151
|
-
if (result.isErr()) {
|
|
2152
|
-
expect(result.error.message).toContain('100');
|
|
2153
|
-
}
|
|
2154
|
-
});
|
|
2155
|
-
});
|
|
2156
|
-
```
|
|
2157
|
-
|
|
2158
|
-
## Neuro-Symbolic信頼度評価
|
|
2159
|
-
|
|
2160
|
-
| シンボリック結果 | ニューラル信頼度 | 最終決定 |
|
|
2161
|
-
|:-----------------|:-----------------|:---------|
|
|
2162
|
-
| `invalid` | - | ニューラル結果を**棄却** |
|
|
2163
|
-
| `valid` | ≥0.8 | ニューラル結果を**採用** |
|
|
2164
|
-
| `valid` | <0.8 | シンボリック結果を**優先** |
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
# トラブルシューティング
|
|
2168
|
-
|
|
2169
|
-
## よくある問題と解決策
|
|
2170
|
-
|
|
2171
|
-
### Node.jsバージョンエラー
|
|
2172
|
-
|
|
2173
|
-
```
|
|
2174
|
-
Error: MUSUBIX requires Node.js >= 20.0.0
|
|
2175
|
-
```
|
|
2176
|
-
|
|
2177
|
-
**解決策:**
|
|
2178
|
-
|
|
2179
|
-
```bash
|
|
2180
|
-
# Node.jsのバージョンを確認
|
|
2181
|
-
node --version
|
|
2182
|
-
|
|
2183
|
-
# nvmを使用している場合
|
|
2184
|
-
nvm install 20
|
|
2185
|
-
nvm use 20
|
|
2186
|
-
```
|
|
2187
|
-
|
|
2188
|
-
### MCPサーバー接続エラー
|
|
2189
|
-
|
|
2190
|
-
```
|
|
2191
|
-
Error: Failed to connect to MCP server
|
|
2192
|
-
```
|
|
2193
|
-
|
|
2194
|
-
**解決策:**
|
|
2195
|
-
|
|
2196
|
-
1. MCPサーバーが起動しているか確認
|
|
2197
|
-
2. 設定ファイルのパスが正しいか確認
|
|
2198
|
-
3. ファイアウォール設定を確認
|
|
2199
|
-
|
|
2200
|
-
```bash
|
|
2201
|
-
# MCPサーバーを手動起動
|
|
2202
|
-
npx @nahisaho/musubix-mcp-server --verbose
|
|
2203
|
-
```
|
|
2204
|
-
|
|
2205
|
-
### Z3初期化エラー
|
|
2206
|
-
|
|
2207
|
-
```
|
|
2208
|
-
Error: Z3 initialization failed
|
|
2209
|
-
```
|
|
2210
|
-
|
|
2211
|
-
**解決策:**
|
|
2212
|
-
|
|
2213
|
-
```bash
|
|
2214
|
-
# z3-solverパッケージを再インストール
|
|
2215
|
-
npm install z3-solver
|
|
2216
|
-
|
|
2217
|
-
# または、プロセス版にフォールバック
|
|
2218
|
-
export MUSUBIX_Z3_MODE=process
|
|
2219
|
-
```
|
|
2220
|
-
|
|
2221
|
-
### トレーサビリティ検証エラー
|
|
2222
|
-
|
|
2223
|
-
```
|
|
2224
|
-
Warning: Orphan requirement detected: REQ-XXX
|
|
2225
|
-
```
|
|
2226
|
-
|
|
2227
|
-
**解決策:**
|
|
2228
|
-
|
|
2229
|
-
```bash
|
|
2230
|
-
# トレーサビリティマトリクスを同期
|
|
2231
|
-
npx musubix trace sync
|
|
2232
|
-
|
|
2233
|
-
# または、手動でリンクを追加
|
|
2234
|
-
npx musubix trace link REQ-XXX DES-XXX
|
|
2235
|
-
```
|
|
2236
|
-
|
|
2237
|
-
## ログ出力
|
|
2238
|
-
|
|
2239
|
-
詳細なログを出力するには:
|
|
2240
|
-
|
|
2241
|
-
```bash
|
|
2242
|
-
# 詳細モード
|
|
2243
|
-
npx musubix --verbose <command>
|
|
2244
|
-
|
|
2245
|
-
# デバッグログを有効化
|
|
2246
|
-
DEBUG=musubix:* npx musubix <command>
|
|
2247
|
-
```
|
|
2248
|
-
|
|
2249
|
-
## サポート
|
|
2250
|
-
|
|
2251
|
-
- **GitHub Issues**: [https://github.com/nahisaho/musubix/issues](https://github.com/nahisaho/musubix/issues)
|
|
2252
|
-
- **ドキュメント**: [docs/](https://github.com/nahisaho/musubix/tree/main/docs)
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
# まとめ
|
|
2256
|
-
|
|
2257
|
-
## MUSUBIXが解決する課題
|
|
2258
|
-
|
|
2259
|
-
従来のAIコーディングツールには、以下の課題がありました。
|
|
2260
|
-
|
|
2261
|
-
| 課題 | 従来のツール | MUSUBIXの解決策 |
|
|
2262
|
-
|:-----|:-------------|:----------------|
|
|
2263
|
-
| 出力が不安定 | 同じ質問でも異なる回答 | シンボリック推論で検証・一貫性を担保 |
|
|
2264
|
-
| 検証が困難 | 人間によるレビューのみ | Z3 SMTソルバで数学的に証明 |
|
|
2265
|
-
| 要件が曖昧 | 自然言語のまま | EARS形式で形式化・テスト可能に |
|
|
2266
|
-
| 追跡できない | どの要件の実装か不明 | 知識グラフで100%トレーサビリティ |
|
|
2267
|
-
| 学習しない | フィードバックが活かされない | Wake-Sleepサイクルで継続的に学習 |
|
|
2268
|
-
|
|
2269
|
-
## MUSUBIXの主要機能
|
|
2270
|
-
|
|
2271
|
-
| 機能 | 説明 | 対象ユーザー |
|
|
2272
|
-
|:-----|:-----|:-------------|
|
|
2273
|
-
| 🧠 **Neuro-Symbolic統合** | LLMの創造性とシンボリック推論の精密性を融合 | すべてのユーザー |
|
|
2274
|
-
| 📝 **EARS形式要件** | 5パターンの形式的要件記述で曖昧さを排除 | すべてのユーザー |
|
|
2275
|
-
| 🛡️ **セキュリティ分析** | OWASP Top 10 / CWE Top 25の脆弱性を自動検出 | セキュリティ重視のプロジェクト |
|
|
2276
|
-
| ✅ **形式検証** | Z3 SMTソルバによる数学的な正確性の証明 | ミッションクリティカルなシステム |
|
|
2277
|
-
| 📚 **知識グラフ(YATA)** | ローカル/グローバルの知識管理と共有 | チーム開発・長期プロジェクト |
|
|
2278
|
-
| 💡 **Wake-Sleep学習** | フィードバックからパターンを学習・蓄積 | 継続的な改善を求めるチーム |
|
|
2279
|
-
| 🔗 **完全トレーサビリティ** | 要件→設計→コード→テストの追跡 | 規制産業・コンプライアンス対応 |
|
|
2280
|
-
|
|
2281
|
-
## 推奨ワークフロー
|
|
2282
|
-
|
|
2283
|
-
```mermaid
|
|
2284
|
-
flowchart LR
|
|
2285
|
-
subgraph Prep["📋 準備"]
|
|
2286
|
-
P1["steering/を読む"]
|
|
2287
|
-
end
|
|
2288
|
-
|
|
2289
|
-
subgraph Req["📝 要件"]
|
|
2290
|
-
R1["EARS形式で<br/>要件定義"]
|
|
2291
|
-
R2["要件レビュー"]
|
|
2292
|
-
end
|
|
2293
|
-
|
|
2294
|
-
subgraph Design["📐 設計"]
|
|
2295
|
-
D1["C4モデルで<br/>設計"]
|
|
2296
|
-
D2["設計レビュー"]
|
|
2297
|
-
D3["憲法準拠<br/>チェック"]
|
|
2298
|
-
end
|
|
2299
|
-
|
|
2300
|
-
subgraph Impl["💻 実装"]
|
|
2301
|
-
I1["テストを<br/>先に書く"]
|
|
2302
|
-
I2["最小限の<br/>コード実装"]
|
|
2303
|
-
I3["リファクタ<br/>リング"]
|
|
2304
|
-
end
|
|
2305
|
-
|
|
2306
|
-
subgraph Verify["✅ 検証"]
|
|
2307
|
-
V1["セキュリティ<br/>スキャン"]
|
|
2308
|
-
V2["形式検証"]
|
|
2309
|
-
V3["トレーサビリティ<br/>確認"]
|
|
2310
|
-
end
|
|
2311
|
-
|
|
2312
|
-
P1 --> R1 --> R2 --> D1 --> D2 --> D3 --> I1 --> I2 --> I3 --> V1 --> V2 --> V3
|
|
2313
|
-
|
|
2314
|
-
style Prep fill:#e3f2fd,stroke:#1565c0
|
|
2315
|
-
style Req fill:#fff3e0,stroke:#ef6c00
|
|
2316
|
-
style Design fill:#f3e5f5,stroke:#7b1fa2
|
|
2317
|
-
style Impl fill:#e8f5e9,stroke:#2e7d32
|
|
2318
|
-
style Verify fill:#ffebee,stroke:#c62828
|
|
2319
|
-
```
|
|
2320
|
-
|
|
2321
|
-
## 始め方(3ステップ)
|
|
2322
|
-
|
|
2323
|
-
:::note info
|
|
2324
|
-
🚀 **今すぐ始める**
|
|
2325
|
-
|
|
2326
|
-
**Step 1: インストール**
|
|
2327
|
-
```bash
|
|
2328
|
-
npm install -g musubix
|
|
2329
|
-
```
|
|
2330
|
-
|
|
2331
|
-
**Step 2: プロジェクト初期化**
|
|
2332
|
-
```bash
|
|
2333
|
-
npx musubix init
|
|
2334
|
-
```
|
|
2335
|
-
|
|
2336
|
-
**Step 3: AIエージェントで開発開始**
|
|
2337
|
-
```
|
|
2338
|
-
💬 「ユーザー認証システムの要件定義を開始してください」
|
|
2339
|
-
```
|
|
2340
|
-
|
|
2341
|
-
GitHub CopilotやClaude Codeなら、MCP設定不要で即座に利用できます!
|
|
2342
|
-
:::
|
|
2343
|
-
|
|
2344
|
-
## 次のステップ
|
|
2345
|
-
|
|
2346
|
-
| レベル | 学ぶべきこと | 参照セクション |
|
|
2347
|
-
|:-------|:-------------|:---------------|
|
|
2348
|
-
| 🌱 **初級** | CLIコマンド、基本的な要件定義 | [クイックスタート](#クイックスタート) |
|
|
2349
|
-
| 🌿 **中級** | MCPサーバー連携、セキュリティ分析 | [MCPサーバー連携](#mcpサーバー連携)、[セキュリティ分析](#セキュリティ分析v180新機能) |
|
|
2350
|
-
| 🌳 **上級** | 形式検証、知識グラフ、学習システム | [形式検証](#形式検証)、[知識グラフ](#知識グラフyata)、[学習システム](#学習システム) |
|
|
2351
|
-
|
|
2352
|
-
## コミュニティ
|
|
2353
|
-
|
|
2354
|
-
- **GitHub**: [nahisaho/musubix](https://github.com/nahisaho/musubix) - Issue・PRをお待ちしています!
|
|
2355
|
-
- **npm**: [@nahisaho/musubix-core](https://www.npmjs.com/package/@nahisaho/musubix-core)
|
|
2356
|
-
- **ドキュメント**: [docs/](https://github.com/nahisaho/musubix/tree/main/docs)
|
|
2357
|
-
|
|
2358
|
-
:::note warn
|
|
2359
|
-
🤝 **貢献をお待ちしています!**
|
|
2360
|
-
|
|
2361
|
-
MUSUBIXはオープンソースプロジェクトです。以下の形で貢献いただけます:
|
|
2362
|
-
- 🐛 バグ報告・機能リクエスト(GitHub Issues)
|
|
2363
|
-
- 📝 ドキュメントの改善
|
|
2364
|
-
- 💻 プルリクエスト
|
|
2365
|
-
- 🌟 GitHubスター(励みになります!)
|
|
2366
|
-
:::
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
**© 2026 MUSUBIX Project - Neuro-Symbolic AI for Better Software Development**
|
|
2370
|
-
|
|
2371
|
-
⭐ この記事が参考になったら、**LGTM**と**GitHubスター**をお願いします!
|