@k2works/claude-code-booster 0.1.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/LICENSE +21 -0
- package/README.md +28 -0
- package/bin/claude-code-booster +28 -0
- package/lib/assets/.claude/.mcp.json +45 -0
- package/lib/assets/.claude/README.md +169 -0
- package/lib/assets/.claude/agents/roles/analyzer.md +267 -0
- package/lib/assets/.claude/agents/roles/architect.md +233 -0
- package/lib/assets/.claude/agents/roles/backend.md +303 -0
- package/lib/assets/.claude/agents/roles/frontend.md +294 -0
- package/lib/assets/.claude/agents/roles/mobile.md +309 -0
- package/lib/assets/.claude/agents/roles/performance.md +254 -0
- package/lib/assets/.claude/agents/roles/qa.md +266 -0
- package/lib/assets/.claude/agents/roles/reviewer.md +252 -0
- package/lib/assets/.claude/agents/roles/security.md +392 -0
- package/lib/assets/.claude/assets/confirm.mp3 +0 -0
- package/lib/assets/.claude/assets/perfect.mp3 +0 -0
- package/lib/assets/.claude/assets/silent.wav +0 -0
- package/lib/assets/.claude/commands/analyze-dependencies.md +158 -0
- package/lib/assets/.claude/commands/analyze-performance.md +116 -0
- package/lib/assets/.claude/commands/check-fact.md +104 -0
- package/lib/assets/.claude/commands/check-github-ci.md +53 -0
- package/lib/assets/.claude/commands/check-prompt.md +461 -0
- package/lib/assets/.claude/commands/commit-message.md +348 -0
- package/lib/assets/.claude/commands/context7.md +50 -0
- package/lib/assets/.claude/commands/design-patterns.md +186 -0
- package/lib/assets/.claude/commands/explain-code.md +75 -0
- package/lib/assets/.claude/commands/fix-error.md +258 -0
- package/lib/assets/.claude/commands/multi-role.md +291 -0
- package/lib/assets/.claude/commands/plan.md +134 -0
- package/lib/assets/.claude/commands/pr-auto-update.md +460 -0
- package/lib/assets/.claude/commands/pr-create.md +249 -0
- package/lib/assets/.claude/commands/pr-feedback.md +143 -0
- package/lib/assets/.claude/commands/pr-issue.md +78 -0
- package/lib/assets/.claude/commands/pr-list.md +66 -0
- package/lib/assets/.claude/commands/pr-review.md +142 -0
- package/lib/assets/.claude/commands/refactor.md +147 -0
- package/lib/assets/.claude/commands/role-debate.md +571 -0
- package/lib/assets/.claude/commands/role-help.md +276 -0
- package/lib/assets/.claude/commands/role.md +360 -0
- package/lib/assets/.claude/commands/screenshot.md +103 -0
- package/lib/assets/.claude/commands/search-gemini.md +66 -0
- package/lib/assets/.claude/commands/semantic-commit.md +1129 -0
- package/lib/assets/.claude/commands/sequential-thinking.md +90 -0
- package/lib/assets/.claude/commands/show-plan.md +59 -0
- package/lib/assets/.claude/commands/smart-review.md +174 -0
- package/lib/assets/.claude/commands/spec.md +559 -0
- package/lib/assets/.claude/commands/style-ai-writing.md +186 -0
- package/lib/assets/.claude/commands/task.md +223 -0
- package/lib/assets/.claude/commands/tech-debt.md +87 -0
- package/lib/assets/.claude/commands/ultrathink.md +65 -0
- package/lib/assets/.claude/commands/update-dart-doc.md +202 -0
- package/lib/assets/.claude/commands/update-doc-string.md +306 -0
- package/lib/assets/.claude/commands/update-flutter-deps.md +105 -0
- package/lib/assets/.claude/commands/update-node-deps.md +105 -0
- package/lib/assets/.claude/commands/update-rust-deps.md +107 -0
- package/lib/assets/.claude/scripts/auto-comment.sh +16 -0
- package/lib/assets/.claude/scripts/check-ai-commit.sh +20 -0
- package/lib/assets/.claude/scripts/check-continue.sh +97 -0
- package/lib/assets/.claude/scripts/check-locales.sh +1080 -0
- package/lib/assets/.claude/scripts/check-project-plan.sh +25 -0
- package/lib/assets/.claude/scripts/debug-hook.sh +7 -0
- package/lib/assets/.claude/scripts/deny-check.sh +69 -0
- package/lib/assets/.claude/scripts/install.sh +174 -0
- package/lib/assets/.claude/scripts/ja-space-exclusions.json +18 -0
- package/lib/assets/.claude/scripts/ja-space-format.sh +45 -0
- package/lib/assets/.claude/scripts/preserve-file-permissions.sh +83 -0
- package/lib/assets/.claude/scripts/statusline.sh +153 -0
- package/lib/assets/.claude/settings.json +164 -0
- package/lib/assets/.claude/settings.local.json +14 -0
- package/lib/assets/.github/workflows/mkdocs.yml +32 -0
- package/lib/assets/CLAUDE.md +319 -0
- package/lib/assets/Dockerfile +77 -0
- package/lib/assets/README.md +51 -0
- package/lib/assets/app/.gitkeep +0 -0
- package/lib/assets/docker-compose.yml +22 -0
- package/lib/assets/docs/Dockerfile +19 -0
- package/lib/assets/docs/adr/.gitkeep +0 -0
- package/lib/assets/docs/assets/css/extra.css +30 -0
- package/lib/assets/docs/assets/js/extra.js +45 -0
- package/lib/assets/docs/design/.gitkeep +0 -0
- package/lib/assets/docs/development/.gitkeep +0 -0
- package/lib/assets/docs/index.md +13 -0
- package/lib/assets/docs/operation/.gitkeep +0 -0
- package/lib/assets/docs/reference/.gitkeep +0 -0
- package/lib/assets/docs/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +220 -0
- package/lib/assets/docs/reference//343/202/242/343/202/270/343/203/243/343/202/244/343/203/253/343/201/252/350/246/213/347/251/215/343/201/250/350/250/210/347/224/273/343/201/245/343/201/217/343/202/212.md +789 -0
- package/lib/assets/docs/reference//343/202/250/343/202/257/343/202/271/343/203/210/343/203/252/343/203/274/343/203/240/343/203/227/343/203/255/343/202/260/343/203/251/343/203/237/343/203/263/343/202/260.md +554 -0
- package/lib/assets/docs/reference//350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1249 -0
- package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +556 -0
- package/lib/assets/docs/requirements/.gitkeep +0 -0
- package/lib/assets/docs/template/.gitkeep +0 -0
- package/lib/assets/docs/template/ADR.md +30 -0
- package/lib/assets/docs/template/README.md +50 -0
- package/lib/assets/docs/template//343/201/276/343/201/232/343/201/223/343/202/214/343/202/222/350/252/255/343/202/202/343/201/206/343/203/252/343/202/271/343/203/210.md +12 -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/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +59 -0
- package/lib/assets/docs/template//343/202/244/343/203/263/343/202/273/343/203/227/343/202/267/343/203/247/343/203/263/343/203/207/343/203/203/343/202/255.md +13 -0
- package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +646 -0
- package/lib/assets/docs/template//350/250/255/350/250/210.md +164 -0
- package/lib/assets/gulpfile.js +18 -0
- package/lib/assets/mkdocs.yml +59 -0
- package/lib/assets/package-lock.json +3960 -0
- package/lib/assets/package.json +31 -0
- package/lib/assets/scripts/journal.js +170 -0
- package/lib/assets/scripts/mkdocs.js +59 -0
- package/lib/gulpfile.js +37 -0
- package/main.js +0 -0
- package/package.json +39 -0
package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md
ADDED
|
@@ -0,0 +1,556 @@
|
|
|
1
|
+
# 開発ガイド
|
|
2
|
+
|
|
3
|
+
## 開発ライフサイクル
|
|
4
|
+
|
|
5
|
+
分析では、アプリケーションの機能や性能、品質、セキュリティ、運用、保守などの要件をまとめる活動を行います。
|
|
6
|
+
開発では要件を満たすための設計、実装、テストなどの活動を行います。
|
|
7
|
+
運用では、アプリケーションの運用、保守、改善などの活動を行います。
|
|
8
|
+
構築では、アプリケーションの環境設定を行います。
|
|
9
|
+
配置では、アプリケーションのビルドとデプロイを行います。
|
|
10
|
+
これらの活動は相互に影響し合い、連携して行われるため、それぞれの活動において、開発者が守るべき規則やガイドラインをまとめたドキュメントを参照してください。
|
|
11
|
+
|
|
12
|
+
```plantuml
|
|
13
|
+
@startuml
|
|
14
|
+
[*] --> 分析
|
|
15
|
+
分析 --> 開発
|
|
16
|
+
分析 -right-> 運用
|
|
17
|
+
運用 -left-> 分析
|
|
18
|
+
開発 -left-> 分析
|
|
19
|
+
開発 --> 運用
|
|
20
|
+
運用 --> 開発
|
|
21
|
+
運用 --> 配置
|
|
22
|
+
運用 -up-> 構築
|
|
23
|
+
構築 --> 配置
|
|
24
|
+
運用 ---> [*]
|
|
25
|
+
|
|
26
|
+
state 分析 #yellow
|
|
27
|
+
state 構築 #limegreen
|
|
28
|
+
state 運用 #orange
|
|
29
|
+
state 開発 #red
|
|
30
|
+
state 配置 #lightblue
|
|
31
|
+
@enduml
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
アプリケーション開発は、アジャイル開発手法(XP)に基づいて進めます。
|
|
35
|
+
|
|
36
|
+
詳細は [エクストリームプログラミング](エクストリームプログラミング) を参照。
|
|
37
|
+
|
|
38
|
+
## 分析
|
|
39
|
+
|
|
40
|
+
```plantuml
|
|
41
|
+
@startuml "Phase 1"
|
|
42
|
+
|要件定義|
|
|
43
|
+
start
|
|
44
|
+
:要件定義;
|
|
45
|
+
:ユーザーストーリー;
|
|
46
|
+
:ユースケース;
|
|
47
|
+
|
|
48
|
+
|機能要件|
|
|
49
|
+
:アーキテクチャ設計;
|
|
50
|
+
:データモデル設計;
|
|
51
|
+
:ドメインモデル設計;
|
|
52
|
+
:UI設計;
|
|
53
|
+
|
|
54
|
+
|非機能要件|
|
|
55
|
+
:テスト戦略策定;
|
|
56
|
+
:非機能要件定義;
|
|
57
|
+
:運用要件定義;
|
|
58
|
+
|
|
59
|
+
|要件定義|
|
|
60
|
+
:技術スタック選定;
|
|
61
|
+
:ADR作成;
|
|
62
|
+
:リリース計画;
|
|
63
|
+
|
|
64
|
+
stop
|
|
65
|
+
|
|
66
|
+
@enduml
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 要件定義
|
|
70
|
+
|
|
71
|
+
```plantuml
|
|
72
|
+
@startuml
|
|
73
|
+
|
|
74
|
+
title RDRA要件定義の全体構造
|
|
75
|
+
|
|
76
|
+
left to right direction
|
|
77
|
+
|
|
78
|
+
package "システム価値" as sp {
|
|
79
|
+
rectangle "システムコンテキスト" as sc
|
|
80
|
+
rectangle "要求モデル" as rm
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
package "システム外部環境" as se {
|
|
84
|
+
rectangle "ビジネスコンテキスト" as bc
|
|
85
|
+
rectangle "ビジネスユースケース" as buc
|
|
86
|
+
rectangle "業務フロー" as bf
|
|
87
|
+
rectangle "利用シーン" as us
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
package "システム境界" as sb {
|
|
91
|
+
rectangle "ユースケース複合図" as ucc
|
|
92
|
+
rectangle "画面・帳票モデル" as ui
|
|
93
|
+
rectangle "イベントモデル" as em
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
package "システム" as sys {
|
|
97
|
+
rectangle "情報モデル" as im
|
|
98
|
+
rectangle "状態モデル" as sm
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
sp --> se : "価値を実現する\n環境を明確化"
|
|
102
|
+
se --> sb : "環境での\n接点を定義"
|
|
103
|
+
sb --> sys : "接点を実現する\nシステムを設計"
|
|
104
|
+
|
|
105
|
+
sc --> bc : "アクター"
|
|
106
|
+
rm --> buc : "要求"
|
|
107
|
+
buc --> ucc : "ユースケース"
|
|
108
|
+
bf --> ucc : "アクティビティ"
|
|
109
|
+
us --> ucc : "利用シーン"
|
|
110
|
+
ucc --> im : "情報"
|
|
111
|
+
ucc --> sm : "状態"
|
|
112
|
+
|
|
113
|
+
@enduml
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
要件定義の詳細は[要件定義ガイド](要件定義ガイド)を参照
|
|
117
|
+
|
|
118
|
+
### リリース計画
|
|
119
|
+
|
|
120
|
+
```plantuml
|
|
121
|
+
@startuml
|
|
122
|
+
|
|
123
|
+
[*] --> リリース
|
|
124
|
+
|
|
125
|
+
state リリース {
|
|
126
|
+
満足条件1: (ユーザーストーリー、予算、スケジュール)
|
|
127
|
+
満足条件1 -->リリースプランニング
|
|
128
|
+
リリースプランニング --> 満足条件1
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
state イテレーション {
|
|
132
|
+
リリースプランニング --> 満足条件2
|
|
133
|
+
満足条件2: (ユーザーストーリー、予算、スケジュール)
|
|
134
|
+
満足条件2 --> イテレーションプランニング
|
|
135
|
+
イテレーションプランニング --> 満足条件2
|
|
136
|
+
イテレーションプランニング --> 開発
|
|
137
|
+
開発 --> フィーチャが追加された状態
|
|
138
|
+
フィーチャが追加された状態 --> 満足条件2 : フィードバック
|
|
139
|
+
フィーチャが追加された状態 --> 満足条件1 : フィードバック
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
リリース --> [*]
|
|
143
|
+
|
|
144
|
+
@enduml
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
計画づくりの詳細は [アジャイルな見積と計画づくり](アジャイルな見積と計画づくり) を参照。
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
### 機能要件
|
|
151
|
+
|
|
152
|
+
#### アーキテクチャ設計
|
|
153
|
+
|
|
154
|
+
モノレポを標準とする。
|
|
155
|
+
アプリケーションは、バックエンドとフロントエンドの2つの主要コンポーネントで構成されています。
|
|
156
|
+
|
|
157
|
+
##### 全体構成
|
|
158
|
+
|
|
159
|
+
```plantuml
|
|
160
|
+
@startuml
|
|
161
|
+
package "アプリケーション" {
|
|
162
|
+
package "フロントエンド" {
|
|
163
|
+
[Webアプリケーション] as WebApp
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
package "バックエンド" {
|
|
167
|
+
[APIサーバー] as API
|
|
168
|
+
database "データベース" as DB
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
WebApp --> API : HTTP/REST
|
|
172
|
+
API --> DB : SQL/NoSQL
|
|
173
|
+
}
|
|
174
|
+
@endtuml
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
##### パターン
|
|
178
|
+
|
|
179
|
+
```plantuml
|
|
180
|
+
@startuml
|
|
181
|
+
!define DECISION_COLOR #FFE6CC
|
|
182
|
+
!define PROCESS_COLOR #E6F3FF
|
|
183
|
+
!define TERMINAL_COLOR #E6FFE6
|
|
184
|
+
|
|
185
|
+
skinparam roundcorner 10
|
|
186
|
+
skinparam shadowing false
|
|
187
|
+
|
|
188
|
+
start
|
|
189
|
+
|
|
190
|
+
if (業務領域のカテゴリー) then (補完、一般との連携)
|
|
191
|
+
if (データ構造が複雑か?) then (いいえ)
|
|
192
|
+
:トランザクションスクリプト;
|
|
193
|
+
:逆ピラミッド形のテスト;
|
|
194
|
+
if (永続化モデルは複数か?) then (いいえ)
|
|
195
|
+
:レイヤードアーキテクチャ 3層;
|
|
196
|
+
else (はい)
|
|
197
|
+
:レイヤードアーキテクチャ 4層;
|
|
198
|
+
endif
|
|
199
|
+
else (はい)
|
|
200
|
+
:アクティブレコード;
|
|
201
|
+
:ダイヤモンド形のテスト;
|
|
202
|
+
if (永続化モデルは複数か?) then (いいえ)
|
|
203
|
+
:レイヤードアーキテクチャ 3層;
|
|
204
|
+
else (はい)
|
|
205
|
+
:レイヤードアーキテクチャ 4層;
|
|
206
|
+
endif
|
|
207
|
+
endif
|
|
208
|
+
else (中核の業務領域)
|
|
209
|
+
if (金額を扱う/分析/監査記録が必要か?) then (いいえ)
|
|
210
|
+
:ドメインモデル;
|
|
211
|
+
:ピラミッド形のテスト;
|
|
212
|
+
if (永続化モデルは複数か?) then (いいえ)
|
|
213
|
+
:ポートとアダプター;
|
|
214
|
+
else (はい)
|
|
215
|
+
:CQRS;
|
|
216
|
+
endif
|
|
217
|
+
else (はい)
|
|
218
|
+
:イベント履歴式ドメインモデル;
|
|
219
|
+
:ピラミッド形のテスト;
|
|
220
|
+
:CQRS;
|
|
221
|
+
endif
|
|
222
|
+
endif
|
|
223
|
+
|
|
224
|
+
stop
|
|
225
|
+
@enduml
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
##### アーキテクチャパターン
|
|
229
|
+
|
|
230
|
+
###### 1. **トランザクションスクリプトパターン**
|
|
231
|
+
- **適用場面**: 補完・一般との連携業務で、データ構造が複雑でない場合
|
|
232
|
+
- **特徴**:
|
|
233
|
+
- 各機能を独立したスクリプトとして実装
|
|
234
|
+
- 手続き的なプログラミングスタイル
|
|
235
|
+
- シンプルで理解しやすい
|
|
236
|
+
- 小規模なアプリケーションに適している
|
|
237
|
+
|
|
238
|
+
###### 2. **アクティブレコードパターン**
|
|
239
|
+
- **適用場面**: 補完・一般との連携業務で、データ構造が複雑な場合
|
|
240
|
+
- **特徴**:
|
|
241
|
+
- データとビジネスロジックが同じクラスに含まれる
|
|
242
|
+
- オブジェクトが自身の永続化処理を担当
|
|
243
|
+
- ORMパターンの典型例
|
|
244
|
+
- 中規模のアプリケーションに適している
|
|
245
|
+
|
|
246
|
+
###### 3. **ドメインモデルパターン**
|
|
247
|
+
- **適用場面**: 中核の業務領域で、金額を扱わない・分析や監査記録が不要な場合
|
|
248
|
+
- **特徴**:
|
|
249
|
+
- リッチなドメインモデル
|
|
250
|
+
- ビジネスロジックがオブジェクトに分散
|
|
251
|
+
- 依存関係の逆転を活用
|
|
252
|
+
- 複雑なビジネスロジックに適している
|
|
253
|
+
|
|
254
|
+
###### 4. **イベント履歴式ドメインモデルパターン**
|
|
255
|
+
- **適用場面**: 中核の業務領域で、金額を扱う・分析や監査記録が必要な場合
|
|
256
|
+
- **特徴**:
|
|
257
|
+
- すべての状態変更をイベントとして記録
|
|
258
|
+
- 監査証跡の完全性を保証
|
|
259
|
+
- 時系列分析が可能
|
|
260
|
+
- 金融システムなど厳格な要件に適している
|
|
261
|
+
|
|
262
|
+
##### アーキテクチャスタイル
|
|
263
|
+
|
|
264
|
+
###### 1. **レイヤードアーキテクチャ(3層)**
|
|
265
|
+
- **適用場面**: 永続化モデルが単一の場合
|
|
266
|
+
- **特徴**:
|
|
267
|
+
- プレゼンテーション、ビジネスロジック、データアクセスの3層
|
|
268
|
+
- 関心事の分離が明確
|
|
269
|
+
- 保守性と拡張性が高い
|
|
270
|
+
- 標準的なエンタープライズアプリケーションに適している
|
|
271
|
+
|
|
272
|
+
###### 2. **レイヤードアーキテクチャ(4層)**
|
|
273
|
+
- **適用場面**: 永続化モデルが複数の場合
|
|
274
|
+
- **特徴**:
|
|
275
|
+
- アプリケーション層を追加した4層構造
|
|
276
|
+
- より細かい責務の分離
|
|
277
|
+
- 複雑なデータ統合に対応
|
|
278
|
+
- 大規模なエンタープライズアプリケーションに適している
|
|
279
|
+
|
|
280
|
+
###### 3. **ポートとアダプターアーキテクチャ(ヘキサゴナル)**
|
|
281
|
+
- **適用場面**: ドメインモデルで永続化モデルが単一の場合
|
|
282
|
+
- **特徴**:
|
|
283
|
+
- 外部依存からの完全な分離
|
|
284
|
+
- テスト容易性が高い
|
|
285
|
+
- 技術的な詳細から独立
|
|
286
|
+
- マイクロサービスに適している
|
|
287
|
+
|
|
288
|
+
###### 4. **CQRSアーキテクチャ**
|
|
289
|
+
- **適用場面**: 永続化モデルが複数、またはイベント履歴式の場合
|
|
290
|
+
- **特徴**:
|
|
291
|
+
- コマンドとクエリの分離
|
|
292
|
+
- 読み書きのパフォーマンス最適化
|
|
293
|
+
- 複雑なレポート要件に対応
|
|
294
|
+
- 高スケーラビリティを要求されるシステムに適している
|
|
295
|
+
|
|
296
|
+
#### データモデル設計
|
|
297
|
+
|
|
298
|
+
[グラス片手にデータベース設計 ~販売管理システム編~](https://www.shoeisha.co.jp/book/detail/9784798105666) 参照
|
|
299
|
+
|
|
300
|
+
#### ドメインモデル設計
|
|
301
|
+
|
|
302
|
+
[エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)](https://www.amazon.co.jp/%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9%E3%81%AE%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88-Architects%E2%80%99Archive-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E3%81%AE%E5%AE%9F%E8%B7%B5-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF%E3%83%BB%E3%82%A8%E3%83%B4%E3%82%A1%E3%83%B3%E3%82%B9/dp/4798121967) 参照
|
|
303
|
+
|
|
304
|
+
#### UI設計
|
|
305
|
+
|
|
306
|
+
[オブジェクト指向 UI デザイン -使いやすいソフトウェアの原理-](https://www.sociomedia.co.jp/10046) 参照
|
|
307
|
+
|
|
308
|
+
### 非機能要件
|
|
309
|
+
|
|
310
|
+
#### テスト戦略
|
|
311
|
+
|
|
312
|
+
1. ユニットテスト
|
|
313
|
+
- 個々のコンポーネントのテスト
|
|
314
|
+
- ビジネスロジックの検証
|
|
315
|
+
- 境界値テスト
|
|
316
|
+
|
|
317
|
+
2. 統合テスト
|
|
318
|
+
- コンポーネント間の連携テスト
|
|
319
|
+
- APIの検証
|
|
320
|
+
- データフローの確認
|
|
321
|
+
|
|
322
|
+
3. E2Eテスト
|
|
323
|
+
- ユーザーシナリオテスト
|
|
324
|
+
- 実環境に近い状態でのテスト
|
|
325
|
+
- 性能テスト
|
|
326
|
+
|
|
327
|
+
##### **ピラミッド形テスト**
|
|
328
|
+
- **適用**: ドメインモデル、イベント履歴式
|
|
329
|
+
- **構成**: ユニットテスト多数、統合テスト中程度、E2Eテスト少数
|
|
330
|
+
- **特徴**: 高品質なビジネスロジックの検証に重点
|
|
331
|
+
|
|
332
|
+
##### **ダイヤモンド形テスト**
|
|
333
|
+
- **適用**: アクティブレコード
|
|
334
|
+
- **構成**: ユニットテストと統合テストを重視
|
|
335
|
+
- **特徴**: データアクセスロジックの検証に重点
|
|
336
|
+
|
|
337
|
+
##### **逆ピラミッド形テスト**
|
|
338
|
+
- **適用**: トランザクションスクリプト
|
|
339
|
+
- **構成**: E2Eテスト多数、統合テスト中程度、ユニットテスト少数
|
|
340
|
+
- **特徴**: エンドツーエンドの動作検証に重点
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
## 開発
|
|
344
|
+
|
|
345
|
+
```plantuml
|
|
346
|
+
@startuml
|
|
347
|
+
|
|
348
|
+
[*] --> イテレーション計画
|
|
349
|
+
イテレーション計画 --> ユーザーストーリー作成
|
|
350
|
+
ユーザーストーリー作成 --> ユースケース作成
|
|
351
|
+
ユースケース作成 --> コーディングとテスト
|
|
352
|
+
アーキテクチャ設計 --> コーディングとテスト
|
|
353
|
+
コーディングとテスト --> アーキテクチャ設計
|
|
354
|
+
データモデル設計 --> コーディングとテスト
|
|
355
|
+
コーディングとテスト --> データモデル設計
|
|
356
|
+
ドメインモデル設計 --> コーディングとテスト
|
|
357
|
+
コーディングとテスト --> ドメインモデル設計
|
|
358
|
+
コーディングとテスト --> ユーザーインターフェース設計
|
|
359
|
+
ユーザーインターフェース設計 --> コーディングとテスト
|
|
360
|
+
コーディングとテスト --> ユースケース作成
|
|
361
|
+
コーディングとテスト --> イテレーションレビュー
|
|
362
|
+
イテレーションレビュー --> イテレーション計画
|
|
363
|
+
イテレーションレビュー --> [*]
|
|
364
|
+
|
|
365
|
+
@enduml
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
開発は、以下の2つのアプローチを状況に応じて使い分けます:
|
|
369
|
+
|
|
370
|
+
1. インサイドアウトアプローチ
|
|
371
|
+
- データモデルから実装を開始
|
|
372
|
+
- ドメイン駆動設計に適合
|
|
373
|
+
- テストファーストな開発
|
|
374
|
+
|
|
375
|
+
2. アウトサイドインアプローチ
|
|
376
|
+
- UIから実装を開始
|
|
377
|
+
- プロトタイプ駆動開発に適合
|
|
378
|
+
- モックを活用した開発
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
```plantuml
|
|
382
|
+
@startuml
|
|
383
|
+
start
|
|
384
|
+
:ユーザーストーリー;
|
|
385
|
+
if (CRUD実装済み?) then (はい)
|
|
386
|
+
:ドメインモデル;
|
|
387
|
+
:アウトサイドイン;
|
|
388
|
+
else (いいえ)
|
|
389
|
+
:貧血ドメインモデル;
|
|
390
|
+
:インサイドサイドアウト;
|
|
391
|
+
endif
|
|
392
|
+
if (API実装済み?) then (はい)
|
|
393
|
+
:インサイドサイドアウト;
|
|
394
|
+
else (いいえ)
|
|
395
|
+
:アウトサイドイン;
|
|
396
|
+
endif
|
|
397
|
+
stop
|
|
398
|
+
@enduml
|
|
399
|
+
```
|
|
400
|
+
#### インサイドアウト
|
|
401
|
+
|
|
402
|
+
```plantuml
|
|
403
|
+
@startuml
|
|
404
|
+
start
|
|
405
|
+
:データベース;
|
|
406
|
+
:インフラストラクチャ層;
|
|
407
|
+
:ドメイン層;
|
|
408
|
+
:サービス層;
|
|
409
|
+
:プレゼンテーション層;
|
|
410
|
+
stop
|
|
411
|
+
@enduml
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
```plantuml
|
|
415
|
+
@startuml
|
|
416
|
+
[*] --> コーディングとテスト
|
|
417
|
+
コーディングとテスト --> TODO : TODOリストを作成
|
|
418
|
+
TODO --> Red : 最小限の実装
|
|
419
|
+
Red --> Green : テストを書く
|
|
420
|
+
Green --> Refactor : リファクタリング
|
|
421
|
+
Refactor --> Red : 次の実装
|
|
422
|
+
Red : 動作の確認
|
|
423
|
+
Green : テストが成功
|
|
424
|
+
Refactor : コードの重複を除去してリファクタリング
|
|
425
|
+
Refactor --> TODO : リファクタリングが完了したらTODOリストに戻る
|
|
426
|
+
TODO --> コーディングとテスト : TODOリストが空になるまで繰り返す
|
|
427
|
+
コーディングとテスト --> イテレーションレビュー
|
|
428
|
+
@enduml
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
#### アウトサイドイン
|
|
432
|
+
|
|
433
|
+
```plantuml
|
|
434
|
+
@startuml
|
|
435
|
+
start
|
|
436
|
+
:プレゼンテーション層;
|
|
437
|
+
:サービス層;
|
|
438
|
+
:ドメイン層;
|
|
439
|
+
:インフラストラクチャ層;
|
|
440
|
+
:データベース;
|
|
441
|
+
stop
|
|
442
|
+
@enduml
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
```plantuml
|
|
446
|
+
@startuml
|
|
447
|
+
[*] --> コーディングとテスト
|
|
448
|
+
コーディングとテスト --> TODO : TODOリストを作成
|
|
449
|
+
TODO --> Red : テストを書く
|
|
450
|
+
Red --> Green : 最小限の実装
|
|
451
|
+
Green --> Refactor : リファクタリング
|
|
452
|
+
Refactor --> Red : 次のテストを書く
|
|
453
|
+
Red : テストに失敗
|
|
454
|
+
Green : テストに通る最小限の実装
|
|
455
|
+
Refactor : コードの重複を除去してリファクタリング
|
|
456
|
+
Refactor --> TODO : リファクタリングが完了したらTODOリストに戻る
|
|
457
|
+
TODO --> コーディングとテスト : TODOリストが空になるまで繰り返す
|
|
458
|
+
コーディングとテスト --> イテレーションレビュー
|
|
459
|
+
@enduml
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
### コーディングとテスト
|
|
463
|
+
|
|
464
|
+
```plantuml
|
|
465
|
+
@startuml "イテレーション開発プロセス"
|
|
466
|
+
|
|
467
|
+
start
|
|
468
|
+
|
|
469
|
+
partition "イテレーション開始" {
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
repeat :TODO確認;
|
|
473
|
+
partition "TDD実装サイクル" {
|
|
474
|
+
repeat
|
|
475
|
+
:TODO選択;
|
|
476
|
+
|
|
477
|
+
repeat
|
|
478
|
+
:失敗テスト作成 (Red);
|
|
479
|
+
:最小実装 (Green);
|
|
480
|
+
:リファクタリング (Refactor);
|
|
481
|
+
:品質チェック;
|
|
482
|
+
if (品質OK?) then (yes)
|
|
483
|
+
:コミット;
|
|
484
|
+
else (no)
|
|
485
|
+
:修正;
|
|
486
|
+
endif
|
|
487
|
+
repeat while (TODO完了?)
|
|
488
|
+
partition "コードレビュー" {
|
|
489
|
+
}
|
|
490
|
+
repeat while (全TODO完了?)
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
if (イテレーション完了?) then (yes)
|
|
494
|
+
partition "受け入れ" {
|
|
495
|
+
partition "ユーザーレビュー" {
|
|
496
|
+
}
|
|
497
|
+
if (受け入れOK?) then (yes)
|
|
498
|
+
partition "ふりかえり" {
|
|
499
|
+
}
|
|
500
|
+
else (no)
|
|
501
|
+
partition "修正対応" {
|
|
502
|
+
}
|
|
503
|
+
endif
|
|
504
|
+
}
|
|
505
|
+
else (no)
|
|
506
|
+
partition "設計リファクタリング" {
|
|
507
|
+
partition "アーキテクチャリファクタリング" {
|
|
508
|
+
}
|
|
509
|
+
partition "データモデルリファクタリング" {
|
|
510
|
+
}
|
|
511
|
+
partition "ドメインモデルリファクタリング" {
|
|
512
|
+
}
|
|
513
|
+
partition "UIリファクタリング" {
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
endif
|
|
517
|
+
repeat while (次のTODO?)
|
|
518
|
+
|
|
519
|
+
stop
|
|
520
|
+
|
|
521
|
+
@enduml
|
|
522
|
+
```
|
|
523
|
+
- 必ずイテレーション単位で開発を行う
|
|
524
|
+
- 勝手に次のイテレーションに進まない
|
|
525
|
+
- コミットは必ずTODO単位で実施する
|
|
526
|
+
- コミットの前に必ず品質確認を実施する
|
|
527
|
+
- コミットメッセージはAngularのコミットメッセージの書き方を参考にする
|
|
528
|
+
- feat: 新機能の追加
|
|
529
|
+
- fix: バグ修正
|
|
530
|
+
- docs: ドキュメントの変更
|
|
531
|
+
- style: フォーマットやセミコロンの追加など、コードの動作に影響しない変更
|
|
532
|
+
- refactor: リファクタリング(バグ修正や機能追加ではない)
|
|
533
|
+
- test: テストコードの追加や修正
|
|
534
|
+
- chore: ビルドプロセスや補助ツールの変更
|
|
535
|
+
|
|
536
|
+
## 運用
|
|
537
|
+
|
|
538
|
+
### 構築・配置
|
|
539
|
+
|
|
540
|
+
```plantuml
|
|
541
|
+
@startuml "Phase 1"
|
|
542
|
+
|構築|
|
|
543
|
+
start
|
|
544
|
+
:環境構築;
|
|
545
|
+
:CI/CD構築;
|
|
546
|
+
|
|
547
|
+
|配置|
|
|
548
|
+
:デプロイ設定;
|
|
549
|
+
|
|
550
|
+
|構築|
|
|
551
|
+
:ドキュメント更新;
|
|
552
|
+
|
|
553
|
+
stop
|
|
554
|
+
|
|
555
|
+
@enduml
|
|
556
|
+
```
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Sample
|
|
2
|
+
|
|
3
|
+
アーキテクチャ決定の簡単な説明
|
|
4
|
+
|
|
5
|
+
日付: 2025-02-26
|
|
6
|
+
|
|
7
|
+
## ステータス
|
|
8
|
+
|
|
9
|
+
2025-02-26 提案されました
|
|
10
|
+
|
|
11
|
+
## コンテキスト
|
|
12
|
+
|
|
13
|
+
この決定を行った状況
|
|
14
|
+
|
|
15
|
+
## 決定
|
|
16
|
+
|
|
17
|
+
決定とその根拠
|
|
18
|
+
|
|
19
|
+
## 影響
|
|
20
|
+
|
|
21
|
+
この決定による影響
|
|
22
|
+
|
|
23
|
+
## コプライアンス
|
|
24
|
+
|
|
25
|
+
この決定が遵守されていることを確認する方法
|
|
26
|
+
|
|
27
|
+
## 備考
|
|
28
|
+
|
|
29
|
+
この決定のメタデータ(著者など)
|
|
30
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# プロジェクト名
|
|
2
|
+
|
|
3
|
+
## 概要
|
|
4
|
+
|
|
5
|
+
### 目的
|
|
6
|
+
|
|
7
|
+
### 前提
|
|
8
|
+
|
|
9
|
+
| ソフトウェア | バージョン | 備考 |
|
|
10
|
+
| :----------- | :--------- | :--- |
|
|
11
|
+
| nodejs | 12.12.0 | |
|
|
12
|
+
|
|
13
|
+
## 構成
|
|
14
|
+
|
|
15
|
+
- [構築](#構築)
|
|
16
|
+
- [配置](#配置)
|
|
17
|
+
- [運用](#運用)
|
|
18
|
+
- [開発](#開発)
|
|
19
|
+
|
|
20
|
+
## 詳細
|
|
21
|
+
|
|
22
|
+
### Qick Start
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install
|
|
26
|
+
npm start
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 構築
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm init -y
|
|
33
|
+
npm install --save-dev browser-sync jest @babel/core @babel/cli @babel/preset-env @babel/register
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**[⬆ back to top](#構成)**
|
|
37
|
+
|
|
38
|
+
### 配置
|
|
39
|
+
|
|
40
|
+
**[⬆ back to top](#構成)**
|
|
41
|
+
|
|
42
|
+
### 運用
|
|
43
|
+
|
|
44
|
+
**[⬆ back to top](#構成)**
|
|
45
|
+
|
|
46
|
+
### 開発
|
|
47
|
+
|
|
48
|
+
**[⬆ back to top](#構成)**
|
|
49
|
+
|
|
50
|
+
## 参照
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# まずこれを読もうリスト
|
|
2
|
+
|
|
3
|
+
- [コンテキスト図](./requirements/コンテキスト図.md) - 情勢をつかむ。
|
|
4
|
+
- [インセプションデッキ](./requirements/インセプションデッキ.md) - プロジェクトの最初の週に作成された。ここにあるものの大部分は変更されたが、このドキュメントは我々がなぜこのシステムを構築しているかを示している。
|
|
5
|
+
- [ユーザーストーリー](./requirements/要件.md) - ユーザーの視点からシステムの要件をまとめる。ユーザーが何を求めているかを理解するために重要。
|
|
6
|
+
- [ユースケース](./requirements/要件.md) - システムの機能を表す。システムが何をするかを理解するのに必要。
|
|
7
|
+
- [アーキテクチャドキュメント](./design/アーキテクチャ.md) - システムのアーキテクチャを示す。システムの全体像を把握するために重要。
|
|
8
|
+
- [設計キュメント](./design) - システムの設計に関する詳細をまとめる。具体的な実装方法や技術選定を記録する。
|
|
9
|
+
- [開発ドキュメント](./development) - 開発の具体的な手順やガイドラインをまとめる。
|
|
10
|
+
- [運用ドキュメント](./operation) - システムの運用に関する情報を提供する。運用チームがシステムを管理するために必要。
|
|
11
|
+
- [アーキテクチャ決定ログ](./adr) - システムのアーキテクチャに関する重要な決定を記録する。将来の参照や説明に役立つ。
|
|
12
|
+
- [日誌](./journal) - 開発の進捗や問題点を記録する。開発の履歴を追うために重要。
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# プロジェクト概要
|
|
2
|
+
|
|
3
|
+
## 日程
|
|
4
|
+
|
|
5
|
+
- イテレーション開始日
|
|
6
|
+
- イテレーション終了日
|
|
7
|
+
- 作業日数
|
|
8
|
+
|
|
9
|
+
## 要員
|
|
10
|
+
|
|
11
|
+
|名前|予定作業日数|実績作業日数|
|
|
12
|
+
|---|---|---|
|
|
13
|
+
|A|5|5|
|
|
14
|
+
|
|
15
|
+
## 指標
|
|
16
|
+
|
|
17
|
+
### ナイトリービルド結果
|
|
18
|
+
|
|
19
|
+
|日付|結果|
|
|
20
|
+
|---|---|
|
|
21
|
+
|9月1日(月) |Build failed|
|
|
22
|
+
|
|
23
|
+
### イテレーションバーンダウン
|
|
24
|
+
|
|
25
|
+
```mermaid
|
|
26
|
+
xychart-beta
|
|
27
|
+
title "リリースバーンダウンチャート"
|
|
28
|
+
x-axis ["イテレーション1", "イテレーション2", "イテレーション3", "イテレーション4", "イテレーション5", "イテレーション6"]
|
|
29
|
+
y-axis "残ストーリーポイント" 0 --> 120
|
|
30
|
+
line [100, 82, 65, 48, 30, 0]
|
|
31
|
+
line [100, 85, 72, 60, 42, 10]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### ベロシティ
|
|
35
|
+
|
|
36
|
+
```mermaid
|
|
37
|
+
xychart-beta
|
|
38
|
+
title "イテレーション別ベロシティ"
|
|
39
|
+
x-axis ["イテレーション1", "イテレーション2", "イテレーション3", "イテレーション4", "イテレーション5", "イテレーション6", "イテレーション7", "イテレーション8"]
|
|
40
|
+
y-axis "完了したストーリーポイント" 0 --> 25
|
|
41
|
+
bar [15, 18, 14, 16, 19, 17, 20, 21]
|
|
42
|
+
line [17.5, 17.5, 17.5, 17.5, 17.5, 17.5, 17.5, 17.5]
|
|
43
|
+
line [20.5, 20.5, 20.5, 20.5, 20.5, 20.5, 20.5, 20.5]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 実施内容と評価
|
|
47
|
+
|
|
48
|
+
|ストーリー|結果|予定ポイント|ベロシティ加算ポイント|
|
|
49
|
+
|---|---|---|---|
|
|
50
|
+
|ユーザーとして、私は...|完了|5|5|
|
|
51
|
+
|ユーザーとして、私は...|完了|3|3|
|
|
52
|
+
|ユーザーとして、私は...|完了|8|8|
|
|
53
|
+
|合計| |16|16|
|
|
54
|
+
|
|
55
|
+
### イテレーションレビュー
|
|
56
|
+
|
|
57
|
+
|アクションアイテム|担当|
|
|
58
|
+
|---|---|
|
|
59
|
+
|ユーザーとして、私は...のレビュー|A|
|