musubix 3.3.8 → 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.
Files changed (92) hide show
  1. package/README.md +50 -305
  2. package/bin/musubix.js +1 -9
  3. package/dist/index.d.ts +25 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +74 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +49 -55
  8. package/.github/AGENTS.md +0 -949
  9. package/.github/prompts/sdd-change-apply.prompt.md +0 -283
  10. package/.github/prompts/sdd-change-archive.prompt.md +0 -241
  11. package/.github/prompts/sdd-change-init.prompt.md +0 -269
  12. package/.github/prompts/sdd-design.prompt.md +0 -250
  13. package/.github/prompts/sdd-implement.prompt.md +0 -387
  14. package/.github/prompts/sdd-requirements.prompt.md +0 -193
  15. package/.github/prompts/sdd-review.prompt.md +0 -155
  16. package/.github/prompts/sdd-security.prompt.md +0 -228
  17. package/.github/prompts/sdd-steering.prompt.md +0 -269
  18. package/.github/prompts/sdd-tasks.prompt.md +0 -255
  19. package/.github/prompts/sdd-test.prompt.md +0 -230
  20. package/.github/prompts/sdd-validate.prompt.md +0 -304
  21. package/.github/skills/musubix-adr-generation/SKILL.md +0 -209
  22. package/.github/skills/musubix-best-practices/SKILL.md +0 -315
  23. package/.github/skills/musubix-c4-design/SKILL.md +0 -162
  24. package/.github/skills/musubix-code-generation/SKILL.md +0 -237
  25. package/.github/skills/musubix-domain-inference/SKILL.md +0 -196
  26. package/.github/skills/musubix-ears-validation/SKILL.md +0 -161
  27. package/.github/skills/musubix-sdd-workflow/SKILL.md +0 -217
  28. package/.github/skills/musubix-technical-writing/SKILL.md +0 -444
  29. package/.github/skills/musubix-test-generation/SKILL.md +0 -212
  30. package/.github/skills/musubix-traceability/SKILL.md +0 -141
  31. package/AGENTS.md +0 -1065
  32. package/LICENSE +0 -21
  33. package/README.ja.md +0 -296
  34. package/bin/musubix-mcp.js +0 -15
  35. package/docs/API-REFERENCE.md +0 -1425
  36. package/docs/GITHUB-ACTIONS-NPM-SETUP.md +0 -132
  37. package/docs/INSTALL-GUIDE.ja.md +0 -459
  38. package/docs/INSTALL-GUIDE.md +0 -459
  39. package/docs/MIGRATION-v3.0.md +0 -324
  40. package/docs/MUSUBI-enhancement_roadmap_20260105.md +0 -651
  41. package/docs/MUSUBIX-v3.0-User-Guide.md +0 -1357
  42. package/docs/MUSUBIXv2.2.0-Manual-outline.md +0 -136
  43. package/docs/MUSUBIXv2.2.0-Manual.md +0 -3123
  44. package/docs/MUSUBIXv2.3.5-Refactering.md +0 -1310
  45. package/docs/MUSUBIv1.6.1-enhancement_roadmap_20260105.md +0 -291
  46. package/docs/MUSUBIv2.2.0-USERGUIDE.md +0 -2079
  47. package/docs/ROADMAP-v1.5.md +0 -116
  48. package/docs/SwarmCoding.md +0 -1284
  49. package/docs/Test-prompt.md +0 -105
  50. package/docs/USER-GUIDE-v1.8.0.md +0 -2371
  51. package/docs/USER-GUIDE.ja.md +0 -2147
  52. package/docs/USER-GUIDE.md +0 -3022
  53. package/docs/YATA-GLOBAL-GUIDE.ja.md +0 -750
  54. package/docs/YATA-GLOBAL-GUIDE.md +0 -595
  55. package/docs/YATA-LOCAL-GUIDE.ja.md +0 -989
  56. package/docs/YATA-LOCAL-GUIDE.md +0 -730
  57. package/docs/adr/0001-real-time-pattern-learning-architecture-for-v1-5-0.md +0 -75
  58. package/docs/adr/0002-pattern-sharing-protocol-for-cross-team-collaborat.md +0 -79
  59. package/docs/adr/0003-owl-2-rl-implementation-strategy-for-advanced-infe.md +0 -90
  60. package/docs/enterprise-knowledge-management.md +0 -1737
  61. package/docs/evolution-from-musubi-to-musubix.md +0 -2170
  62. package/docs/getting-started-with-sdd.md +0 -1602
  63. package/docs/moodle-refactering-codegraph-musubix.md +0 -391
  64. package/docs/moodle-refactering-codegraph.md +0 -278
  65. package/docs/overview/MUSUBIX-CodeGraph.md +0 -322
  66. package/docs/overview/MUSUBIX-Core.md +0 -671
  67. package/docs/overview/MUSUBIX-Decisions.md +0 -494
  68. package/docs/overview/MUSUBIX-FormalVerify.md +0 -566
  69. package/docs/overview/MUSUBIX-Knowledge.md +0 -1231
  70. package/docs/overview/MUSUBIX-Learning.md +0 -837
  71. package/docs/overview/MUSUBIX-MCP-Server.md +0 -535
  72. package/docs/overview/MUSUBIX-Overview.md +0 -264
  73. package/docs/overview/MUSUBIX-Phase1-Complete.md +0 -271
  74. package/docs/overview/MUSUBIX-Phase2-Complete.md +0 -310
  75. package/docs/overview/MUSUBIX-Policy.md +0 -477
  76. package/docs/overview/MUSUBIX-Roadmap-v2.md +0 -399
  77. package/docs/overview/MUSUBIX-Security-Plan.md +0 -939
  78. package/docs/overview/MUSUBIX-Security-v2.1.md +0 -668
  79. package/docs/overview/MUSUBIX-Security.md +0 -891
  80. package/docs/overview/MUSUBIX-YATA.md +0 -666
  81. package/docs/overview/MUSUBIX-v2.2.0-Advanced-Learning.md +0 -513
  82. package/docs/overview/Neuro-SymbolicAI.md +0 -159
  83. package/docs/packages/knowledge.md +0 -594
  84. package/docs/qiita-linux-kernel-knowledge-graph.md +0 -596
  85. package/scripts/generate-quality-gate-report.ts +0 -106
  86. package/scripts/postinstall.js +0 -94
  87. package/steering/.musubi-version +0 -1
  88. package/steering/product.ja.md +0 -572
  89. package/steering/project.yml +0 -66
  90. package/steering/rules/constitution.md +0 -491
  91. package/steering/structure.ja.md +0 -503
  92. package/steering/tech.ja.md +0 -208
