musubix 3.3.8 → 3.3.10
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,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
|