@k2works/claude-code-booster 1.13.0 → 2.0.0
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/bin/claude-code-booster +5 -7
- package/lib/assets/.claude/README.md +73 -19
- package/lib/assets/.claude/agents/xp-architect.md +250 -0
- package/lib/assets/.claude/agents/xp-executive.md +207 -0
- package/lib/assets/.claude/agents/xp-interaction-designer.md +239 -0
- package/lib/assets/.claude/agents/xp-product-manager.md +245 -0
- package/lib/assets/.claude/agents/xp-programmer.md +268 -0
- package/lib/assets/.claude/agents/xp-project-manager.md +229 -0
- package/lib/assets/.claude/agents/xp-technical-writer.md +224 -0
- package/lib/assets/.claude/agents/xp-tester.md +265 -0
- package/lib/assets/.claude/agents/xp-user-representative.md +204 -0
- package/lib/assets/.claude/skills/ai-agent-guidelines/SKILL.md +49 -57
- package/lib/assets/.claude/skills/analyzing-architecture/SKILL.md +54 -58
- package/lib/assets/.claude/skills/analyzing-business/SKILL.md +52 -74
- package/lib/assets/.claude/skills/analyzing-data-model/SKILL.md +50 -53
- package/lib/assets/.claude/skills/analyzing-domain-model/SKILL.md +56 -56
- package/lib/assets/.claude/skills/analyzing-inception-deck/SKILL.md +56 -109
- package/lib/assets/.claude/skills/analyzing-non-functional/SKILL.md +61 -57
- package/lib/assets/.claude/skills/analyzing-operation/SKILL.md +61 -57
- package/lib/assets/.claude/skills/analyzing-requirements/SKILL.md +57 -55
- package/lib/assets/.claude/skills/analyzing-tech-stack/SKILL.md +66 -67
- package/lib/assets/.claude/skills/analyzing-test-strategy/SKILL.md +58 -56
- package/lib/assets/.claude/skills/analyzing-ui-design/SKILL.md +51 -57
- package/lib/assets/.claude/skills/analyzing-usecases/SKILL.md +45 -60
- package/lib/assets/.claude/skills/creating-adr/SKILL.md +38 -40
- package/lib/assets/.claude/skills/developing-backend/SKILL.md +49 -55
- package/lib/assets/.claude/skills/developing-frontend/SKILL.md +47 -50
- package/lib/assets/.claude/skills/developing-release/SKILL.md +60 -95
- package/lib/assets/.claude/skills/generating-slides/SKILL.md +58 -100
- package/lib/assets/.claude/skills/git-commit/SKILL.md +27 -52
- package/lib/assets/.claude/skills/killing-processes/SKILL.md +16 -70
- package/lib/assets/.claude/skills/operating-backup/SKILL.md +59 -0
- package/lib/assets/.claude/skills/operating-cicd/SKILL.md +54 -0
- package/lib/assets/.claude/skills/operating-deploy/SKILL.md +67 -0
- package/lib/assets/.claude/skills/{managing-docs → operating-docs}/SKILL.md +1 -1
- package/lib/assets/.claude/skills/operating-provision/SKILL.md +77 -0
- package/lib/assets/.claude/skills/operating-setup/SKILL.md +63 -0
- package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +65 -95
- package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +60 -155
- package/lib/assets/.claude/skills/orchestrating-operation/SKILL.md +158 -0
- package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +60 -119
- package/lib/assets/.claude/skills/planning-releases/SKILL.md +63 -168
- package/lib/assets/.claude/skills/syncing-github-project/SKILL.md +62 -266
- package/lib/assets/.claude/skills/tracking-progress/SKILL.md +49 -122
- package/lib/assets/CLAUDE.md +7 -2
- package/lib/assets/README.md +3 -34
- package/lib/assets/docs/development/index.md +14 -8
- package/lib/assets/docs/reference//351/201/213/347/224/250/343/202/271/343/202/257/343/203/252/343/203/227/343/203/210/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +421 -0
- package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +69 -5
- package/lib/assets/docs/template/AWS/343/202/271/343/203/206/343/203/274/343/202/270/343/203/263/343/202/260/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +1366 -0
- package/lib/assets/docs/template/AWS/343/203/227/343/203/255/343/203/200/343/202/257/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +634 -0
- package/lib/assets/docs/template//343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +547 -0
- package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273.md +123 -1
- package/lib/assets/docs/template//350/250/255/350/250/210.md +12 -2
- package/lib/assets/docs/template//351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +688 -0
- package/package.json +1 -1
- package/lib/assets/.claude/SKILLS_TEMPLATE.md +0 -100
- package/lib/assets/.claude/agents/roles/.gitkeep +0 -0
- package/lib/assets/.claude/skills/managing-operations/DEPLOY.md +0 -77
- package/lib/assets/.claude/skills/managing-operations/SETUP_CSHARP.md +0 -80
- package/lib/assets/.claude/skills/managing-operations/SETUP_FRONTEND.md +0 -84
- package/lib/assets/.claude/skills/managing-operations/SETUP_JAVA.md +0 -75
- package/lib/assets/.claude/skills/managing-operations/SKILL.md +0 -156
|
@@ -1,87 +1,83 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: analyzing-architecture
|
|
3
|
-
description:
|
|
3
|
+
description: バックエンド・フロントエンド・インフラのアーキテクチャパターン選択と設計ドキュメント作成を支援。「アーキテクチャを設計したい」「システム構成を検討したい」「レイヤード/ヘキサゴナル/クリーンどれが適切か」「CQRS を導入すべきか」「フロントエンドのアーキテクチャを決めたい」といった場面で発動する。アーキテクチャを早期に設計することで、開発フェーズでの技術的負債の蓄積を防ぐ。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# アーキテクチャ設計
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
業務領域とデータ構造の複雑さに基づき、バックエンド・フロントエンド・インフラの各アーキテクチャパターンを選択し設計ドキュメントを作成する。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
アーキテクチャは後から変えるコストが最も高い設計判断。要件定義の段階で適切なパターンを選定することで、開発全体の方向性を確定し、手戻りを最小化する。
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## 参照ドキュメントとテンプレート
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
| 種類 | パス | 備考 |
|
|
15
|
+
|------|------|------|
|
|
16
|
+
| ガイド | @docs/reference/アーキテクチャ設計ガイド.md | アーキテクチャ設計の進め方詳細 |
|
|
17
|
+
| テンプレート | @docs/template/設計.md | 編集禁止。コピーして使用する |
|
|
18
|
+
| 入力 | @docs/requirements/requirements_definition.md | 要件定義 |
|
|
19
|
+
| 入力 | @docs/requirements/business_usecase.md | ビジネスユースケース |
|
|
20
|
+
| 入力 | @docs/requirements/system_usecase.md | システムユースケース |
|
|
21
|
+
| 入力 | @docs/requirements/user_story.md | ユーザーストーリー |
|
|
22
|
+
| 成果物 | `docs/design/architecture_backend.md` | バックエンドアーキテクチャ |
|
|
23
|
+
| 成果物 | `docs/design/architecture_frontend.md` | フロントエンドアーキテクチャ |
|
|
24
|
+
| 成果物 | `docs/design/architecture_infrastructure.md` | インフラストラクチャアーキテクチャ |
|
|
15
25
|
|
|
16
|
-
|
|
26
|
+
## バックエンドアーキテクチャ設計
|
|
17
27
|
|
|
18
|
-
|
|
19
|
-
- @docs/requirements/business_usecase.md - ビジネスユースケース
|
|
20
|
-
- @docs/requirements/system_usecase.md - システムユースケース
|
|
21
|
-
- @docs/requirements/user_story.md - ユーザーストーリー
|
|
28
|
+
業務ロジックの複雑さに応じてパターンを選択する。単純な CRUD ならレイヤードで十分だが、ドメインが複雑な場合はヘキサゴナルやクリーンアーキテクチャを採用せよ。
|
|
22
29
|
|
|
23
|
-
|
|
30
|
+
- **アーキテクチャパターンの選択**: レイヤード、ヘキサゴナル、クリーン等から要件に最適なものを選定する
|
|
31
|
+
- **CQRS/イベントソーシングの適用判断**: 読み書きの特性が大きく異なる場合に検討する。過剰適用は複雑さを増すだけなので慎重に判断せよ
|
|
32
|
+
- **API 設計方針**: REST/GraphQL/gRPC の選択基準を明確にする
|
|
24
33
|
|
|
25
|
-
|
|
26
|
-
- @docs/design/architecture_frontend.md - フロントエンドアーキテクチャ
|
|
27
|
-
- @docs/design/architecture_infrastructure.md - インフラストラクチャアーキテクチャ
|
|
34
|
+
## フロントエンドアーキテクチャ設計
|
|
28
35
|
|
|
29
|
-
|
|
36
|
+
ユーザー体験とチームのスキルセットを考慮して設計する。フレームワーク選定はプロジェクト全体に影響するため、ADR で判断根拠を残せ。
|
|
30
37
|
|
|
31
|
-
|
|
38
|
+
- **フレームワーク選定**: プロジェクト要件に合ったフレームワークを選択する
|
|
39
|
+
- **状態管理パターン**: アプリケーションの状態の複雑さに応じて適切なパターンを選定する
|
|
40
|
+
- **コンポーネント設計方針**: 再利用性と保守性を両立する設計指針を定める
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
- CQRS/イベントソーシングの適用判断
|
|
35
|
-
- API 設計方針
|
|
42
|
+
## インフラストラクチャアーキテクチャ設計
|
|
36
43
|
|
|
37
|
-
|
|
44
|
+
非機能要件(可用性・スケーラビリティ)を実現するインフラ構成を設計する。運用コストとの兼ね合いも考慮せよ。
|
|
38
45
|
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
46
|
+
- **クラウド/オンプレミス選定**: コスト・セキュリティ・運用負荷を総合的に判断する
|
|
47
|
+
- **コンテナ化戦略**: コンテナ化の適用範囲とオーケストレーション方式を決定する
|
|
48
|
+
- **CI/CD パイプライン設計**: ビルド・テスト・デプロイの自動化方針を定める
|
|
42
49
|
|
|
43
|
-
|
|
50
|
+
## 作成の進め方
|
|
44
51
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
52
|
+
1. 入力ドキュメント(要件定義、ユースケース、ユーザーストーリー)を確認する。なければ基本情報をヒアリングする
|
|
53
|
+
2. @docs/reference/アーキテクチャ設計ガイド.md を読み込む
|
|
54
|
+
3. バックエンド→フロントエンド→インフラの順に設計する。各アーキテクチャの選定理由を明記せよ
|
|
55
|
+
4. 重要な設計判断は ADR(Architecture Decision Record)で記録する
|
|
48
56
|
|
|
49
|
-
|
|
57
|
+
## 途中から再開する場合
|
|
50
58
|
|
|
51
|
-
|
|
52
|
-
- **制限事項**: アーキテクチャ決定は ADR(Architecture Decision Record)で記録すること
|
|
53
|
-
- **推奨事項**: 業務の複雑さとチームのスキルセットを考慮して選択する
|
|
59
|
+
既存の `docs/design/architecture_*.md` がある場合は、まずその内容を確認する。不足している領域や更新が必要な部分のみを修正する。
|
|
54
60
|
|
|
55
|
-
|
|
61
|
+
**Example:**
|
|
56
62
|
|
|
57
|
-
タスク項目などは一行開けて記述する。
|
|
58
|
-
|
|
59
|
-
OK:
|
|
60
|
-
|
|
61
|
-
```markdown
|
|
62
|
-
**受入条件**:
|
|
63
|
-
|
|
64
|
-
- [ ] ログアウトボタンをクリックするとログアウトできる
|
|
65
|
-
- [ ] ログアウト後、ログイン画面に遷移する
|
|
66
63
|
```
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
**受入条件**:
|
|
72
|
-
- [ ] ログアウトボタンをクリックするとログアウトできる
|
|
73
|
-
- [ ] ログアウト後、ログイン画面に遷移する
|
|
64
|
+
ユーザー: 「バックエンドはクリーンアーキテクチャで決めた。フロントエンドを設計したい」
|
|
65
|
+
回答: 既存の architecture_backend.md を確認し、
|
|
66
|
+
バックエンドの API 設計方針を踏まえてフロントエンドアーキテクチャ設計に進む。
|
|
67
|
+
フレームワーク選定→状態管理→コンポーネント設計の順で作成する。
|
|
74
68
|
```
|
|
75
69
|
|
|
76
|
-
##
|
|
77
|
-
|
|
78
|
-
### 要件に基づくアーキテクチャ設計
|
|
70
|
+
## 注意事項
|
|
79
71
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
72
|
+
- 要件定義とユースケースが完了していることが前提。未完了でもプロジェクト情報から進めて構わない
|
|
73
|
+
- アーキテクチャ決定は必ず ADR で記録する。「なぜその選択をしたか」が後で最も重要になる
|
|
74
|
+
- 業務の複雑さとチームのスキルセットを考慮して選択する。技術的に「正しい」選択よりチームが運用できる選択を優先せよ
|
|
75
|
+
- タスク項目(リスト)の前には空行を入れる(Markdown Lint 準拠)
|
|
83
76
|
|
|
84
|
-
|
|
77
|
+
## 関連スキル
|
|
85
78
|
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
- `orchestrating-analysis` — 分析フェーズ全体のワークフロー案内
|
|
80
|
+
- `analyzing-requirements` — 前段の要件定義
|
|
81
|
+
- `analyzing-domain-model` — 後続のドメインモデル設計
|
|
82
|
+
- `analyzing-data-model` — 後続のデータモデル設計
|
|
83
|
+
- `analyzing-tech-stack` — 後続の技術スタック選定
|
|
@@ -1,117 +1,95 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: analyzing-business
|
|
3
|
-
description:
|
|
3
|
+
description: ビジネスアーキテクチャ分析を支援。要件定義の前段階として、ビジネスモデルキャンバス、バリューストリーム、ケイパビリティマップ、組織マップ、情報マップ、ビジネスシナリオを作成。「ビジネスモデルを整理したい」「バリューストリームを描きたい」「ケイパビリティマップを作りたい」「事業構造を分析したい」といった場面で発動する。ビジネスの全体像を理解してからシステム要件に落とし込むことで、本当に必要な機能を見極められる。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# ビジネスアーキテクチャ分析
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
エンタープライズがどのように価値を生み出し、顧客に提供するかの構造を体系的に整理する。この分析は要件定義の前段階として行い、成果物は後続の `analyzing-requirements`(要件定義)や `analyzing-usecases`(ユースケース分析)の入力になる。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
ビジネスの構造を先に理解することで、「何を作るか」ではなく「なぜ作るか」からシステムを設計でき、本当に価値のある機能に集中できる。
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## 参照ドキュメント
|
|
13
13
|
|
|
14
|
-
- @docs/reference/ビジネスアーキテクチャ分析ガイド.md
|
|
14
|
+
- @docs/reference/ビジネスアーキテクチャ分析ガイド.md — 分析手法とフレームワークの詳細。各成果物の作成方法はこのガイドに従う。
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
## テンプレートと成果物
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
| 種類 | パス | 備考 |
|
|
19
|
+
|------|------|------|
|
|
20
|
+
| テンプレート | @docs/template/ビジネスアーキテクチャ.md | 編集禁止。コピーして使用する |
|
|
21
|
+
| 成果物 | `docs/analysis/business_architecture.md` | テンプレートを基に作成 |
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
## 分析の進め方
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
- ステークホルダーからのヒアリング情報
|
|
25
|
+
以下の順序で進める。各ステップの出力が次のステップの入力になるため、この順序を守ることで整合性の高い分析ができる。
|
|
24
26
|
|
|
25
|
-
###
|
|
27
|
+
### 1. プリンシプルの定義
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
ビジョン・ミッション・価値観に基づく方針を最初に固める。プリンシプルが曖昧だと、後続の分析で判断軸がブレる。
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
- **ガイディングプリンシプル**: ビジネス・アプリケーション・データ・テクノロジーの各アーキテクチャに対する方針
|
|
32
|
+
- **ビジネスプリンシプル**: ビジネスにおける原則原理
|
|
30
33
|
|
|
31
|
-
|
|
34
|
+
### 2. ビジネスモデルの整理
|
|
32
35
|
|
|
33
|
-
|
|
34
|
-
- ビジネスプリンシプル(ビジネスにおける原則原理)の定義
|
|
36
|
+
ビジネスモデルキャンバスを作成し、ビジネスの全体構造を 9 つの要素で可視化する。
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
- 顧客セグメント、価値提案、チャネル、顧客関係
|
|
39
|
+
- 主要活動、主要リソース、主要パートナー
|
|
40
|
+
- 収益源、コスト構造
|
|
37
41
|
|
|
38
|
-
|
|
39
|
-
- 顧客セグメント、価値提案、チャネル、顧客関係の整理
|
|
40
|
-
- 主要活動、主要リソース、主要パートナーの特定
|
|
41
|
-
- 収益源、コスト構造の明確化
|
|
42
|
+
### 3. バリューストリームの設計
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
価値がどのように流れるかを可視化する。バリューストリームはケイパビリティモデルの土台になるため、ケイパビリティより先に作成する。
|
|
44
45
|
|
|
45
46
|
- バリュー(価値)の分析
|
|
46
47
|
- バリューストリームマップの作成
|
|
47
48
|
- 各ステージでの価値増加の可視化
|
|
48
49
|
|
|
49
|
-
|
|
50
|
+
### 4. ケイパビリティモデルの構築
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
- ケイパビリティの階層化とレベリング
|
|
53
|
-
- ヒートマッピングによる成熟度評価
|
|
54
|
-
- ケイパビリティとバリューストリームのマッピング
|
|
55
|
-
|
|
56
|
-
#### 組織マップの作成
|
|
57
|
-
|
|
58
|
-
- 部門・組織構造の整理
|
|
59
|
-
- 組織とケイパビリティの対応付け
|
|
52
|
+
組織が持つ能力を体系的に整理する。バリューストリームの各ステージに必要なケイパビリティを紐付けることで、どの能力に投資すべきかが見える。
|
|
60
53
|
|
|
61
|
-
|
|
54
|
+
- ケイパビリティの特定(戦略・コア・サポート)
|
|
55
|
+
- 階層化とレベリング
|
|
56
|
+
- ヒートマッピングによる成熟度評価
|
|
57
|
+
- バリューストリームとのマッピング
|
|
62
58
|
|
|
63
|
-
|
|
64
|
-
- エンティティ間のリレーション整理
|
|
59
|
+
### 5. 組織マップの作成
|
|
65
60
|
|
|
66
|
-
|
|
61
|
+
部門・組織構造を整理し、ケイパビリティとの対応付けを行う。
|
|
67
62
|
|
|
68
|
-
|
|
69
|
-
- ビジネス・技術環境のモデル化
|
|
70
|
-
- ゴールと期待する結果の定義
|
|
71
|
-
- ヒューマンアクター・コンピュータアクターの特定
|
|
63
|
+
### 6. 情報マップの作成
|
|
72
64
|
|
|
73
|
-
|
|
65
|
+
ビジネスエンティティを特定し、エンティティ間のリレーションを整理する。後続のデータモデル設計の基礎になる。
|
|
74
66
|
|
|
75
|
-
|
|
76
|
-
- **制限事項**: ビジネスアーキテクチャの決定は ADR で記録すること
|
|
77
|
-
- **推奨事項**: バリューストリームを先に作成し、その後ケイパビリティモデルを構築する
|
|
67
|
+
### 7. ビジネスシナリオの策定
|
|
78
68
|
|
|
79
|
-
|
|
69
|
+
問題を特定・文書化し、ゴールと期待する結果を定義する。ヒューマンアクター・コンピュータアクターを特定し、後続のユースケース分析の入力とする。
|
|
80
70
|
|
|
81
|
-
|
|
71
|
+
## 途中から再開する場合
|
|
82
72
|
|
|
83
|
-
|
|
73
|
+
既存の `docs/analysis/business_architecture.md` がある場合は、まずその内容を確認する。完了済みのセクションはスキップし、未着手または更新が必要なセクションから再開する。
|
|
84
74
|
|
|
85
|
-
|
|
86
|
-
**受入条件**:
|
|
75
|
+
**Example:**
|
|
87
76
|
|
|
88
|
-
- [ ] ビジネスモデルキャンバスが作成されている
|
|
89
|
-
- [ ] バリューストリームマップが作成されている
|
|
90
77
|
```
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
```markdown
|
|
95
|
-
**受入条件**:
|
|
96
|
-
- [ ] ビジネスモデルキャンバスが作成されている
|
|
97
|
-
- [ ] バリューストリームマップが作成されている
|
|
78
|
+
ユーザー: 「ビジネスモデルキャンバスは作った。次は?」
|
|
79
|
+
回答: バリューストリームの設計に進む。ビジネスモデルキャンバスで特定した
|
|
80
|
+
主要活動を基に、価値の流れを可視化する。
|
|
98
81
|
```
|
|
99
82
|
|
|
100
|
-
##
|
|
101
|
-
|
|
102
|
-
### 新規プロジェクトでビジネスアーキテクチャを設計
|
|
103
|
-
|
|
104
|
-
1. プロジェクトの基本情報とビジネス概要を確認
|
|
105
|
-
2. @docs/reference/ビジネスアーキテクチャ分析ガイド.md に基づいて分析
|
|
106
|
-
3. ビジネスモデルキャンバス → バリューストリーム → ケイパビリティモデルの順に作成
|
|
107
|
-
|
|
108
|
-
### 既存ビジネスの分析・改善
|
|
83
|
+
## 注意事項
|
|
109
84
|
|
|
110
|
-
|
|
111
|
-
|
|
85
|
+
- プロジェクトの基本情報(ビジョン、ミッション、ビジネス概要)が提供されていることを確認してから分析を開始する
|
|
86
|
+
- ビジネスアーキテクチャの重要な決定は ADR(`creating-adr`)で記録する
|
|
87
|
+
- 成果物は PlantUML を活用して視覚的に文書化する
|
|
88
|
+
- タスク項目(リスト)の前には空行を入れる(Markdown Lint 準拠)
|
|
112
89
|
|
|
113
|
-
|
|
90
|
+
## 関連スキル
|
|
114
91
|
|
|
115
|
-
- `analyzing-requirements`
|
|
116
|
-
- `analyzing-usecases`
|
|
117
|
-
- `analyzing-architecture`
|
|
92
|
+
- `analyzing-requirements` — 後続の要件定義(本スキルの成果物が入力)
|
|
93
|
+
- `analyzing-usecases` — 後続のビジネスユースケース詳細化
|
|
94
|
+
- `analyzing-architecture` — 後続のシステムアーキテクチャ設計への橋渡し
|
|
95
|
+
- `orchestrating-analysis` — 分析フェーズ全体のワークフロー案内
|
|
@@ -1,80 +1,77 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: analyzing-data-model
|
|
3
|
-
description:
|
|
3
|
+
description: PlantUML の ER 図を使用したデータモデル設計を支援。概念→論理データモデルの段階的設計とテーブル定義。「データモデルを設計したい」「ER 図を作りたい」「テーブル定義を作成したい」「データベース設計を始めたい」「正規化を検討したい」といった場面で発動する。データモデルを先に設計することで、実装時のテーブル設計の手戻りを防ぐ。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# データモデル設計
|
|
7
7
|
|
|
8
|
-
PlantUML の ER
|
|
8
|
+
PlantUML の ER 図を使用して、概念データモデル→論理データモデルの順でデータモデルを設計する。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
データモデルはシステムの「記憶」を定義する設計。ドメインモデルが業務ロジックの構造を表すのに対し、データモデルはデータの永続化構造を定義する。両者の整合性がシステム全体の一貫性を保証する。
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## 参照ドキュメントとテンプレート
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
| 種類 | パス | 備考 |
|
|
15
|
+
|------|------|------|
|
|
16
|
+
| ガイド | @docs/reference/データモデル設計ガイド.md | データモデル設計の進め方詳細 |
|
|
17
|
+
| テンプレート | @docs/template/設計.md | 編集禁止。コピーして使用する |
|
|
18
|
+
| 入力 | @docs/requirements/requirements_definition.md | 要件定義 |
|
|
19
|
+
| 入力 | @docs/requirements/business_usecase.md | ビジネスユースケース |
|
|
20
|
+
| 入力 | @docs/requirements/system_usecase.md | システムユースケース |
|
|
21
|
+
| 入力 | @docs/requirements/user_story.md | ユーザーストーリー |
|
|
22
|
+
| 入力 | @docs/design/architecture_backend.md | バックエンドアーキテクチャ |
|
|
23
|
+
| 入力 | @docs/design/architecture_frontend.md | フロントエンドアーキテクチャ |
|
|
24
|
+
| 成果物 | `docs/design/data-model.md` | データモデル設計 |
|
|
15
25
|
|
|
16
|
-
|
|
26
|
+
## 概念データモデル作成
|
|
17
27
|
|
|
18
|
-
|
|
19
|
-
- @docs/requirements/business_usecase.md - ビジネスユースケース
|
|
20
|
-
- @docs/requirements/system_usecase.md - システムユースケース
|
|
21
|
-
- @docs/requirements/user_story.md - ユーザーストーリー
|
|
22
|
-
- @docs/design/architecture_backend.md - バックエンドアーキテクチャ
|
|
23
|
-
- @docs/design/architecture_frontend.md - フロントエンドアーキテクチャ
|
|
28
|
+
業務の言葉でエンティティとリレーションシップを識別する。この段階では物理的な実装を考えない。ユースケースの「名詞」がエンティティ候補になる。
|
|
24
29
|
|
|
25
|
-
|
|
30
|
+
- **エンティティの識別**: ユースケースとユーザーストーリーから管理対象を抽出する
|
|
31
|
+
- **リレーションシップの定義**: エンティティ間の関係(1:1、1:N、N:N)を明確にする
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
## 論理データモデル作成
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
概念モデルを具体的なテーブル構造に落とし込む。正規化は第 3 正規形を基本とし、パフォーマンス要件に応じて非正規化を検討せよ。
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
- **テーブル定義**: カラム名、データ型、制約を定義する
|
|
38
|
+
- **主キー・外部キーの設計**: 識別子の戦略(自然キー/サロゲートキー)を決定する
|
|
39
|
+
- **正規化の適用**: 第 3 正規形まで正規化し、必要に応じて非正規化の判断を記録する
|
|
32
40
|
|
|
33
|
-
|
|
34
|
-
- リレーションシップの定義
|
|
41
|
+
## ER 図作成
|
|
35
42
|
|
|
36
|
-
|
|
43
|
+
PlantUML を使用して ER 図を作成する。テーブル間の関係を可視化することで、設計レビューの効率が上がる。
|
|
37
44
|
|
|
38
|
-
|
|
39
|
-
- 主キー・外部キーの設計
|
|
40
|
-
- 正規化の適用
|
|
45
|
+
## 作成の進め方
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
1. 入力ドキュメント(要件定義、アーキテクチャ設計)を確認する
|
|
48
|
+
2. @docs/reference/データモデル設計ガイド.md を読み込む
|
|
49
|
+
3. 概念データモデル→論理データモデルの順に作成する
|
|
50
|
+
4. ドメインモデルとの整合性を確認しながら `docs/design/data-model.md` として出力する
|
|
43
51
|
|
|
44
|
-
|
|
45
|
-
- テーブル間の関係の可視化
|
|
52
|
+
## 途中から再開する場合
|
|
46
53
|
|
|
47
|
-
|
|
54
|
+
既存の `docs/design/data-model.md` がある場合は、まずその内容を確認する。不足しているエンティティや更新が必要なリレーションシップのみを修正する。
|
|
48
55
|
|
|
49
|
-
|
|
50
|
-
- **制限事項**: PlantUML の ER 図を使用すること
|
|
51
|
-
- **推奨事項**: ドメインモデルとの整合性を確認しながら設計する
|
|
56
|
+
**Example:**
|
|
52
57
|
|
|
53
|
-
### 6. 記述ルール
|
|
54
|
-
|
|
55
|
-
タスク項目などは一行開けて記述する。
|
|
56
|
-
|
|
57
|
-
OK:
|
|
58
|
-
|
|
59
|
-
```markdown
|
|
60
|
-
**受入条件**:
|
|
61
|
-
|
|
62
|
-
- [ ] テーブル定義が完了している
|
|
63
|
-
- [ ] ER 図が作成されている
|
|
64
58
|
```
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
**受入条件**:
|
|
70
|
-
- [ ] テーブル定義が完了している
|
|
71
|
-
- [ ] ER 図が作成されている
|
|
59
|
+
ユーザー: 「概念モデルはできた。論理モデルを作りたい」
|
|
60
|
+
回答: 既存の data-model.md の概念データモデルを確認し、
|
|
61
|
+
各エンティティのテーブル定義(カラム・データ型・制約)を作成する。
|
|
62
|
+
主キー・外部キーの設計を行い、ER 図を PlantUML で更新する。
|
|
72
63
|
```
|
|
73
64
|
|
|
74
|
-
##
|
|
65
|
+
## 注意事項
|
|
66
|
+
|
|
67
|
+
- 要件定義とアーキテクチャ設計が完了していることが前提。未完了でも進めて構わない
|
|
68
|
+
- ER 図は必ず PlantUML で作成する。テキストベースの図はバージョン管理と差分レビューに適している
|
|
69
|
+
- ドメインモデルとの整合性を常に確認する。データモデルとドメインモデルの乖離は実装時の混乱を招く
|
|
70
|
+
- タスク項目(リスト)の前には空行を入れる(Markdown Lint 準拠)
|
|
75
71
|
|
|
76
|
-
|
|
72
|
+
## 関連スキル
|
|
77
73
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
- `orchestrating-analysis` — 分析フェーズ全体のワークフロー案内
|
|
75
|
+
- `analyzing-architecture` — 前段のアーキテクチャ設計
|
|
76
|
+
- `analyzing-domain-model` — 並行して進めるドメインモデル設計
|
|
77
|
+
- `analyzing-tech-stack` — 後続の技術スタック選定(DB 選定に影響)
|
|
@@ -1,88 +1,88 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: analyzing-domain-model
|
|
3
|
-
description:
|
|
3
|
+
description: DDD の戦術的設計パターンに基づくドメインモデル設計を支援。エンティティ、値オブジェクト、集約、ドメインサービスの設計。「ドメインモデルを設計したい」「DDD で設計したい」「集約を定義したい」「エンティティと値オブジェクトを識別したい」「ユビキタス言語を整理したい」といった場面で発動する。ドメインモデルを先に設計することで、業務ロジックが実装コードに正しく反映される。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# ドメインモデル設計
|
|
7
7
|
|
|
8
|
-
DDD
|
|
8
|
+
DDD(ドメイン駆動設計)の戦術的設計パターンに基づき、エンティティ・値オブジェクト・集約・ドメインサービスを設計する。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
ドメインモデルの価値は、業務の専門家と開発者が同じ言葉(ユビキタス言語)で会話できるようになること。モデルとコードが一致することで、「仕様と実装の乖離」という根本的な問題を解消する。
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## 参照ドキュメントとテンプレート
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
| 種類 | パス | 備考 |
|
|
15
|
+
|------|------|------|
|
|
16
|
+
| ガイド | @docs/reference/ドメインモデル設計ガイド.md | ドメインモデル設計の進め方詳細 |
|
|
17
|
+
| テンプレート | @docs/template/設計.md | 編集禁止。コピーして使用する |
|
|
18
|
+
| 入力 | @docs/requirements/requirements_definition.md | 要件定義 |
|
|
19
|
+
| 入力 | @docs/requirements/business_usecase.md | ビジネスユースケース |
|
|
20
|
+
| 入力 | @docs/requirements/system_usecase.md | システムユースケース |
|
|
21
|
+
| 入力 | @docs/requirements/user_story.md | ユーザーストーリー |
|
|
22
|
+
| 入力 | @docs/design/architecture_backend.md | バックエンドアーキテクチャ |
|
|
23
|
+
| 入力 | @docs/design/architecture_frontend.md | フロントエンドアーキテクチャ |
|
|
24
|
+
| 成果物 | `docs/design/domain-model.md` | ドメインモデル設計 |
|
|
15
25
|
|
|
16
|
-
|
|
26
|
+
## エンティティ定義
|
|
17
27
|
|
|
18
|
-
|
|
19
|
-
- @docs/requirements/business_usecase.md - ビジネスユースケース
|
|
20
|
-
- @docs/requirements/system_usecase.md - システムユースケース
|
|
21
|
-
- @docs/requirements/user_story.md - ユーザーストーリー
|
|
22
|
-
- @docs/design/architecture_backend.md - バックエンドアーキテクチャ
|
|
23
|
-
- @docs/design/architecture_frontend.md - フロントエンドアーキテクチャ
|
|
28
|
+
ライフサイクルを持ち、識別子で区別されるドメインオブジェクトを識別する。「同じ属性値でも別のものとして扱う必要がある」ものがエンティティ。
|
|
24
29
|
|
|
25
|
-
|
|
30
|
+
- **ライフサイクルを持つドメインオブジェクトの識別**: ユースケースの動詞(作成・更新・削除)の対象がエンティティ候補
|
|
31
|
+
- **識別子の設計**: 自然キーかサロゲートキーかを決定する。ドメイン的に意味のある識別子があれば自然キーを優先せよ
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
## 値オブジェクト定義
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
不変で識別子を持たないドメインオブジェクトを識別する。「属性値が同じなら同じもの」として扱えるものが値オブジェクト。プリミティブ型の代わりに値オブジェクトを使うことで、バリデーションとドメイン知識をカプセル化する。
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
- **不変オブジェクトの識別**: 金額、メールアドレス、住所などの業務概念を値オブジェクト化する
|
|
38
|
+
- **バリデーションルールの定義**: 生成時にバリデーションを行い、不正な状態の値オブジェクトが存在できないようにする
|
|
32
39
|
|
|
33
|
-
|
|
34
|
-
- 識別子の設計
|
|
40
|
+
## 集約の設計
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
トランザクション整合性の境界を定義する。集約が大きすぎると競合が発生し、小さすぎると整合性が保てない。適切な境界の見極めが最も重要。
|
|
37
43
|
|
|
38
|
-
-
|
|
39
|
-
-
|
|
44
|
+
- **集約ルートの識別**: 外部からのアクセスポイントとなるエンティティを決定する
|
|
45
|
+
- **集約境界の定義**: トランザクション整合性が必要な範囲を最小限にせよ
|
|
46
|
+
- **不変条件の設計**: 集約内で常に満たすべきビジネスルールを明確にする
|
|
40
47
|
|
|
41
|
-
|
|
48
|
+
## ドメインサービス定義
|
|
42
49
|
|
|
43
|
-
|
|
44
|
-
- 集約境界の定義
|
|
45
|
-
- 不変条件の設計
|
|
50
|
+
エンティティにも値オブジェクトにも属さないビジネスロジックを識別する。ドメインサービスは動詞で命名し、ステートレスに保て。
|
|
46
51
|
|
|
47
|
-
|
|
52
|
+
## ダイアグラム作成
|
|
48
53
|
|
|
49
|
-
|
|
54
|
+
PlantUML を使用してクラス図・オブジェクト図を作成する。図はコードと同様にバージョン管理し、設計の変更を追跡可能にせよ。
|
|
50
55
|
|
|
51
|
-
|
|
56
|
+
## 作成の進め方
|
|
52
57
|
|
|
53
|
-
|
|
58
|
+
1. 入力ドキュメント(要件定義、ユースケース、アーキテクチャ設計)を確認する
|
|
59
|
+
2. @docs/reference/ドメインモデル設計ガイド.md を読み込む
|
|
60
|
+
3. ユビキタス言語の用語集を作成し、エンティティ→値オブジェクト→集約→ドメインサービスの順に設計する
|
|
61
|
+
4. `docs/design/domain-model.md` として出力する
|
|
54
62
|
|
|
55
|
-
|
|
63
|
+
## 途中から再開する場合
|
|
56
64
|
|
|
57
|
-
-
|
|
58
|
-
- **制限事項**: PlantUML を使用してダイアグラムを作成すること
|
|
59
|
-
- **推奨事項**: ユビキタス言語を使用してドメインエキスパートと共通認識を持つ
|
|
65
|
+
既存の `docs/design/domain-model.md` がある場合は、まずその内容を確認する。不足しているドメインオブジェクトや集約境界の見直しが必要な部分のみを修正する。
|
|
60
66
|
|
|
61
|
-
|
|
67
|
+
**Example:**
|
|
62
68
|
|
|
63
|
-
タスク項目などは一行開けて記述する。
|
|
64
|
-
|
|
65
|
-
OK:
|
|
66
|
-
|
|
67
|
-
```markdown
|
|
68
|
-
**受入条件**:
|
|
69
|
-
|
|
70
|
-
- [ ] エンティティが定義されている
|
|
71
|
-
- [ ] 集約境界が明確である
|
|
72
69
|
```
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
**受入条件**:
|
|
78
|
-
- [ ] エンティティが定義されている
|
|
79
|
-
- [ ] 集約境界が明確である
|
|
70
|
+
ユーザー: 「エンティティは識別した。集約の境界を決めたい」
|
|
71
|
+
回答: 既存の domain-model.md のエンティティ一覧を確認し、
|
|
72
|
+
トランザクション整合性が必要な範囲を分析して集約境界を定義する。
|
|
73
|
+
集約ルートを決定し、不変条件を明記する。
|
|
80
74
|
```
|
|
81
75
|
|
|
82
|
-
##
|
|
76
|
+
## 注意事項
|
|
77
|
+
|
|
78
|
+
- 要件定義とアーキテクチャ設計が完了していることが前提。未完了でも進めて構わない
|
|
79
|
+
- ダイアグラムは必ず PlantUML で作成する
|
|
80
|
+
- ユビキタス言語を使用してドメインエキスパートと共通認識を持つ。コード上のクラス名・メソッド名もユビキタス言語に合わせよ
|
|
81
|
+
- タスク項目(リスト)の前には空行を入れる(Markdown Lint 準拠)
|
|
83
82
|
|
|
84
|
-
|
|
83
|
+
## 関連スキル
|
|
85
84
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
- `orchestrating-analysis` — 分析フェーズ全体のワークフロー案内
|
|
86
|
+
- `analyzing-architecture` — 前段のアーキテクチャ設計
|
|
87
|
+
- `analyzing-data-model` — 並行して進めるデータモデル設計
|
|
88
|
+
- `analyzing-usecases` — 入力となるユースケース・ユーザーストーリー
|