@@ -1,1737 +0,0 @@
1
- <!--
2
- tags: knowledge-management, enterprise, typescript, ai, git
3
- title: エンタープライズアプリケーション開発における @musubix/knowledge の重要性
4
- -->
5
-
6
- # エンタープライズアプリケーション開発における @musubix/knowledge の重要性
7
-
8
- > なぜ組織ルールに従ったアプリケーション開発が重要なのか
9
-
10
- ## 目次
11
-
12
- - [概要](#概要)
13
- - [Git-Native Knowledge System とは](#git-native-knowledge-system-とは)
14
- - [1. エンタープライズ開発における課題](#1-エンタープライズ開発における課題)
15
- - [2. 組織ルールに従った開発の重要性](#2-組織ルールに従った開発の重要性)
16
- - [3. @musubix/knowledge の機能詳細](#3-musubixknowledge-の機能詳細)
17
- - [4. 導入効果](#4-導入効果)
18
- - [5. 実装ガイド](#5-実装ガイド)
19
- - [6. 成功事例](#6-成功事例)
20
- - [7. まとめ](#7-まとめ)
21
-
22
- ## 概要
23
-
24
- エンタープライズアプリケーション開発において、組織の知識・ルール・ベストプラクティスを体系的に管理し、開発チーム全体で共有することは、プロジェクトの成功を左右する重要な要素です。
25
-
26
- `@musubix/knowledge` は、この課題を解決するために設計された **Git-Native Knowledge System** です。
27
-
28
- ### ✨ 最大の特徴: 自然言語で登録・管理
29
-
30
- :::note info
31
- `@musubix/knowledge` の革新的な点は、**コードを一切書かずに自然言語だけで知識を管理できる**ことです。
32
- :::
33
-
34
- ```
35
- 👤 「新しいコーディング規約として、非同期関数にはAsync接尾辞をつけるルールを登録して」
36
- 🤖 ✅ rule:CODE-STYLE-004 として登録しました
37
-
38
- 👤 「セキュリティ関連の知識を全部見せて」
39
- 🤖 📋 セキュリティ関連の知識 5件を表示します...
40
-
41
- 👤 「このパターンとあのガイドラインを関連付けて」
42
- 🤖 ✅ リレーションを追加しました
43
- ```
44
-
45
- GitHub Copilot、Claude Code等のAIエージェントと会話するだけで、知識の登録・検索・更新・削除がすべて完了します。
46
-
47
- :::note
48
- **なぜ可能なのか?**
49
- - **Git-Nativeだから**: 知識は`.knowledge/graph.json`という**ただのJSONファイル**
50
- - AIエージェントはワークスペース内のファイルを直接読み書きできる
51
- - MCP連携を設定すれば、より高度な操作(クエリ、トラバース等)も可能
52
-
53
- APIやJSON形式を覚える必要はありません。
54
- :::
55
-
56
- 本記事では、なぜ組織ルールに従った開発が重要なのか、そして `@musubix/knowledge` がどのようにその実現を支援するのかを解説します。
57
-
58
- ---
59
-
60
- ## Git-Native Knowledge System とは
61
-
62
- MUSUBIX v3.0.0 で採用された **Git-Native Knowledge System** は、従来のナレッジ管理システムとは根本的に異なるアプローチを取ります。
63
-
64
- ### 従来のナレッジ管理システムの問題点
65
-
66
- :::note warn
67
- **従来のアプローチ**
68
-
69
- アプリケーション → **Knowledge Database Server** (常時稼働が必要) → PostgreSQL / MongoDB / Neo4j など
70
- :::
71
-
72
- | 問題点 | 説明 |
73
- |--------|------|
74
- | ⚠️ サーバーの運用・保守コスト | DBサーバーの監視、アップデート、障害対応が必要 |
75
- | ⚠️ データベースのバックアップ・復旧 | 定期バックアップ、障害時のリストア手順が必要 |
76
- | ⚠️ チーム間での同期・コンフリクト解決が困難 | 同時編集時のロック、マージが複雑 |
77
- | ⚠️ 変更履歴の追跡が複雑 | 監査ログの実装、履歴テーブルの管理 |
78
- | ⚠️ オフライン環境で使用不可 | サーバー接続が必須 |
79
- | ⚠️ セットアップの複雑さ | Docker、環境変数、接続情報の管理 |
80
-
81
- ### Git-Native Knowledge System のアプローチ
82
-
83
- :::note info
84
- **Git-Native アプローチ**
85
-
86
- アプリケーション → `.knowledge/graph.json` (ただのJSONファイル) → Git リポジトリで管理
87
- :::
88
-
89
- | メリット | 説明 |
90
- |----------|------|
91
- | ✅ サーバー不要(ゼロインフラ) | DBサーバーの運用・保守が一切不要 |
92
- | ✅ Gitの全機能が使える | 履歴、diff、ブランチ、PRがそのまま利用可能 |
93
- | ✅ チーム間の同期は git pull/push で完了 | 開発者が慣れたワークフロー |
94
- | ✅ 変更履歴は git log で完全追跡 | 誰が、いつ、何を変えたか一目瞭然 |
95
- | ✅ オフラインでも完全動作 | ローカルファイルなのでネット不要 |
96
- | ✅ npm install だけでセットアップ完了 | 環境構築が数秒で終わる |
97
-
98
- ### なぜ「Git-Native」なのか
99
-
100
- 「Git-Native」とは、単に「Gitで管理できる」という意味ではありません。**Gitの思想・ワークフローを知識管理の中心に据えた設計**を意味します。
101
-
102
- | Git の概念 | 知識管理への応用 |
103
- |-----------|-----------------|
104
- | **commit** | 知識の変更を記録。誰が、いつ、何を変えたか追跡 |
105
- | **branch** | 新ルールを試験的に導入。問題があればマージしない |
106
- | **pull request** | 知識の追加・変更をチームでレビュー |
107
- | **merge** | レビュー済みの知識をmainブランチに統合 |
108
- | **diff** | 知識の変更内容を視覚的に確認 |
109
- | **blame** | 特定のルールを誰が追加したか特定 |
110
- | **revert** | 問題のあるルールを即座にロールバック |
111
- | **tag** | 知識ベースのバージョンをリリース管理 |
112
-
113
- ### 具体的なワークフロー例
114
-
115
- <details><summary>例1: 新しいコーディング規約の導入</summary>
116
-
117
- ```bash
118
- # 1. featureブランチを作成
119
- git checkout -b feature/add-async-naming-rule
120
-
121
- # 2. AIエージェントと会話して知識を追加
122
- 👤 「非同期関数にはAsync接尾辞をつけるルールを登録して」
123
- 🤖 ✅ rule:CODE-STYLE-004 として登録しました
124
-
125
- # 3. 変更を確認
126
- git diff .knowledge/graph.json
127
- # + {
128
- # + "id": "rule:CODE-STYLE-004",
129
- # + "type": "coding-standard",
130
- # + "name": "非同期関数の命名規則",
131
- # + ...
132
- # + }
133
-
134
- # 4. コミット
135
- git add .knowledge/graph.json
136
- git commit -m "knowledge: add async function naming rule (CODE-STYLE-004)"
137
-
138
- # 5. PRを作成してチームレビュー
139
- git push origin feature/add-async-naming-rule
140
- # → GitHub/GitLabでPR作成
141
-
142
- # 6. レビュー承認後、mainにマージ
143
- git checkout main
144
- git merge feature/add-async-naming-rule
145
- ```
146
-
147
- </details>
148
-
149
- <details><summary>例2: 問題のあるルールのロールバック</summary>
150
-
151
- ```bash
152
- # 特定のルールを追加したコミットを特定
153
- git log --oneline .knowledge/graph.json
154
- # a1b2c3d knowledge: add problematic rule (CODE-STYLE-XXX)
155
- # ...
156
-
157
- # そのコミットをリバート
158
- git revert a1b2c3d
159
-
160
- # または、特定のバージョンに戻す
161
- git checkout v2.0.0 -- .knowledge/graph.json
162
- ```
163
-
164
- </details>
165
-
166
- <details><summary>例3: チーム間での知識同期</summary>
167
-
168
- ```bash
169
- # チームAが新ルールを追加
170
- git pull origin main # 最新の知識を取得
171
- # → AIエージェントが自動的に新ルールを認識
172
-
173
- # チームBも同様に
174
- git pull origin main
175
- # → 全員が同じ知識ベースで作業
176
- ```
177
-
178
- </details>
179
-
180
- ### Git-Native の技術的メリット
181
-
182
- #### 1. ゼロインフラ・ゼロ依存
183
-
184
- ```typescript:setup.ts
185
- // セットアップはこれだけ
186
- // npm install musubix
187
- import { createKnowledgeStore } from 'musubix';
188
-
189
- const store = createKnowledgeStore('.knowledge');
190
- // データベース接続不要、環境変数不要、Docker不要
191
- ```
192
-
193
- #### 2. 完全なオフライン動作
194
-
195
- ```
196
- インターネット接続なし:
197
- - 従来のDB方式: ❌ サーバーに接続できない
198
- - Git-Native: ✅ ローカルのJSONファイルで完全動作
199
- ```
200
-
201
- #### 3. 差分の可読性
202
-
203
- ```json
204
- // git diff の結果が人間に読める
205
- - "confidence": 0.85,
206
- + "confidence": 0.95,
207
- ```
208
-
209
- #### 4. コンフリクト解決の容易さ
210
-
211
- ```json
212
- // JSONの構造が単純なので、コンフリクト解決が容易
213
- <<<<<<< HEAD
214
- "tags": ["security", "auth"]
215
- =======
216
- "tags": ["security", "authentication", "jwt"]
217
- >>>>>>> feature/update-tags
218
- ```
219
-
220
- #### 5. CI/CD統合
221
-
222
- ```yaml:.github/workflows/knowledge-validation.yml
223
- name: Knowledge Validation
224
- on:
225
- pull_request:
226
- paths:
227
- - '.knowledge/**'
228
-
229
- jobs:
230
- validate:
231
- runs-on: ubuntu-latest
232
- steps:
233
- - uses: actions/checkout@v4
234
- - run: npx musubix knowledge validate
235
- - run: npx musubix knowledge check-circular
236
- ```
237
-
238
- ### v3.0.0以前(YATAシステム)との比較
239
-
240
- MUSUBIX v2.x までは、YATA(Yet Another Turing Architecture)という分散データベースシステムを採用していました。
241
-
242
- | 観点 | YATA (v2.x) | Git-Native (v3.0.0) |
243
- |------|-------------|---------------------|
244
- | **アーキテクチャ** | 分散DB(Redis + PostgreSQL) | JSONファイル |
245
- | **セットアップ** | Docker Compose + 環境変数 | `npm install` のみ |
246
- | **サーバー** | 常時稼働が必要 | 不要 |
247
- | **同期** | 専用プロトコル | git pull/push |
248
- | **レビュー** | 専用UI(KGPR) | GitHub/GitLab PR |
249
- | **履歴追跡** | 専用ログテーブル | git log |
250
- | **バックアップ** | DB ダンプ | git clone |
251
- | **学習コスト** | YATA独自の概念 | Gitの知識で十分 |
252
- | **オフライン** | 限定的 | 完全対応 |
253
-
254
- **移行の理由:**
255
- 1. **シンプルさ**: 「知識管理にDBは不要」という気づき
256
- 2. **普及したツールの活用**: 全開発者がGitを知っている
257
- 3. **運用コスト削減**: インフラ管理の負担をゼロに
258
- 4. **透明性**: JSONなので中身が誰でも読める
259
-
260
- ### Git-Native が適さないケース
261
-
262
- :::note alert
263
- 正直に言うと、Git-Native Knowledge System が最適でないケースもあります。
264
- :::
265
-
266
- | ケース | 推奨される代替案 |
267
- |--------|------------------|
268
- | **超大規模(100万エンティティ以上)** | Neo4j, TigerGraph等のグラフDB |
269
- | **リアルタイム同期が必須** | Firebase, Supabase等のリアルタイムDB |
270
- | **複雑なグラフクエリ** | GraphDBとCypherクエリ |
271
- | **非開発者のみで運用** | Notion, Confluence等のSaaS |
272
-
273
- **ただし、ほとんどのエンタープライズ開発では**、組織の知識は数百〜数千エンティティ程度であり、Git-Native で十分対応可能です。
274
-
275
- ---
276
-
277
- ## 1. エンタープライズ開発における課題
278
-
279
- ### 1.1 知識の断片化問題
280
-
281
- 多くの企業では、開発に関する知識が以下のように断片化しています。
282
-
283
- ```
284
- 📁 現状の知識散在状況
285
- ├── Confluenceのどこかにあるコーディング規約
286
- ├── Slackの過去ログに埋もれた設計決定
287
- ├── 退職者の頭の中にしかないベストプラクティス
288
- ├── プロジェクトごとに異なるルール
289
- └── 「暗黙の了解」として共有されない知識
290
- ```
291
-
292
- **結果として発生する問題:**
293
- - 新人オンボーディングに時間がかかる
294
- - 同じ議論を何度も繰り返す
295
- - プロジェクト間で品質にばらつきが出る
296
- - 過去の失敗から学ばない
297
-
298
- ### 1.2 「車輪の再発明」の連鎖
299
-
300
- 組織知識が適切に管理されていないと、各プロジェクト・各チームが同じ問題を独自に解決しようとします。
301
-
302
- ```
303
- Project A: 独自のエラーハンドリング方式を開発 → 3週間
304
- Project B: また別のエラーハンドリング方式を開発 → 3週間
305
- Project C: さらに別の方式... → 3週間
306
-
307
- 本来: 組織のベストプラクティスを適用 → 3日
308
- ```
309
-
310
- :::note warn
311
- **年間コスト換算例:**
312
- 10プロジェクト × 10パターン × 2週間 = **200週間(約4人年)のロス**
313
- :::
314
-
315
- ### 1.3 AIエージェント時代の新たな課題
316
-
317
- GitHub Copilot、Claude、ChatGPT等のAIコーディングアシスタントの普及により、新たな課題が顕在化しています。
318
-
319
- | 課題 | 説明 |
320
- |------|------|
321
- | **一般的なベストプラクティスの適用** | AIは一般的な知識に基づいてコードを生成するが、組織固有のルールを知らない |
322
- | **一貫性の欠如** | 開発者ごとにAIへの指示が異なり、生成されるコードの品質がばらつく |
323
- | **コンテキストの欠落** | AIは過去の設計決定や組織のアーキテクチャ方針を参照できない |
324
-
325
- ---
326
-
327
- ## 2. 組織ルールに従った開発の重要性
328
-
329
- ### 2.1 品質の一貫性
330
-
331
- 組織全体で統一されたルールに従うことで、どのプロジェクト・どの開発者が担当しても、一定の品質水準が保証されます。
332
-
333
- ```typescript:example-bad-naming.ts
334
- // ❌ ルールなし: 開発者ごとにバラバラ
335
- // 開発者A
336
- function get_user_data(user_id) { ... } // snake_case
337
-
338
- // 開発者B
339
- function GetUserData(userId) { ... } // PascalCase
340
-
341
- // 開発者C
342
- function getUserData(user_id) { ... } // 混在
343
- ```
344
-
345
- ```typescript:example-good-naming.ts
346
- // ✅ 組織ルールあり: 統一された命名
347
- // rule:CODE-STYLE-001 に従う
348
- function getUserById(userId: string): User { ... } // camelCase統一
349
- ```
350
-
351
- ### 2.2 オンボーディングの効率化
352
-
353
- 新しいメンバーが参加した際、組織の知識ベースにアクセスできれば、学習曲線を大幅に短縮できます。
354
-
355
- ```
356
- 従来のオンボーディング:
357
- Week 1: 環境構築で悪戦苦闘
358
- Week 2: 「このルールどこに書いてある?」を繰り返す
359
- Week 3: 先輩の過去コードを読み漁る
360
- Week 4: やっと最初のPRを出せる
361
-
362
- 知識ベース活用時:
363
- Day 1: 環境構築(手順が明文化)
364
- Day 2-3: 知識ベースで組織ルールを学習
365
- Day 4: ベストプラクティスに従ってコーディング開始
366
- Day 5: 最初のPRを出せる
367
- ```
368
-
369
- ### 2.3 AIエージェントの精度向上
370
-
371
- `@musubix/knowledge` で管理された組織知識をAIエージェントに提供することで、組織固有のルールに従ったコード生成が可能になります。
372
-
373
- ``````
374
- 👤 ユーザー:
375
- ユーザー登録機能を実装して
376
-
377
- 🤖 AIエージェント(組織知識なし):
378
- // 一般的なパターンで実装
379
- function registerUser(name, email, password) {
380
- // ... 汎用的な実装
381
- }
382
-
383
- 🤖 AIエージェント(@musubix/knowledge連携):
384
- // 組織のルールを参照:
385
- // - rule:CODE-STYLE-001 → camelCase命名
386
- // - pattern:BP-CODE-001 → Input DTOを使用
387
- // - pattern:BP-CODE-005 → Result型でエラー処理
388
- // - guideline:SEC-001 → パスワードはbcryptでハッシュ化
389
-
390
- ```typescript:user-registration.ts
391
- interface RegisterUserInput {
392
- name: string;
393
- email: string;
394
- password: string;
395
- }
396
-
397
- async function registerUser(
398
- input: RegisterUserInput
399
- ): Promise<Result<User, RegistrationError>> {
400
- const hashedPassword = await bcrypt.hash(input.password, 10);
401
- // ... 組織ルールに準拠した実装
402
- }
403
- ``````
404
-
405
- ### 2.4 技術的負債の抑制
406
-
407
- 一貫したルールに従うことで、将来のメンテナンスコストを大幅に削減できます。
408
-
409
- | 観点 | ルールなし | ルールあり |
410
- |------|-----------|-----------|
411
- | コードレビュー時間 | 長い(スタイル議論が多い) | 短い(本質的な議論に集中) |
412
- | バグ修正 | 各プロジェクト固有の実装を理解する必要 | パターンが共通なので理解が早い |
413
- | リファクタリング | 影響範囲の予測が困難 | 標準パターンに基づき安全に実施 |
414
- | 人員異動 | 引き継ぎに時間がかかる | 知識ベースで自己学習可能 |
415
-
416
- ---
417
-
418
- ## 3. @musubix/knowledge の機能詳細
419
-
420
- ### 3.1 階層型ID体系
421
-
422
- 知識を種類ごとに整理し、検索・参照を容易にします。
423
-
424
- ```
425
- pattern:BP-CODE-001 # ベストプラクティス
426
- rule:CODE-STYLE-001 # 開発ルール
427
- guideline:SEC-001 # ガイドライン
428
- domain:EC-TERM-001 # ドメイン用語
429
- arch:ADR-001 # アーキテクチャ決定
430
- ```
431
-
432
- ### 3.2 リレーション管理
433
-
434
- 知識間の関連を明示的に管理し、関連知識を辿ることができます。
435
-
436
- ```
437
- guideline:SEC-004 (入力検証)
438
- ├── references → pattern:BP-CODE-005 (Result型)
439
- └── relatedTo → rule:ERROR-001 (エラーハンドリング)
440
-
441
- arch:ADR-003 (レイヤードアーキテクチャ)
442
- └── references → pattern:BP-DESIGN-001 (Status Transition Map)
443
- ```
444
-
445
- ### 3.4 AIエージェント統合
446
-
447
- `@musubix/knowledge` はGit-NativeなJSONファイル形式のため、AIエージェントが**MCP設定なしでも**直接アクセスできます。
448
-
449
- #### なぜMCPなしで動くのか
450
-
451
- | 方式 | 仕組み | 設定 |
452
- |------|--------|------|
453
- | **直接アクセス** | AIが`.knowledge/graph.json`をワークスペースファイルとして読み書き | 不要(デフォルト) |
454
- | **MCP連携** | MUSUBIXサーバー経由でクエリ・トラバース等の高度な操作 | MCPサーバー設定が必要 |
455
-
456
- **GitHub Copilot、Claude Code**:ワークスペース内のファイルを読み取る機能があるため、`.knowledge/graph.json`を直接参照できます。
457
-
458
- #### 直接アクセスの例
459
-
460
- ```
461
- 👤 ユーザー:
462
- 新しいAPIエンドポイントを作るんだけど、うちのルールを教えて
463
-
464
- 🤖 AIエージェント:
465
- API開発に関連する組織ルール:
466
-
467
- **必須ルール:**
468
- - rule:CODE-STYLE-001: TypeScript命名規則(camelCase)
469
- - rule:GIT-002: コミットメッセージはConventional Commits形式
470
- - rule:TEST-001: カバレッジ80%以上必須
471
-
472
- **セキュリティガイドライン:**
473
- - guideline:SEC-002: JWT認証必須
474
- - guideline:SEC-004: 入力検証はzodで実装
475
-
476
- **推奨パターン:**
477
- - pattern:BP-CODE-005: エラーはResult型で処理
478
- - pattern:BP-CODE-001: リクエストはInput DTOで受け取る
479
-
480
- これらに従って実装を進めましょうか?
481
- ```
482
-
483
- ### 3.5 🌟 自然言語による知識の登録・管理
484
-
485
- `@musubix/knowledge` の最大の特徴は、**コードを一切書かずに自然言語だけで知識を管理できる**ことです。GitHub Copilot、Claude Code等のAIエージェントと会話するだけで、すべての操作が完了します。
486
-
487
- :::note
488
- **なぜMCP設定なしで動くのか?**
489
-
490
- Git-Nativeアーキテクチャにより、知識は`.knowledge/graph.json`というJSONファイルに保存されます。AIエージェントはワークスペース内のファイルを直接読み書きできるため、特別な設定なしで知識管理が可能です。
491
- :::
492
-
493
- #### 自然言語でできる操作一覧
494
-
495
- | 操作 | 従来の方法 | @musubix/knowledge |
496
- |------|-----------|-------------------|
497
- | 知識の登録 | JSONを手書き or コード実行 | 「〜を登録して」と話すだけ |
498
- | 知識の検索 | クエリAPIを呼び出し | 「〜を見せて」と話すだけ |
499
- | 関連付け | コードでリレーション追加 | 「〜と〜を関連付けて」と話すだけ |
500
- | 知識の更新 | ファイル編集 or コード | 「〜を修正して」と話すだけ |
501
- | 削除 | コードで削除API呼び出し | 「〜を削除して」と話すだけ |
502
-
503
- <details><summary>🔹 例1: ベストプラクティスの登録</summary>
504
-
505
- ```
506
- 👤 ユーザー:
507
- 今日のプロジェクトで「Optimistic Locking」というパターンを使ったんだけど、
508
- これを組織の知識ベースに登録しておいて。
509
- 同時編集検出のためのversion管理パターンで、信頼度は90%。
510
- タグはconcurrency, design-pattern, databaseで。
511
-
512
- 🤖 AIエージェント:
513
- ベストプラクティスとして登録しました:
514
-
515
- ✅ **pattern:BP-DESIGN-002** - Optimistic Locking
516
- - カテゴリ: design
517
- - 説明: 同時編集検出のためのversion管理パターン
518
- - 信頼度: 90%
519
- - タグ: concurrency, design-pattern, database
520
- - 登録日時: 2026-01-12
521
-
522
- コード例も追加しますか?
523
-
524
- 👤 ユーザー:
525
- うん、追加して
526
-
527
- 🤖 AIエージェント:
528
- コード例を追加しました:
529
-
530
- ```typescript:optimistic-locking.ts
531
- interface Entity {
532
- id: string;
533
- version: number;
534
- // ...other fields
535
- }
536
-
537
- function update(entity: Entity, currentVersion: number): Result<Entity, ConcurrencyError> {
538
- if (entity.version !== currentVersion) {
539
- return err(new ConcurrencyError('Entity was modified by another user'));
540
- }
541
- return ok({ ...entity, version: entity.version + 1 });
542
- }
543
- ```
544
-
545
- 他にも登録したいパターンはありますか?
546
- ```
547
-
548
- </details>
549
-
550
- <details><summary>🔹 例2: コーディング規約の追加</summary>
551
-
552
- ```
553
- 👤 ユーザー:
554
- 新しいコーディング規約を追加したい。
555
- 「非同期関数の命名規則」として、非同期関数には必ずAsync接尾辞をつける。
556
- 例: getUserAsync, saveOrderAsync
557
- これは必須ルールで、ESLintで強制する。
558
-
559
- 🤖 AIエージェント:
560
- コーディング規約を登録しました:
561
-
562
- ✅ **rule:CODE-STYLE-004** - 非同期関数の命名規則
563
- - タイプ: coding-standard
564
- - 説明: 非同期関数には必ずAsync接尾辞をつける
565
- - 例:
566
- - ✅ getUserAsync()
567
- - ✅ saveOrderAsync()
568
- - ❌ getUser() (非同期なのに接尾辞なし)
569
- - 強制: ESLint
570
- - 優先度: mandatory
571
-
572
- 関連する既存ルール rule:CODE-STYLE-001 (TypeScript命名規則) と
573
- 関連付けしておきますか?
574
-
575
- 👤 ユーザー:
576
- お願い
577
-
578
- 🤖 AIエージェント:
579
- 関連付けを追加しました:
580
- - rule:CODE-STYLE-001 → rule:CODE-STYLE-004 (relatedTo)
581
-
582
- 命名規則が統一的に管理されるようになりました。
583
- ```
584
-
585
- </details>
586
-
587
- <details><summary>🔹 例3: ドメイン知識の蓄積</summary>
588
-
589
- ```
590
- 👤 ユーザー:
591
- ECサイトのドメイン用語「バックオーダー」を登録して。
592
- 在庫がない商品を先に注文受付し、入荷次第発送する仕組み。
593
- タグはe-commerce, inventory, order-management
594
-
595
- 🤖 AIエージェント:
596
- ドメイン用語を登録しました:
597
-
598
- ✅ **domain:EC-TERM-002** - バックオーダー
599
- - タイプ: domain-term
600
- - 説明: 在庫がない商品を先に注文受付し、入荷次第発送する仕組み
601
- - ドメイン: e-commerce
602
- - タグ: e-commerce, inventory, order-management
603
-
604
- 関連する用語 domain:EC-TERM-001 (SKU) や
605
- domain:EC-RULE-001 (在庫引当ルール) との関連付けを追加しますか?
606
-
607
- 👤 ユーザー:
608
- 在庫引当ルールと関連付けて
609
-
610
- 🤖 AIエージェント:
611
- 関連付けを追加しました:
612
- - domain:EC-TERM-002 → domain:EC-RULE-001 (relatedTo)
613
- 説明: バックオーダーは在庫引当ルールの例外処理として使用される
614
- ```
615
-
616
- </details>
617
-
618
- <details><summary>🔹 例4: 知識の検索と活用</summary>
619
-
620
- ```
621
- 👤 ユーザー:
622
- セキュリティ関連の知識を全部見せて
623
-
624
- 🤖 AIエージェント:
625
- セキュリティ関連の知識 (5件):
626
-
627
- **ガイドライン:**
628
- 1. guideline:SEC-001 - パスワードハッシュ化 (bcrypt, 10rounds以上)
629
- 2. guideline:SEC-002 - API認証 (JWT必須, 24時間有効)
630
- 3. guideline:SEC-003 - 機密情報管理 (環境変数 or Secret Manager)
631
- 4. guideline:SEC-004 - 入力検証 (zodでホワイトリスト検証)
632
-
633
- **関連ルール:**
634
- 5. rule:DEP-001 - 依存関係管理 (脆弱性チェック必須)
635
-
636
- 詳細を見たい項目はありますか?
637
-
638
- 👤 ユーザー:
639
- SEC-004の詳細と関連知識を教えて
640
-
641
- 🤖 AIエージェント:
642
- **guideline:SEC-004 - 入力検証ガイドライン**
643
-
644
- 📋 説明:
645
- すべての外部入力は検証・サニタイズを行う
646
-
647
- 🔒 優先度: critical
648
-
649
- 📝 詳細:
650
- - ライブラリ: zod
651
- - タイミング: APIの入口で即座に検証
652
- - 原則: ホワイトリスト方式
653
-
654
- ⚠️ 対策:
655
- - SQLインジェクション対策 (プリペアドステートメント)
656
- - XSS対策 (HTMLエスケープ)
657
- - パストラバーサル対策 (パス検証)
658
-
659
- 📦 コード例:
660
- ```typescript:input-validation.ts
661
- const UserInputSchema = z.object({
662
- name: z.string().min(1).max(100),
663
- email: z.string().email(),
664
- age: z.number().int().min(0).max(150),
665
- });
666
- ```
667
-
668
- 🔗 関連知識:
669
- - → rule:ERROR-001 (エラーハンドリング規約)
670
- - ← guideline:SEC-001 (パスワードハッシュ化) から参照
671
- ```
672
-
673
- </details>
674
-
675
- <details><summary>🔹 例5: アーキテクチャ決定の記録</summary>
676
-
677
- ```
678
- 👤 ユーザー:
679
- 今日の設計会議で「キャッシュ戦略としてRedisを採用」と決定した。
680
- ADRとして記録しておいて。
681
- コンテキストは「APIレスポンスが遅い、DBへの負荷が高い」
682
- 代替案は「Memcached」「アプリケーション内キャッシュ」だった
683
-
684
- 🤖 AIエージェント:
685
- アーキテクチャ決定を記録しました:
686
-
687
- ✅ **arch:ADR-004** - Redisキャッシュ戦略の採用
688
- - ステータス: accepted
689
- - 日付: 2026-01-12
690
-
691
- 📋 コンテキスト:
692
- APIレスポンスが遅い、DBへの負荷が高い
693
-
694
- ✅ 決定:
695
- キャッシュ戦略としてRedisを採用
696
-
697
- 🔄 検討した代替案:
698
- - Memcached
699
- - アプリケーション内キャッシュ
700
-
701
- 追加で「なぜRedisを選んだか」の理由と
702
- 「想定される影響」も記録しますか?
703
-
704
- 👤 ユーザー:
705
- 理由は永続化オプションがあること、データ構造が豊富なこと。
706
- 影響はプラスがレスポンス改善とDB負荷軽減、
707
- マイナスはインフラ複雑化と運用コスト増加。
708
-
709
- 🤖 AIエージェント:
710
- 詳細を追加しました:
711
-
712
- **選定理由:**
713
- - 永続化オプションがある(障害復旧が容易)
714
- - データ構造が豊富(List, Set, Hash等)
715
- - クラスタリングサポート
716
-
717
- **想定される影響:**
718
- ✅ ポジティブ:
719
- - APIレスポンス時間の改善
720
- - DB負荷の軽減
721
- - スケーラビリティ向上
722
-
723
- ⚠️ ネガティブ:
724
- - インフラ構成の複雑化
725
- - 運用コストの増加
726
- - キャッシュ整合性の管理が必要
727
-
728
- この決定をチームに共有するためのサマリーを作成しますか?
729
- ```
730
-
731
- </details>
732
-
733
- <details><summary>🔹 例6: 知識の削除と更新</summary>
734
-
735
- ```
736
- 👤 ユーザー:
737
- 古くなったパターン「BP-LEGACY-001」を削除して
738
-
739
- 🤖 AIエージェント:
740
- pattern:BP-LEGACY-001 を削除する前に確認です:
741
-
742
- ⚠️ このパターンは以下から参照されています:
743
- - guideline:COMPAT-001 → references
744
- - rule:MIGRATION-001 → relatedTo
745
-
746
- 削除すると上記の関連も解除されます。
747
- 本当に削除しますか?
748
-
749
- 👤 ユーザー:
750
- はい、削除して
751
-
752
- 🤖 AIエージェント:
753
- 削除しました:
754
- - ✅ pattern:BP-LEGACY-001 を削除
755
- - ✅ 関連リレーション 2件を解除
756
- - 💾 .knowledge/graph.json を更新
757
-
758
- 変更をGitにコミットしますか?
759
-
760
- 👤 ユーザー:
761
- コミットして
762
-
763
- 🤖 AIエージェント:
764
- コミットしました:
765
- - git add .knowledge/graph.json
766
- - git commit -m "knowledge: remove deprecated pattern BP-LEGACY-001"
767
-
768
- 必要に応じてプッシュしてください。
769
- ```
770
-
771
- </details>
772
-
773
- #### なぜ自然言語管理が重要なのか
774
-
775
- 1. **学習コストゼロ**: APIやJSON形式を覚える必要がない
776
- 2. **即座に開始**: 「〜を登録して」で今日から使える
777
- 3. **非エンジニアも参加可能**: PM、デザイナーもドメイン知識を登録できる
778
- 4. **会話の中で自然に蓄積**: 開発中の会話から知識が生まれる
779
- 5. **AIが整理を代行**: 適切なID、タグ、関連付けをAIが提案
780
-
781
- ### 3.6 📋 登録すべき内容 vs 登録すべきでない内容
782
-
783
- `@musubix/knowledge` を効果的に活用するためには、**何を登録すべきか**を明確に理解することが重要です。
784
-
785
- #### ✅ 登録すべき内容(組織共有知識)
786
-
787
- | カテゴリ | 具体例 | 理由 |
788
- |---------|--------|------|
789
- | **コーディング規約** | 命名規則、フォーマット、コメント規約 | 全プロジェクトで一貫したコード品質を維持 |
790
- | **設計パターン** | Repository、Service Layer、Result型 | 実績のあるパターンを組織全体で再利用 |
791
- | **ベストプラクティス** | エラーハンドリング、ログ出力、入力検証 | 過去の学びを蓄積し、車輪の再発明を防止 |
792
- | **セキュリティガイドライン** | 認証方式、暗号化、シークレット管理 | 全プロジェクトのセキュリティレベルを統一 |
793
- | **Git/ブランチ戦略** | ブランチ命名、コミットメッセージ形式 | チーム間の協働を円滑化 |
794
- | **テスト戦略** | カバレッジ基準、テストの書き方 | 品質基準を明確化 |
795
- | **アーキテクチャ決定(ADR)** | 技術選定の理由、代替案、影響 | 将来の意思決定の参考に |
796
- | **ドメイン用語集** | ビジネス用語の定義、略語の意味 | ユビキタス言語の確立 |
797
- | **レビューガイドライン** | レビュー観点、チェックリスト | レビュー品質の均一化 |
798
- | **オンボーディング知識** | 開発環境構築手順、ツール使用方法 | 新人の立ち上がりを加速 |
799
-
800
- #### ❌ 登録すべきでない内容(プロジェクト固有)
801
-
802
- | カテゴリ | 具体例 | 理由 |
803
- |---------|--------|------|
804
- | **プロジェクト固有の設定** | 環境変数、APIキー、エンドポイントURL | プロジェクトごとに異なる。`.env`や設定ファイルで管理 |
805
- | **一時的な決定** | 「今週は○○を優先」「一旦△△で進める」 | 期限付きの決定は知識ベースに残すと混乱の元 |
806
- | **個人の好み** | 「VSCodeの設定」「フォント設定」 | 組織標準ではなく個人の選択 |
807
- | **実装の詳細** | 「この関数の実装方法」「このクラスの内部構造」 | コード自体がドキュメント。変更頻度が高い |
808
- | **バグ報告・チケット** | 「Issue #123の内容」「バグの再現手順」 | Issue Tracker(GitHub Issues等)で管理 |
809
- | **会議メモ・議事録** | 「○月○日の会議で決まったこと」 | ドキュメント管理ツール(Confluence等)で管理 |
810
- | **進捗報告** | 「今週の進捗」「残タスク一覧」 | プロジェクト管理ツール(Jira等)で管理 |
811
- | **機密情報** | パスワード、認証情報、顧客データ | セキュリティリスク。Secret Manager等で管理 |
812
-
813
- #### 🔍 判断基準フローチャート
814
-
815
- ```
816
- 新しい知識を登録すべきか?
817
-
818
- Q1: この知識は複数のプロジェクトで使えるか?
819
- ├── Yes → Q2へ
820
- └── No → ❌ 登録しない(プロジェクト固有のドキュメントへ)
821
-
822
- Q2: この知識は6ヶ月後も有効か?
823
- ├── Yes → Q3へ
824
- └── No → ❌ 登録しない(一時的な決定)
825
-
826
- Q3: この知識を新人に伝えたいか?
827
- ├── Yes → Q4へ
828
- └── No → ❌ 登録しない(暗黙知として十分)
829
-
830
- Q4: この知識は機密情報を含まないか?
831
- ├── Yes → ✅ 登録する
832
- └── No → ❌ 登録しない(セキュリティリスク)
833
- ```
834
-
835
- #### 💡 具体例で理解する
836
-
837
- **シナリオ1: エラーハンドリング方式**
838
- ```
839
- 👤 「try-catchではなくResult型を使う方針を登録したい」
840
-
841
- 判断:
842
- - 複数プロジェクトで使える? → Yes(全TypeScriptプロジェクト)
843
- - 6ヶ月後も有効? → Yes(設計方針)
844
- - 新人に伝えたい? → Yes(最初に知ってほしい)
845
- - 機密情報なし? → Yes
846
-
847
- ✅ 登録すべき → pattern:BP-CODE-005 として登録
848
- ```
849
-
850
- **シナリオ2: 本番環境のDBホスト名**
851
- ```
852
- 👤 「本番DBのホスト名をナレッジに登録したい」
853
-
854
- 判断:
855
- - 複数プロジェクトで使える? → No(特定プロジェクト専用)
856
- - 機密情報なし? → No(インフラ情報は機密性あり)
857
-
858
- ❌ 登録すべきでない → 環境変数またはSecret Managerで管理
859
- ```
860
-
861
- **シナリオ3: 今週のスプリントゴール**
862
- ```
863
- 👤 「今週のスプリントゴールを登録して」
864
-
865
- 判断:
866
- - 6ヶ月後も有効? → No(来週には変わる)
867
-
868
- ❌ 登録すべきでない → Jira/Notionなどのプロジェクト管理ツールで管理
869
- ```
870
-
871
- **シナリオ4: 「在庫引当」の定義**
872
- ```
873
- 👤 「"在庫引当"というドメイン用語の定義を登録したい」
874
-
875
- 判断:
876
- - 複数プロジェクトで使える? → Yes(ECドメインの共通用語)
877
- - 6ヶ月後も有効? → Yes(ビジネス用語は変わりにくい)
878
- - 新人に伝えたい? → Yes(ドメイン理解に必須)
879
- - 機密情報なし? → Yes
880
-
881
- ✅ 登録すべき → domain:EC-TERM-001 として登録
882
- ```
883
-
884
- #### 📊 カテゴリ別の管理場所まとめ
885
-
886
- | 知識の種類 | 管理場所 | 理由 |
887
- |-----------|----------|------|
888
- | 組織のルール・標準 | `@musubix/knowledge` | 全プロジェクトで共有 |
889
- | プロジェクトの設計書 | `storage/design/` | プロジェクト固有 |
890
- | 要件・タスク | `storage/specs/` | プロジェクト固有 |
891
- | 環境設定 | `.env`, Secret Manager | セキュリティ |
892
- | バグ・課題 | GitHub Issues, Jira | 追跡が必要 |
893
- | 議事録・メモ | Confluence, Notion | 時系列管理 |
894
- | 個人設定 | 各自のdotfiles | 個人の好み |
895
-
896
- ---
897
-
898
- ## 4. 導入効果
899
-
900
- ### 4.1 定量的効果
901
-
902
- 実際の導入事例から得られた効果:
903
-
904
- | 指標 | 導入前 | 導入後 | 改善率 |
905
- |------|--------|--------|--------|
906
- | オンボーディング期間 | 4週間 | 1週間 | **75%短縮** |
907
- | コードレビュー時間 | 2時間/PR | 45分/PR | **63%短縮** |
908
- | 命名規則違反 | 15件/週 | 2件/週 | **87%削減** |
909
- | 重複実装の発生 | 月5件 | 月1件 | **80%削減** |
910
- | 新人の初PR提出 | 2週間後 | 3日後 | **79%短縮** |
911
-
912
- ### 4.2 定性的効果
913
-
914
- - **開発者体験の向上**: 「何に従えばいいかわからない」ストレスからの解放
915
- - **意思決定の迅速化**: 過去の決定を参照し、議論を短縮
916
- - **知識の継承**: 退職者の暗黙知が形式知として残る
917
- - **AIとの協働強化**: AIエージェントが組織ルールを理解して支援
918
-
919
- ---
920
-
921
- ## 5. 実装ガイド
922
-
923
- ### 5.1 段階的導入アプローチ
924
-
925
- ```text:implementation-phases.txt
926
- Phase 1: 基盤整備(1-2週間)
927
- ├── @musubix/knowledge のセットアップ
928
- ├── 既存のコーディング規約を知識ベースに登録
929
- └── 命名規則、フォーマット規約を最初に整備
930
-
931
- Phase 2: ルール拡充(2-4週間)
932
- ├── Git/ブランチ戦略の登録
933
- ├── テスト戦略の登録
934
- ├── コードレビューガイドラインの登録
935
- └── セキュリティガイドラインの登録
936
-
937
- Phase 3: ベストプラクティス(継続的)
938
- ├── プロジェクトから学んだパターンを随時登録
939
- ├── 失敗事例も「アンチパターン」として記録
940
- └── 定期的なレビューと更新
941
-
942
- Phase 4: AI統合(Phase 1-2完了後)
943
- ├── MCPサーバー設定
944
- ├── AIエージェントへの知識連携
945
- └── 生成コードの品質監視
946
- ```
947
-
948
- ### 5.2 知識の分類体系
949
-
950
- 推奨する知識タイプと命名規則:
951
-
952
- | タイプ | ID接頭辞 | 例 | 用途 |
953
- |--------|---------|-----|------|
954
- | `best-practice` | `pattern:BP-*` | `pattern:BP-CODE-001` | コードパターン |
955
- | `coding-standard` | `rule:CODE-STYLE-*` | `rule:CODE-STYLE-001` | コーディング規約 |
956
- | `git-workflow` | `rule:GIT-*` | `rule:GIT-001` | Git運用ルール |
957
- | `testing-policy` | `rule:TEST-*` | `rule:TEST-001` | テスト方針 |
958
- | `security-guideline` | `guideline:SEC-*` | `guideline:SEC-001` | セキュリティ |
959
- | `architecture-decision` | `arch:ADR-*` | `arch:ADR-001` | アーキテクチャ決定 |
960
- | `domain-term` | `domain:*-TERM-*` | `domain:EC-TERM-001` | ドメイン用語 |
961
- | `business-rule` | `domain:*-RULE-*` | `domain:EC-RULE-001` | ビジネスルール |
962
-
963
- ### 5.3 運用のベストプラクティス
964
-
965
- **知識の追加プロセス:**
966
-
967
- ```
968
- 1. 知識の候補を特定
969
- └── プロジェクトで繰り返し使われるパターンを発見
970
-
971
- 2. featureブランチで知識を追加
972
- └── git checkout -b knowledge/add-result-type-pattern
973
-
974
- 3. PRを作成してレビュー
975
- └── チームで内容を確認、改善点を議論
976
-
977
- 4. マージして全員に共有
978
- └── 次回から新しい知識が利用可能に
979
- ```
980
-
981
- **定期的なメンテナンス:**
982
-
983
- ```yaml:maintenance-schedule.yml
984
- # 月次レビュー
985
- maintenance:
986
- monthly:
987
- - 古くなった知識の更新/廃止
988
- - 新しいプロジェクトからの学びを追加
989
- - 知識の利用状況を分析
990
-
991
- # 四半期レビュー
992
- quarterly:
993
- - 知識体系全体の見直し
994
- - カテゴリの追加/統合
995
- - 関連性の再評価
996
- ```
997
-
998
- ### 5.4 🏢 実践ケーススタディ: テックスター株式会社のナレッジ構築
999
-
1000
- ここでは、仮想のアプリケーション開発会社「**テックスター株式会社**」を例に、`@musubix/knowledge` を使った自然言語でのナレッジ管理を詳細に解説します。
1001
-
1002
- #### 会社プロファイル
1003
-
1004
- | 項目 | 内容 |
1005
- |------|------|
1006
- | **社名** | テックスター株式会社 |
1007
- | **事業** | BtoB SaaS開発(顧客管理、請求管理、在庫管理システム) |
1008
- | **従業員** | エンジニア30名(5チーム構成) |
1009
- | **技術スタック** | TypeScript, React, Node.js, PostgreSQL |
1010
- | **課題** | チーム間でコーディング規約がバラバラ、新人育成に時間がかかる |
1011
-
1012
- ---
1013
-
1014
- #### 🚀 Day 1: 初期セットアップと基本ルールの登録
1015
-
1016
- **Step 1: プロジェクトへのmusubix導入**
1017
-
1018
- ```bash
1019
- # 1. musubixをインストール
1020
- npm install musubix
1021
-
1022
- # 2. 知識ベースディレクトリを初期化
1023
- mkdir -p .knowledge
1024
- echo '{"entities":[],"relations":[]}' > .knowledge/graph.json
1025
-
1026
- # 3. Gitで追跡開始
1027
- git add .knowledge/
1028
- git commit -m "chore: initialize knowledge base"
1029
- ```
1030
-
1031
- **Step 2: GitHub Copilotとの会話でナレッジ登録開始**
1032
-
1033
- :::note info
1034
- 以下は実際にGitHub CopilotやClaude Codeと会話してナレッジを登録する流れです。AIエージェントが `.knowledge/graph.json` を直接編集します。
1035
- :::
1036
-
1037
- <details><summary>📝 基本コーディング規約の登録</summary>
1038
-
1039
- ```
1040
- 👤 テックスターCTO:
1041
- うちの会社のTypeScriptコーディング規約を登録したい。
1042
- 以下のルールを知識ベースに追加して:
1043
-
1044
- 1. 変数・関数名はcamelCase
1045
- 2. クラス名・インターフェース名はPascalCase
1046
- 3. 定数はUPPER_SNAKE_CASE
1047
- 4. ファイル名はkebab-case
1048
- 5. インターフェース名に「I」接頭辞は使わない
1049
-
1050
- これは必須ルールで、全プロジェクトで適用する。
1051
-
1052
- 🤖 AIエージェント:
1053
- コーディング規約を登録しました:
1054
-
1055
- ✅ **rule:CODE-STYLE-001** - TypeScript命名規則
1056
- - タイプ: coding-standard
1057
- - 優先度: mandatory
1058
- - 適用範囲: 全プロジェクト
1059
-
1060
- **登録内容:**
1061
-
1062
- | 対象 | 規則 | 例 |
1063
- |------|------|-----|
1064
- | 変数・関数 | camelCase | `getUserById`, `orderCount` |
1065
- | クラス・インターフェース | PascalCase | `UserService`, `OrderRepository` |
1066
- | 定数 | UPPER_SNAKE_CASE | `MAX_RETRY_COUNT`, `API_BASE_URL` |
1067
- | ファイル名 | kebab-case | `user-service.ts`, `order-repository.ts` |
1068
-
1069
- **禁止事項:**
1070
- - ❌ インターフェース名に「I」接頭辞(`IUser` → `User`)
1071
-
1072
- `.knowledge/graph.json` を更新しました。
1073
- 次は何を登録しますか?
1074
- ```
1075
-
1076
- </details>
1077
-
1078
- <details><summary>📝 Git運用ルールの登録</summary>
1079
-
1080
- ```
1081
- 👤 テックスターCTO:
1082
- Gitの運用ルールも登録して。
1083
-
1084
- - ブランチ命名: feature/xxx, fix/xxx, hotfix/xxx
1085
- - コミットメッセージ: Conventional Commits形式(feat:, fix:, docs:, chore:)
1086
- - mainブランチへの直接プッシュ禁止
1087
- - PRは最低1人のレビュー必須
1088
- - マージ前にCIが全て通ること
1089
-
1090
- 🤖 AIエージェント:
1091
- Git運用ルールを登録しました:
1092
-
1093
- ✅ **rule:GIT-001** - ブランチ命名規則
1094
- ```
1095
- feature/機能名 # 新機能開発
1096
- fix/バグ名 # バグ修正
1097
- hotfix/緊急修正名 # 本番緊急対応
1098
- docs/ドキュメント名 # ドキュメント更新
1099
- refactor/対象名 # リファクタリング
1100
- ```
1101
-
1102
- ✅ **rule:GIT-002** - コミットメッセージ規則
1103
- ```
1104
- feat: 新機能追加
1105
- fix: バグ修正
1106
- docs: ドキュメント更新
1107
- chore: 雑務(依存関係更新等)
1108
- refactor: リファクタリング
1109
- test: テスト追加・修正
1110
- style: フォーマット修正(機能に影響なし)
1111
- ```
1112
-
1113
- ✅ **rule:GIT-003** - プルリクエスト規則
1114
- - mainへの直接プッシュ: ❌ 禁止
1115
- - レビュー必須人数: 1人以上
1116
- - CI通過: 必須
1117
-
1118
- 3つのルールを登録し、相互に関連付けしました。
1119
- ```
1120
-
1121
- </details>
1122
-
1123
- <details><summary>📝 テスト戦略の登録</summary>
1124
-
1125
- ```
1126
- 👤 テックスターCTO:
1127
- テストに関するルールも追加して。
1128
-
1129
- - カバレッジ80%以上必須
1130
- - ユニットテストはVitest使用
1131
- - E2EテストはPlaywright使用
1132
- - テストファイルは対象ファイルと同じディレクトリに配置
1133
- - テストファイル名は xxx.test.ts 形式
1134
-
1135
- 🤖 AIエージェント:
1136
- テスト戦略を登録しました:
1137
-
1138
- ✅ **rule:TEST-001** - テスト基準
1139
- - 必須カバレッジ: 80%以上
1140
- - ユニットテスト: Vitest
1141
- - E2Eテスト: Playwright
1142
-
1143
- ✅ **rule:TEST-002** - テストファイル配置規則
1144
- ```
1145
- src/
1146
- ├── services/
1147
- │ ├── user-service.ts
1148
- │ └── user-service.test.ts ← 同じディレクトリ
1149
- ├── repositories/
1150
- │ ├── order-repository.ts
1151
- │ └── order-repository.test.ts
1152
- ```
1153
-
1154
- **命名規則:** `{対象ファイル名}.test.ts`
1155
-
1156
- rule:CODE-STYLE-001 と関連付けました(ファイル命名規則の一部として)。
1157
- ```
1158
-
1159
- </details>
1160
-
1161
- ---
1162
-
1163
- #### 📅 Week 1: ベストプラクティスの蓄積
1164
-
1165
- プロジェクトで得た学びを随時ナレッジに追加していきます。
1166
-
1167
- <details><summary>📝 エラーハンドリングパターンの登録</summary>
1168
-
1169
- ```
1170
- 👤 シニアエンジニア田中:
1171
- 今日のコードレビューで、エラーハンドリングの方針を統一したいという話になった。
1172
- 以下のパターンを組織のベストプラクティスとして登録して:
1173
-
1174
- - try-catchではなくResult型を使う
1175
- - neverthrowライブラリを採用
1176
- - エラーは型で表現(any/unknown禁止)
1177
- - 非同期関数もResultAsync型で統一
1178
-
1179
- 信頼度は90%で、タグはerror-handling, typescript, best-practice
1180
-
1181
- 🤖 AIエージェント:
1182
- ベストプラクティスとして登録しました:
1183
-
1184
- ✅ **pattern:BP-CODE-001** - Result型エラーハンドリング
1185
- - カテゴリ: code-pattern
1186
- - 信頼度: 90%
1187
- - タグ: error-handling, typescript, best-practice
1188
-
1189
- **使用ライブラリ:** neverthrow
1190
-
1191
- **コード例:**
1192
- ```typescript:result-type-example.ts
1193
- import { Result, ok, err, ResultAsync } from 'neverthrow';
1194
-
1195
- // ❌ 非推奨: try-catch
1196
- async function getUserBad(id: string): Promise<User> {
1197
- try {
1198
- return await db.findUser(id);
1199
- } catch (e) {
1200
- throw new Error('User not found');
1201
- }
1202
- }
1203
-
1204
- // ✅ 推奨: Result型
1205
- async function getUser(id: string): ResultAsync<User, UserNotFoundError> {
1206
- const user = await db.findUser(id);
1207
- if (!user) {
1208
- return err(new UserNotFoundError(id));
1209
- }
1210
- return ok(user);
1211
- }
1212
-
1213
- // 使用例
1214
- const result = await getUser('123');
1215
- if (result.isOk()) {
1216
- console.log(result.value.name);
1217
- } else {
1218
- console.error(result.error.message);
1219
- }
1220
- ```
1221
-
1222
- rule:CODE-STYLE-001 と関連付けました。
1223
- ```
1224
-
1225
- </details>
1226
-
1227
- <details><summary>📝 リポジトリパターンの登録</summary>
1228
-
1229
- ```
1230
- 👤 シニアエンジニア田中:
1231
- データアクセス層の設計パターンも登録しておいて。
1232
- うちではRepositoryパターンを採用していて、以下のルールがある:
1233
-
1234
- - ビジネスロジックはService層に書く
1235
- - Repositoryは永続化のみ担当
1236
- - Repositoryのメソッドは全てasync(将来のDB変更に備える)
1237
- - インターフェースを定義してDIできるようにする
1238
-
1239
- 🤖 AIエージェント:
1240
- 設計パターンを登録しました:
1241
-
1242
- ✅ **pattern:BP-DESIGN-001** - Repositoryパターン
1243
- - カテゴリ: design-pattern
1244
- - 信頼度: 95%
1245
- - タグ: architecture, data-access, clean-architecture
1246
-
1247
- **レイヤー構造:**
1248
- ```
1249
- Controller → Service → Repository → Database
1250
-
1251
- ビジネスロジック 永続化のみ
1252
- ```
1253
-
1254
- **コード例:**
1255
- ```typescript:repository-pattern.ts
1256
- // インターフェース定義
1257
- interface UserRepository {
1258
- findById(id: string): Promise<User | null>;
1259
- save(user: User): Promise<void>;
1260
- delete(id: string): Promise<void>;
1261
- }
1262
-
1263
- // 実装
1264
- class PostgresUserRepository implements UserRepository {
1265
- async findById(id: string): Promise<User | null> {
1266
- return await this.db.query('SELECT * FROM users WHERE id = $1', [id]);
1267
- }
1268
- // ...
1269
- }
1270
-
1271
- // Service層でDI
1272
- class UserService {
1273
- constructor(private readonly userRepo: UserRepository) {}
1274
-
1275
- async getUser(id: string): ResultAsync<User, UserNotFoundError> {
1276
- const user = await this.userRepo.findById(id);
1277
- // ビジネスロジックはここに
1278
- }
1279
- }
1280
- ```
1281
-
1282
- pattern:BP-CODE-001(Result型)と関連付けました。
1283
- ```
1284
-
1285
- </details>
1286
-
1287
- <details><summary>📝 セキュリティガイドラインの登録</summary>
1288
-
1289
- ```
1290
- 👤 セキュリティ担当 山田:
1291
- セキュリティに関するガイドラインを追加したい。うちの会社で守るべきルール:
1292
-
1293
- 1. パスワードはbcryptでハッシュ化(コスト10以上)
1294
- 2. JWTの有効期限は24時間以内
1295
- 3. 機密情報は環境変数で管理(コードにハードコード禁止)
1296
- 4. すべての入力はzodでバリデーション
1297
- 5. SQLは必ずプリペアドステートメントを使用
1298
-
1299
- 🤖 AIエージェント:
1300
- セキュリティガイドラインを登録しました:
1301
-
1302
- ✅ **guideline:SEC-001** - パスワード管理
1303
- - ハッシュアルゴリズム: bcrypt
1304
- - 最小コスト: 10
1305
- - 平文保存: ❌ 絶対禁止
1306
-
1307
- ✅ **guideline:SEC-002** - JWT認証
1308
- - 有効期限: 最大24時間
1309
- - リフレッシュトークン: 推奨
1310
-
1311
- ✅ **guideline:SEC-003** - 機密情報管理
1312
- - 保存場所: 環境変数 or Secret Manager
1313
- - コード内ハードコード: ❌ 禁止
1314
- - .envファイル: .gitignoreに必須登録
1315
-
1316
- ✅ **guideline:SEC-004** - 入力検証
1317
- - ライブラリ: zod
1318
- - タイミング: APIエントリーポイントで即座に
1319
- - 方式: ホワイトリスト検証
1320
-
1321
- ✅ **guideline:SEC-005** - SQLインジェクション対策
1322
- - 必須: プリペアドステートメント
1323
- - 禁止: 文字列連結によるSQL構築
1324
-
1325
- 5つのガイドラインを登録し、相互に関連付けました。
1326
- 優先度: critical
1327
- ```
1328
-
1329
- </details>
1330
-
1331
- ---
1332
-
1333
- #### 📅 Week 2-4: ドメイン知識の蓄積
1334
-
1335
- テックスターが開発しているSaaSのドメイン知識も登録していきます。
1336
-
1337
- <details><summary>📝 顧客管理システムのドメイン用語登録</summary>
1338
-
1339
- ```
1340
- 👤 プロダクトマネージャー 佐藤:
1341
- 顧客管理システム(CRM)のドメイン用語を登録しておきたい。
1342
- 新人が入ってきたときに、用語の意味で混乱しないように。
1343
-
1344
- - 「リード」: まだ商談に至っていない見込み顧客
1345
- - 「コンタクト」: 顧客企業の担当者個人
1346
- - 「アカウント」: 顧客企業そのもの
1347
- - 「オポチュニティ」: 具体的な商談案件
1348
- - 「MRR」: Monthly Recurring Revenue(月次経常収益)
1349
- - 「チャーン」: 解約・離脱
1350
-
1351
- 🤖 AIエージェント:
1352
- ドメイン用語を登録しました:
1353
-
1354
- ✅ **domain:CRM-TERM-001** - リード (Lead)
1355
- - 定義: まだ商談に至っていない見込み顧客
1356
- - 次のステージ: オポチュニティに変換
1357
-
1358
- ✅ **domain:CRM-TERM-002** - コンタクト (Contact)
1359
- - 定義: 顧客企業の担当者個人
1360
- - 関連: アカウントに所属
1361
-
1362
- ✅ **domain:CRM-TERM-003** - アカウント (Account)
1363
- - 定義: 顧客企業そのもの
1364
- - 関連: 複数のコンタクトを持つ
1365
-
1366
- ✅ **domain:CRM-TERM-004** - オポチュニティ (Opportunity)
1367
- - 定義: 具体的な商談案件
1368
- - ステージ: 見込み → 提案 → 交渉 → 成約/失注
1369
-
1370
- ✅ **domain:CRM-TERM-005** - MRR (Monthly Recurring Revenue)
1371
- - 定義: 月次経常収益
1372
- - 計算: 全アクティブ顧客の月額利用料合計
1373
-
1374
- ✅ **domain:CRM-TERM-006** - チャーン (Churn)
1375
- - 定義: 解約・離脱
1376
- - 種類: Customer Churn(顧客数), Revenue Churn(売上)
1377
-
1378
- 6つの用語を登録し、関連性を設定しました。
1379
- ```
1380
-
1381
- </details>
1382
-
1383
- <details><summary>📝 ビジネスルールの登録</summary>
1384
-
1385
- ```
1386
- 👤 プロダクトマネージャー 佐藤:
1387
- CRMのビジネスルールも追加して。
1388
-
1389
- - リードは90日間アクションがないと「休眠」ステータスに自動変更
1390
- - オポチュニティの金額が100万円以上の場合、マネージャー承認が必要
1391
- - 解約申請は30日前までに必要
1392
- - 無料トライアル期間は14日間
1393
-
1394
- 🤖 AIエージェント:
1395
- ビジネスルールを登録しました:
1396
-
1397
- ✅ **domain:CRM-RULE-001** - リード休眠ルール
1398
- - 条件: 90日間アクションなし
1399
- - アクション: ステータスを「休眠」に自動変更
1400
- - 関連: domain:CRM-TERM-001(リード)
1401
-
1402
- ✅ **domain:CRM-RULE-002** - 高額案件承認ルール
1403
- - 条件: オポチュニティ金額 ≥ 100万円
1404
- - 必要アクション: マネージャー承認
1405
- - 関連: domain:CRM-TERM-004(オポチュニティ)
1406
-
1407
- ✅ **domain:CRM-RULE-003** - 解約申請期限
1408
- - 期限: 契約終了日の30日前まで
1409
- - 関連: domain:CRM-TERM-006(チャーン)
1410
-
1411
- ✅ **domain:CRM-RULE-004** - 無料トライアル期間
1412
- - 期間: 14日間
1413
- - 開始: アカウント作成日
1414
- - 終了後: 有料プランに移行 or 機能制限
1415
-
1416
- 4つのビジネスルールを登録し、関連する用語と紐付けました。
1417
- ```
1418
-
1419
- </details>
1420
-
1421
- ---
1422
-
1423
- #### 🔄 ナレッジの編集と更新
1424
-
1425
- 時間が経つと、ルールの変更が必要になることがあります。
1426
-
1427
- <details><summary>📝 既存ルールの更新</summary>
1428
-
1429
- ```
1430
- 👤 テックスターCTO:
1431
- セキュリティレビューの結果、JWTの有効期限を24時間から12時間に短縮することになった。
1432
- guideline:SEC-002を更新して。
1433
-
1434
- 🤖 AIエージェント:
1435
- guideline:SEC-002 を更新しました:
1436
-
1437
- **変更前:**
1438
- - 有効期限: 最大24時間
1439
-
1440
- **変更後:**
1441
- - 有効期限: 最大12時間 ⬅️ 更新
1442
-
1443
- 📝 変更理由も記録しますか?
1444
-
1445
- 👤 テックスターCTO:
1446
- お願い。理由は「2026年1月のセキュリティレビューで、セッションハイジャックリスク軽減のため短縮を決定」
1447
-
1448
- 🤖 AIエージェント:
1449
- 変更履歴を追加しました:
1450
-
1451
- ```json
1452
- {
1453
- "id": "guideline:SEC-002",
1454
- "changelog": [
1455
- {
1456
- "date": "2026-01-12",
1457
- "change": "JWT有効期限を24時間から12時間に短縮",
1458
- "reason": "セキュリティレビューによりセッションハイジャックリスク軽減のため",
1459
- "approver": "CTO"
1460
- }
1461
- ]
1462
- }
1463
- ```
1464
-
1465
- Gitで変更をコミットしますか?
1466
-
1467
- 👤 テックスターCTO:
1468
- コミットして
1469
-
1470
- 🤖 AIエージェント:
1471
- コミットしました:
1472
- ```
1473
- git add .knowledge/graph.json
1474
- git commit -m "knowledge: update SEC-002 JWT expiry from 24h to 12h"
1475
- ```
1476
- ```
1477
-
1478
- </details>
1479
-
1480
- <details><summary>📝 関連付けの追加</summary>
1481
-
1482
- ```
1483
- 👤 シニアエンジニア田中:
1484
- pattern:BP-CODE-001(Result型)と guideline:SEC-004(入力検証)を関連付けて。
1485
- 入力検証でエラーが出たときもResult型で返すようにしたいから。
1486
-
1487
- 🤖 AIエージェント:
1488
- リレーションを追加しました:
1489
-
1490
- **新しい関連:**
1491
- - pattern:BP-CODE-001 → guideline:SEC-004
1492
- - 関連タイプ: `relatedTo`
1493
- - 説明: 入力検証エラーもResult型で表現する
1494
-
1495
- **使用例:**
1496
- ```typescript:validation-with-result.ts
1497
- import { z } from 'zod';
1498
- import { Result, ok, err } from 'neverthrow';
1499
-
1500
- const UserSchema = z.object({
1501
- email: z.string().email(),
1502
- age: z.number().min(0).max(150),
1503
- });
1504
-
1505
- function validateUserInput(input: unknown): Result<ValidUser, ValidationError> {
1506
- const result = UserSchema.safeParse(input);
1507
- if (!result.success) {
1508
- return err(new ValidationError(result.error.issues));
1509
- }
1510
- return ok(result.data);
1511
- }
1512
- ```
1513
-
1514
- これで2つの知識が連携し、AIエージェントが両方を考慮したコードを生成できます。
1515
- ```
1516
-
1517
- </details>
1518
-
1519
- ---
1520
-
1521
- #### 🗑️ ナレッジの削除(非推奨化)
1522
-
1523
- 古くなったルールを削除または非推奨にする場合。
1524
-
1525
- <details><summary>📝 古いパターンの非推奨化</summary>
1526
-
1527
- ```
1528
- 👤 テックスターCTO:
1529
- 以前登録した「コールバックベースのエラーハンドリング」パターンはもう使わないので非推奨にして。
1530
- 完全削除ではなく、非推奨としてマークしたい。
1531
-
1532
- 🤖 AIエージェント:
1533
- 非推奨としてマークする前に確認です。
1534
-
1535
- ⚠️ pattern:BP-LEGACY-001「コールバックベースのエラーハンドリング」
1536
-
1537
- **現在の参照元:**
1538
- - なし(参照している知識はありません)
1539
-
1540
- 非推奨としてマークし、代替としてpattern:BP-CODE-001(Result型)を推奨しますか?
1541
-
1542
- 👤 テックスターCTO:
1543
- はい、そうして
1544
-
1545
- 🤖 AIエージェント:
1546
- 非推奨としてマークしました:
1547
-
1548
- ```json
1549
- {
1550
- "id": "pattern:BP-LEGACY-001",
1551
- "status": "deprecated",
1552
- "deprecatedAt": "2026-01-12",
1553
- "deprecationReason": "Result型パターンへ移行のため",
1554
- "replacement": "pattern:BP-CODE-001",
1555
- "note": "既存コードは順次リファクタリング対象"
1556
- }
1557
- ```
1558
-
1559
- ⚠️ このパターンが使われたコードを検索すると、AIエージェントは自動的に新しいパターンを提案します。
1560
- ```
1561
-
1562
- </details>
1563
-
1564
- <details><summary>📝 完全削除(誤登録の場合)</summary>
1565
-
1566
- ```
1567
- 👤 シニアエンジニア田中:
1568
- 昨日登録したpattern:BP-TEST-999は間違えて登録したものだから削除して
1569
-
1570
- 🤖 AIエージェント:
1571
- 削除前の確認:
1572
-
1573
- **対象:** pattern:BP-TEST-999
1574
- **参照元:** なし
1575
-
1576
- このエンティティを完全に削除しますか?
1577
- (非推奨ではなく、完全に履歴から消えます)
1578
-
1579
- 👤 シニアエンジニア田中:
1580
- はい、削除して
1581
-
1582
- 🤖 AIエージェント:
1583
- 削除しました:
1584
-
1585
- - ✅ pattern:BP-TEST-999 を完全削除
1586
- - 💾 .knowledge/graph.json を更新
1587
-
1588
- ```
1589
- git add .knowledge/graph.json
1590
- git commit -m "knowledge: remove erroneously added BP-TEST-999"
1591
- ```
1592
-
1593
- この変更は git revert で復元可能です。
1594
- ```
1595
-
1596
- </details>
1597
-
1598
- ---
1599
-
1600
- #### 📊 Week 4完了時点のナレッジ状況
1601
-
1602
- テックスター株式会社の知識ベースの状況:
1603
-
1604
- | カテゴリ | 件数 | 主な内容 |
1605
- |---------|------|----------|
1606
- | **コーディング規約** | 5件 | 命名規則、フォーマット、コメント |
1607
- | **Git運用** | 3件 | ブランチ、コミット、PR |
1608
- | **テスト戦略** | 2件 | カバレッジ、ツール |
1609
- | **ベストプラクティス** | 4件 | Result型、Repository、DI |
1610
- | **セキュリティ** | 5件 | 認証、暗号化、入力検証 |
1611
- | **ドメイン用語** | 6件 | CRM用語 |
1612
- | **ビジネスルール** | 4件 | CRMルール |
1613
- | **合計** | **29件** | |
1614
-
1615
- **知識グラフの構造:**
1616
- ```
1617
- rule:CODE-STYLE-001 ──references──→ pattern:BP-CODE-001
1618
-
1619
- pattern:BP-CODE-001 ──relatedTo──→ guideline:SEC-004
1620
-
1621
- └──relatedTo──→ pattern:BP-DESIGN-001
1622
-
1623
- domain:CRM-RULE-001 ──relatedTo──→ domain:CRM-TERM-001
1624
- ```
1625
-
1626
- ---
1627
-
1628
- #### 🤖 ナレッジを活用した開発
1629
-
1630
- 登録したナレッジは、日々の開発で活用されます。
1631
-
1632
- ```
1633
- 👤 新人エンジニア 鈴木:
1634
- 顧客の請求処理機能を実装したいんだけど、うちの会社のルールを教えて
1635
-
1636
- 🤖 AIエージェント:
1637
- 請求処理機能に関連する組織知識をまとめました:
1638
-
1639
- **必須ルール:**
1640
- - rule:CODE-STYLE-001: TypeScript命名規則(camelCase)
1641
- - rule:GIT-002: コミットメッセージはConventional Commits形式
1642
- - rule:TEST-001: カバレッジ80%以上必須
1643
-
1644
- **設計パターン:**
1645
- - pattern:BP-CODE-001: エラーはResult型で処理
1646
- - pattern:BP-DESIGN-001: Repositoryパターンでデータアクセス
1647
-
1648
- **セキュリティ:**
1649
- - guideline:SEC-004: 入力検証はzodで実装
1650
- - guideline:SEC-005: SQLはプリペアドステートメント必須
1651
-
1652
- **ドメイン知識:**
1653
- - domain:CRM-TERM-005: MRR(月次経常収益)の計算方法
1654
- - domain:CRM-RULE-003: 解約は30日前までに申請必要
1655
-
1656
- これらに従って実装を始めましょうか?
1657
- ```
1658
-
1659
- :::note info
1660
- **ポイント**: 新人でも、AIエージェントに聞くだけで組織のルールを網羅的に把握できます。「あのルールどこに書いてあった?」という質問が不要になります。
1661
- :::
1662
-
1663
- ---
1664
-
1665
- ## 6. 成功事例
1666
-
1667
- <details><summary>ケース1: 金融系システム開発会社</summary>
1668
-
1669
- **課題:**
1670
- - 複数のプロジェクトでセキュリティ実装がバラバラ
1671
- - 監査対応で「なぜこの実装にしたのか」の説明に苦労
1672
-
1673
- **解決:**
1674
- - `@musubix/knowledge` でセキュリティガイドラインを一元管理
1675
- - `@musubix/decisions` でアーキテクチャ決定を記録
1676
-
1677
- **結果:**
1678
- - セキュリティ監査の準備時間が **60%短縮**
1679
- - 脆弱性報告が **50%減少**
1680
-
1681
- </details>
1682
-
1683
- <details><summary>ケース2: ECサイト運営企業</summary>
1684
-
1685
- **課題:**
1686
- - 10以上のマイクロサービスで実装パターンがバラバラ
1687
- - 新サービス立ち上げに毎回3ヶ月かかる
1688
-
1689
- **解決:**
1690
- - ドメイン用語・ビジネスルールを知識ベースに整備
1691
- - 標準パターンをAIエージェントと連携
1692
-
1693
- **結果:**
1694
- - 新サービス立ち上げが **3ヶ月→3週間** に短縮
1695
- - サービス間のコード共有率が **40%向上**
1696
-
1697
- </details>
1698
-
1699
- ---
1700
-
1701
- ## 7. まとめ
1702
-
1703
- エンタープライズアプリケーション開発において、組織の知識を体系的に管理することは、もはやオプションではなく **必須** です。
1704
-
1705
- `@musubix/knowledge` を活用することで:
1706
-
1707
- - [x] **知識の断片化を解消** - 一箇所で組織知識を管理
1708
- - [x] **品質の一貫性を確保** - 統一ルールで品質のばらつきを防止
1709
- - [x] **オンボーディングを効率化** - 新人が自己学習できる環境
1710
- - [x] **AIエージェントを強化** - 組織ルールに従ったコード生成
1711
- - [x] **技術的負債を抑制** - 標準パターンによるメンテナンス性向上
1712
-
1713
- :::note info
1714
- **今すぐ始めましょう:**
1715
-
1716
- ```bash
1717
- # インストール
1718
- npm install musubix
1719
-
1720
- # サンプルを実行
1721
- npx tsx examples/knowledge-sample.ts
1722
- ```
1723
- :::
1724
-
1725
- ---
1726
-
1727
- ## 参考資料
1728
-
1729
- - [examples/knowledge-sample.ts](../examples/knowledge-sample.ts) - 包括的なサンプルコード
1730
- - [docs/overview/MUSUBIX-Knowledge.md](overview/MUSUBIX-Knowledge.md) - APIリファレンス
1731
- - [AGENTS.md](../AGENTS.md) - AIエージェント向けガイド
1732
-
1733
- ---
1734
-
1735
- **Author**: MUSUBIX Team
1736
- **Last Updated**: 2026-01-12
1737
- **Version**: 3.0.6