musubix 3.4.1 → 3.4.3
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 -315
- 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 +51 -57
- 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 -1134
- package/LICENSE +0 -21
- package/README.ja.md +0 -313
- 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/adr/ADR-v3.4.0-001-deep-research-architecture.md +0 -217
- package/docs/adr/ADR-v3.4.0-002-search-provider-selection.md +0 -308
- package/docs/adr/ADR-v3.4.0-003-lm-api-integration.md +0 -475
- 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,494 +0,0 @@
|
|
|
1
|
-
# MUSUBIX Decisions パッケージ
|
|
2
|
-
|
|
3
|
-
**パッケージ名**: `@musubix/decisions`
|
|
4
|
-
**バージョン**: 3.0.1
|
|
5
|
-
**最終更新**: 2026-01-12
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 1. 概要
|
|
10
|
-
|
|
11
|
-
`@musubix/decisions` は、MUSUBIX v3.0で導入されたArchitecture Decision Records(ADR)管理システムです。アーキテクチャ決定を構造化されたMarkdownファイルで記録・追跡し、チーム間の知識共有と意思決定の透明性を実現します。
|
|
12
|
-
|
|
13
|
-
### 1.1 特徴
|
|
14
|
-
|
|
15
|
-
| 特徴 | 説明 |
|
|
16
|
-
|------|------|
|
|
17
|
-
| **Markdown形式** | 人間が読みやすく、Gitでdiff可能 |
|
|
18
|
-
| **ライフサイクル管理** | proposed → accepted → deprecated/superseded |
|
|
19
|
-
| **要件との紐付け** | REQ-* IDとの関連付けをサポート |
|
|
20
|
-
| **検索・フィルタ** | キーワード検索、ステータスフィルタ |
|
|
21
|
-
| **インデックス生成** | ADR一覧の自動生成 |
|
|
22
|
-
|
|
23
|
-
### 1.2 ADRステータス
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
proposed → accepted → deprecated
|
|
27
|
-
↓
|
|
28
|
-
superseded (by newer ADR)
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
| ステータス | 説明 |
|
|
32
|
-
|-----------|------|
|
|
33
|
-
| `proposed` | 提案中(レビュー待ち) |
|
|
34
|
-
| `accepted` | 承認済み(適用中) |
|
|
35
|
-
| `deprecated` | 非推奨(使用しない) |
|
|
36
|
-
| `superseded` | 置き換え済み(新ADRあり) |
|
|
37
|
-
|
|
38
|
-
### 1.3 ストレージ構造
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
docs/decisions/
|
|
42
|
-
├── ADR-0001-jwt-authentication.md
|
|
43
|
-
├── ADR-0002-monorepo-structure.md
|
|
44
|
-
├── ADR-0003-testing-strategy.md
|
|
45
|
-
└── index.md # 自動生成
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## 2. インストール
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# 単体インストール
|
|
54
|
-
npm install @musubix/decisions
|
|
55
|
-
|
|
56
|
-
# または musubix パッケージ経由
|
|
57
|
-
npm install musubix
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## 3. 基本的な使い方
|
|
63
|
-
|
|
64
|
-
### 3.1 Decision Managerの初期化
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
import { createDecisionManager } from '@musubix/decisions';
|
|
68
|
-
|
|
69
|
-
// docs/decisions/ にADRを保存
|
|
70
|
-
const manager = createDecisionManager('docs/decisions');
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### 3.2 ADRの作成
|
|
74
|
-
|
|
75
|
-
```typescript
|
|
76
|
-
const adr = await manager.create({
|
|
77
|
-
title: 'JWT認証の採用',
|
|
78
|
-
context: `
|
|
79
|
-
ユーザー認証の仕組みが必要。
|
|
80
|
-
セッション管理のオーバーヘッドを避けたい。
|
|
81
|
-
マイクロサービス間での認証情報共有が必要。
|
|
82
|
-
`,
|
|
83
|
-
decision: 'JWTトークンベースの認証を採用する。',
|
|
84
|
-
rationale: `
|
|
85
|
-
- ステートレスでスケーラブル
|
|
86
|
-
- マイクロサービス間でも利用可能
|
|
87
|
-
- 業界標準で豊富なライブラリがある
|
|
88
|
-
`,
|
|
89
|
-
alternatives: [
|
|
90
|
-
'セッションベース認証',
|
|
91
|
-
'OAuth2のみ',
|
|
92
|
-
'API Key認証',
|
|
93
|
-
],
|
|
94
|
-
consequences: [
|
|
95
|
-
'トークン失効の仕組みが必要',
|
|
96
|
-
'トークンサイズに注意(ペイロードが大きくなりがち)',
|
|
97
|
-
'セキュアな署名鍵管理が必要',
|
|
98
|
-
],
|
|
99
|
-
relatedRequirements: ['REQ-AUTH-001', 'REQ-SEC-002'],
|
|
100
|
-
decider: 'Tech Lead',
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
console.log(`ADR-${adr.id} created: ${adr.title}`);
|
|
104
|
-
// => ADR-0001 created: JWT認証の採用
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### 3.3 生成されるMarkdownファイル
|
|
108
|
-
|
|
109
|
-
```markdown
|
|
110
|
-
# ADR-0001: JWT認証の採用
|
|
111
|
-
|
|
112
|
-
## Status
|
|
113
|
-
|
|
114
|
-
proposed
|
|
115
|
-
|
|
116
|
-
## Context
|
|
117
|
-
|
|
118
|
-
ユーザー認証の仕組みが必要。
|
|
119
|
-
セッション管理のオーバーヘッドを避けたい。
|
|
120
|
-
マイクロサービス間での認証情報共有が必要。
|
|
121
|
-
|
|
122
|
-
## Decision
|
|
123
|
-
|
|
124
|
-
JWTトークンベースの認証を採用する。
|
|
125
|
-
|
|
126
|
-
## Rationale
|
|
127
|
-
|
|
128
|
-
- ステートレスでスケーラブル
|
|
129
|
-
- マイクロサービス間でも利用可能
|
|
130
|
-
- 業界標準で豊富なライブラリがある
|
|
131
|
-
|
|
132
|
-
## Alternatives Considered
|
|
133
|
-
|
|
134
|
-
1. セッションベース認証
|
|
135
|
-
2. OAuth2のみ
|
|
136
|
-
3. API Key認証
|
|
137
|
-
|
|
138
|
-
## Consequences
|
|
139
|
-
|
|
140
|
-
- トークン失効の仕組みが必要
|
|
141
|
-
- トークンサイズに注意(ペイロードが大きくなりがち)
|
|
142
|
-
- セキュアな署名鍵管理が必要
|
|
143
|
-
|
|
144
|
-
## Related Requirements
|
|
145
|
-
|
|
146
|
-
- REQ-AUTH-001
|
|
147
|
-
- REQ-SEC-002
|
|
148
|
-
|
|
149
|
-
## Metadata
|
|
150
|
-
|
|
151
|
-
- **Decider**: Tech Lead
|
|
152
|
-
- **Date**: 2026-01-12
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## 4. ADRの取得
|
|
158
|
-
|
|
159
|
-
### 4.1 IDで取得
|
|
160
|
-
|
|
161
|
-
```typescript
|
|
162
|
-
const adr = await manager.get('0001');
|
|
163
|
-
|
|
164
|
-
if (adr) {
|
|
165
|
-
console.log(adr.title); // => 'JWT認証の採用'
|
|
166
|
-
console.log(adr.status); // => 'proposed'
|
|
167
|
-
console.log(adr.decision); // => 'JWTトークンベースの認証を採用する。'
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### 4.2 一覧取得
|
|
172
|
-
|
|
173
|
-
```typescript
|
|
174
|
-
// 全ADR
|
|
175
|
-
const all = await manager.list();
|
|
176
|
-
|
|
177
|
-
// ステータスでフィルタ
|
|
178
|
-
const accepted = await manager.list({ status: 'accepted' });
|
|
179
|
-
const proposed = await manager.list({ status: 'proposed' });
|
|
180
|
-
|
|
181
|
-
// キーワード検索
|
|
182
|
-
const authRelated = await manager.list({ keyword: '認証' });
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## 5. ADRの状態遷移
|
|
188
|
-
|
|
189
|
-
### 5.1 承認(Accept)
|
|
190
|
-
|
|
191
|
-
```typescript
|
|
192
|
-
const adr = await manager.accept('0001');
|
|
193
|
-
console.log(adr.status); // => 'accepted'
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### 5.2 非推奨化(Deprecate)
|
|
197
|
-
|
|
198
|
-
```typescript
|
|
199
|
-
// 単純な非推奨
|
|
200
|
-
await manager.deprecate('0001');
|
|
201
|
-
|
|
202
|
-
// 理由を記録
|
|
203
|
-
await manager.deprecate('0001', {
|
|
204
|
-
reason: 'セキュリティ要件の変更により不採用',
|
|
205
|
-
});
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
### 5.3 置き換え(Supersede)
|
|
209
|
-
|
|
210
|
-
```typescript
|
|
211
|
-
// 新しいADRで置き換え
|
|
212
|
-
await manager.supersede('0001', '0005');
|
|
213
|
-
|
|
214
|
-
// 0001のステータスは 'superseded' になり、
|
|
215
|
-
// supersededBy: '0005' が記録される
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## 6. ADR検索
|
|
221
|
-
|
|
222
|
-
### 6.1 キーワード検索
|
|
223
|
-
|
|
224
|
-
```typescript
|
|
225
|
-
const results = await manager.search('認証');
|
|
226
|
-
|
|
227
|
-
for (const adr of results) {
|
|
228
|
-
console.log(`ADR-${adr.id}: ${adr.title}`);
|
|
229
|
-
}
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### 6.2 要件からADR検索
|
|
233
|
-
|
|
234
|
-
```typescript
|
|
235
|
-
// 特定の要件に関連するADRを検索
|
|
236
|
-
const relatedADRs = await manager.findByRequirement('REQ-AUTH-001');
|
|
237
|
-
|
|
238
|
-
console.log(`REQ-AUTH-001 に関連するADR: ${relatedADRs.length}件`);
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## 7. インデックス生成
|
|
244
|
-
|
|
245
|
-
```typescript
|
|
246
|
-
// docs/decisions/index.md を自動生成
|
|
247
|
-
await manager.generateIndex();
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
生成される `index.md`:
|
|
251
|
-
|
|
252
|
-
```markdown
|
|
253
|
-
# Architecture Decision Records
|
|
254
|
-
|
|
255
|
-
| ID | Title | Status | Date |
|
|
256
|
-
|----|-------|--------|------|
|
|
257
|
-
| [ADR-0001](./ADR-0001-jwt-authentication.md) | JWT認証の採用 | accepted | 2026-01-12 |
|
|
258
|
-
| [ADR-0002](./ADR-0002-monorepo-structure.md) | モノレポ構造の採用 | accepted | 2026-01-12 |
|
|
259
|
-
| [ADR-0003](./ADR-0003-testing-strategy.md) | テスト戦略 | proposed | 2026-01-12 |
|
|
260
|
-
|
|
261
|
-
## By Status
|
|
262
|
-
|
|
263
|
-
### Accepted (2)
|
|
264
|
-
- [ADR-0001](./ADR-0001-jwt-authentication.md): JWT認証の採用
|
|
265
|
-
- [ADR-0002](./ADR-0002-monorepo-structure.md): モノレポ構造の採用
|
|
266
|
-
|
|
267
|
-
### Proposed (1)
|
|
268
|
-
- [ADR-0003](./ADR-0003-testing-strategy.md): テスト戦略
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
## 8. ADRの更新と削除
|
|
274
|
-
|
|
275
|
-
### 8.1 更新
|
|
276
|
-
|
|
277
|
-
```typescript
|
|
278
|
-
const updated = await manager.update('0001', {
|
|
279
|
-
consequences: [
|
|
280
|
-
...existingConsequences,
|
|
281
|
-
'リフレッシュトークンの導入が必要になった',
|
|
282
|
-
],
|
|
283
|
-
});
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
### 8.2 削除
|
|
287
|
-
|
|
288
|
-
```typescript
|
|
289
|
-
// ⚠️ 通常は deprecate/supersede を使用
|
|
290
|
-
const deleted = await manager.delete('0003');
|
|
291
|
-
console.log(deleted); // => true
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## 9. API リファレンス
|
|
297
|
-
|
|
298
|
-
### 9.1 DecisionManager インターフェース
|
|
299
|
-
|
|
300
|
-
```typescript
|
|
301
|
-
interface DecisionManager {
|
|
302
|
-
// CRUD
|
|
303
|
-
create(input: ADRInput): Promise<ADR>;
|
|
304
|
-
get(id: string): Promise<ADR | null>;
|
|
305
|
-
list(filter?: ADRFilter): Promise<ADR[]>;
|
|
306
|
-
update(id: string, updates: Partial<ADRInput>): Promise<ADR>;
|
|
307
|
-
delete(id: string): Promise<boolean>;
|
|
308
|
-
|
|
309
|
-
// ステータス遷移
|
|
310
|
-
accept(id: string): Promise<ADR>;
|
|
311
|
-
deprecate(id: string, options?: DeprecateOptions): Promise<ADR>;
|
|
312
|
-
supersede(oldId: string, newId: string): Promise<ADR>;
|
|
313
|
-
|
|
314
|
-
// 検索
|
|
315
|
-
search(keyword: string): Promise<ADR[]>;
|
|
316
|
-
findByRequirement(requirementId: string): Promise<ADR[]>;
|
|
317
|
-
|
|
318
|
-
// インデックス
|
|
319
|
-
generateIndex(): Promise<void>;
|
|
320
|
-
}
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
### 9.2 ADR インターフェース
|
|
324
|
-
|
|
325
|
-
```typescript
|
|
326
|
-
interface ADR {
|
|
327
|
-
id: string; // 例: '0001'
|
|
328
|
-
title: string; // 決定タイトル
|
|
329
|
-
status: ADRStatus; // 'proposed' | 'accepted' | 'deprecated' | 'superseded'
|
|
330
|
-
context: string; // 背景・問題
|
|
331
|
-
decision: string; // 決定内容
|
|
332
|
-
rationale: string; // 理由・根拠
|
|
333
|
-
alternatives: string[]; // 検討した代替案
|
|
334
|
-
consequences: string[]; // 結果・影響
|
|
335
|
-
relatedRequirements?: string[]; // 関連要件ID
|
|
336
|
-
decider?: string; // 決定者
|
|
337
|
-
date: string; // 作成日
|
|
338
|
-
supersededBy?: string; // 置き換え先ADR ID
|
|
339
|
-
}
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
### 9.3 ADRInput インターフェース
|
|
343
|
-
|
|
344
|
-
```typescript
|
|
345
|
-
interface ADRInput {
|
|
346
|
-
title: string;
|
|
347
|
-
context: string;
|
|
348
|
-
decision: string;
|
|
349
|
-
rationale: string;
|
|
350
|
-
alternatives?: string[];
|
|
351
|
-
consequences?: string[];
|
|
352
|
-
relatedRequirements?: string[];
|
|
353
|
-
decider?: string;
|
|
354
|
-
}
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
---
|
|
358
|
-
|
|
359
|
-
## 10. ユースケース
|
|
360
|
-
|
|
361
|
-
### 10.1 技術選定の記録
|
|
362
|
-
|
|
363
|
-
```typescript
|
|
364
|
-
const techDecision = await manager.create({
|
|
365
|
-
title: 'フロントエンドフレームワークの選定',
|
|
366
|
-
context: `
|
|
367
|
-
新規Webアプリケーションの開発において、
|
|
368
|
-
フロントエンドフレームワークを選定する必要がある。
|
|
369
|
-
チームのスキルセットとプロジェクト要件を考慮。
|
|
370
|
-
`,
|
|
371
|
-
decision: 'React + TypeScriptを採用する。',
|
|
372
|
-
rationale: `
|
|
373
|
-
- チームの大半がReact経験者
|
|
374
|
-
- 豊富なエコシステムとコミュニティサポート
|
|
375
|
-
- TypeScriptとの親和性が高い
|
|
376
|
-
`,
|
|
377
|
-
alternatives: [
|
|
378
|
-
'Vue.js',
|
|
379
|
-
'Angular',
|
|
380
|
-
'Svelte',
|
|
381
|
-
],
|
|
382
|
-
consequences: [
|
|
383
|
-
'React 18の新機能(Concurrent Mode等)の学習が必要',
|
|
384
|
-
'状態管理ライブラリの選定が別途必要',
|
|
385
|
-
],
|
|
386
|
-
relatedRequirements: ['REQ-UI-001'],
|
|
387
|
-
decider: 'Frontend Lead',
|
|
388
|
-
});
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
### 10.2 アーキテクチャ変更の記録
|
|
392
|
-
|
|
393
|
-
```typescript
|
|
394
|
-
const archDecision = await manager.create({
|
|
395
|
-
title: 'マイクロサービスへの移行',
|
|
396
|
-
context: `
|
|
397
|
-
モノリシックアーキテクチャの限界に直面。
|
|
398
|
-
スケーラビリティとデプロイ頻度の向上が必要。
|
|
399
|
-
`,
|
|
400
|
-
decision: 'ドメイン駆動設計に基づくマイクロサービス化を段階的に進める。',
|
|
401
|
-
rationale: `
|
|
402
|
-
- 各サービスの独立したスケーリング
|
|
403
|
-
- チーム間の独立性向上
|
|
404
|
-
- 技術スタックの柔軟性
|
|
405
|
-
`,
|
|
406
|
-
alternatives: [
|
|
407
|
-
'モノリスの最適化継続',
|
|
408
|
-
'サーバーレス完全移行',
|
|
409
|
-
],
|
|
410
|
-
consequences: [
|
|
411
|
-
'運用複雑性の増加',
|
|
412
|
-
'分散トレーシングの導入が必要',
|
|
413
|
-
'サービス間通信の設計が重要',
|
|
414
|
-
],
|
|
415
|
-
relatedRequirements: ['REQ-SCALE-001', 'REQ-ARCH-002'],
|
|
416
|
-
decider: 'CTO',
|
|
417
|
-
});
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
### 10.3 ADR駆動の開発フロー
|
|
421
|
-
|
|
422
|
-
```typescript
|
|
423
|
-
// 1. 新機能の設計時にADRを作成
|
|
424
|
-
const adr = await manager.create({
|
|
425
|
-
title: 'キャッシュ戦略',
|
|
426
|
-
// ...
|
|
427
|
-
});
|
|
428
|
-
|
|
429
|
-
// 2. チームレビュー後に承認
|
|
430
|
-
await manager.accept(adr.id);
|
|
431
|
-
|
|
432
|
-
// 3. 要件変更時に新ADRで置き換え
|
|
433
|
-
const newAdr = await manager.create({
|
|
434
|
-
title: 'Redis分散キャッシュの導入',
|
|
435
|
-
// ...
|
|
436
|
-
});
|
|
437
|
-
await manager.supersede(adr.id, newAdr.id);
|
|
438
|
-
|
|
439
|
-
// 4. インデックス更新
|
|
440
|
-
await manager.generateIndex();
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
---
|
|
444
|
-
|
|
445
|
-
## 11. ベストプラクティス
|
|
446
|
-
|
|
447
|
-
### 11.1 ADRを書くタイミング
|
|
448
|
-
|
|
449
|
-
- 重要な技術選定時
|
|
450
|
-
- アーキテクチャの変更時
|
|
451
|
-
- 標準・規約の制定時
|
|
452
|
-
- トレードオフのある決定時
|
|
453
|
-
|
|
454
|
-
### 11.2 ADRに含めるべき情報
|
|
455
|
-
|
|
456
|
-
- **十分なコンテキスト**: 後から読む人が背景を理解できるように
|
|
457
|
-
- **明確な決定**: 曖昧さを排除
|
|
458
|
-
- **検討した代替案**: なぜ他の選択肢を選ばなかったか
|
|
459
|
-
- **予想される影響**: 良い面も悪い面も
|
|
460
|
-
|
|
461
|
-
### 11.3 ADRのライフサイクル管理
|
|
462
|
-
|
|
463
|
-
```typescript
|
|
464
|
-
// ❌ 悪い例: ADRを削除
|
|
465
|
-
await manager.delete('0001');
|
|
466
|
-
|
|
467
|
-
// ✅ 良い例: 非推奨または置き換え
|
|
468
|
-
await manager.deprecate('0001', {
|
|
469
|
-
reason: '要件変更により不採用'
|
|
470
|
-
});
|
|
471
|
-
|
|
472
|
-
// または
|
|
473
|
-
await manager.supersede('0001', '0005');
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
---
|
|
477
|
-
|
|
478
|
-
## 12. 関連パッケージ
|
|
479
|
-
|
|
480
|
-
| パッケージ | 説明 |
|
|
481
|
-
|------------|------|
|
|
482
|
-
| `@musubix/knowledge` | Git-Native知識グラフシステム |
|
|
483
|
-
| `@musubix/policy` | 9憲法条項に基づくポリシー検証 |
|
|
484
|
-
| `musubix` | 3パッケージを含むメインパッケージ |
|
|
485
|
-
|
|
486
|
-
---
|
|
487
|
-
|
|
488
|
-
## 13. 参照
|
|
489
|
-
|
|
490
|
-
- [MUSUBIX v3.0 User Guide](../MUSUBIX-v3.0-User-Guide.md)
|
|
491
|
-
- [ADR GitHub Organization](https://adr.github.io/)
|
|
492
|
-
- [Michael Nygard's Original ADR Post](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions)
|
|
493
|
-
- [GitHub Repository](https://github.com/nahisaho/MUSUBIX)
|
|
494
|
-
- [npm Package](https://www.npmjs.com/package/@musubix/decisions)
|