yodogawa 1.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/.windsurf/templates/documentation-rules.md +143 -0
- package/.windsurf/templates/project/01-requirements/01-system-overview.md +49 -0
- package/.windsurf/templates/project/01-requirements/02-features-implemented.md +73 -0
- package/.windsurf/templates/project/01-requirements/03-features-planned.md +75 -0
- package/.windsurf/templates/project/01-requirements/04-non-functional-requirements.md +115 -0
- package/.windsurf/templates/project/01-requirements/05-user-stories.md +124 -0
- package/.windsurf/templates/project/02-behavior/01-scenarios.md +406 -0
- package/.windsurf/templates/project/03-domain/01-domain-model.md +338 -0
- package/.windsurf/templates/project/03-domain/02-ubiquitous-language.md +153 -0
- package/.windsurf/templates/project/04-design/01-tech-stack.md +360 -0
- package/.windsurf/templates/project/04-design/02-repository-structure.md +390 -0
- package/.windsurf/templates/project/04-design/03-screen-design.md +586 -0
- package/.windsurf/templates/project/04-design/04-data-model.md +211 -0
- package/.windsurf/templates/project/04-design/05-api-spec.md +221 -0
- package/.windsurf/templates/project/04-design/06-architecture.md +183 -0
- package/.windsurf/templates/project/04-design/07-infrastructure.md +180 -0
- package/.windsurf/templates/tasks/task-template/a-definition.md +143 -0
- package/.windsurf/templates/tasks/task-template/b-research.md +185 -0
- package/.windsurf/templates/tasks/task-template/c-implementation.md +197 -0
- package/.windsurf/workflows/a-001-SetupDocStructure.md +165 -0
- package/.windsurf/workflows/a-002-InitializeProject.md +229 -0
- package/.windsurf/workflows/a-003-CreateScenarios.md +130 -0
- package/.windsurf/workflows/a-004-DefineDomainModel.md +133 -0
- package/.windsurf/workflows/a-005-CreateDomainDiagram.md +114 -0
- package/.windsurf/workflows/a-006-ReviewRequirementsDomain.md +132 -0
- package/.windsurf/workflows/a-007-DefineTechStack.md +121 -0
- package/.windsurf/workflows/a-008-DefineRepositoryStructure.md +118 -0
- package/.windsurf/workflows/a-009-DefineScreenDesign.md +121 -0
- package/.windsurf/workflows/a-010-DefineDataModel.md +125 -0
- package/.windsurf/workflows/a-011-DefineAPISpec.md +123 -0
- package/.windsurf/workflows/a-012-DefineArchitecture.md +119 -0
- package/.windsurf/workflows/a-013-DefineInfrastructure.md +120 -0
- package/.windsurf/workflows/a-014-ReviewDesign.md +122 -0
- package/.windsurf/workflows/b-001-CreateTaskDirectory.md +71 -0
- package/.windsurf/workflows/b-002-CreateTaskDefinition.md +165 -0
- package/.windsurf/workflows/b-003-CreateTaskResearch.md +412 -0
- package/.windsurf/workflows/b-004-CreateTaskImplementation.md +97 -0
- package/.windsurf/workflows/b-005-ReviewTask.md +312 -0
- package/.windsurf/workflows/c-001-ImplementTask.md +493 -0
- package/.windsurf/workflows/c-002-UpdateDocumentation.md +797 -0
- package/.windsurf/workflows/x-Accessibility-Check.md +469 -0
- package/.windsurf/workflows/x-Bundle-Optimize.md +386 -0
- package/.windsurf/workflows/x-CI-FixFailure.md +636 -0
- package/.windsurf/workflows/x-CI-Setup.md +641 -0
- package/.windsurf/workflows/x-Code-Refactor.md +71 -0
- package/.windsurf/workflows/x-Code-ResearchAndReview.md +78 -0
- package/.windsurf/workflows/x-Component-Create.md +359 -0
- package/.windsurf/workflows/x-Context-CatchUp.md +63 -0
- package/.windsurf/workflows/x-Database-Seed.md +300 -0
- package/.windsurf/workflows/x-Dependencies-Update.md +315 -0
- package/.windsurf/workflows/x-DevEnvironment-Setup.md +437 -0
- package/.windsurf/workflows/x-Logging-Add.md +682 -0
- package/.windsurf/workflows/x-Migration-Create.md +354 -0
- package/.windsurf/workflows/x-Problem-RootCauseAnalysis.md +65 -0
- package/.windsurf/workflows/x-Repository-Push.md +375 -0
- package/.windsurf/workflows/x-Repository-PushToGithub.md +72 -0
- package/.windsurf/workflows/x-Requirements-Clarify.md +61 -0
- package/.windsurf/workflows/z-CreateWorkflow.md +77 -0
- package/README.md +280 -0
- package/bin/cli.js +74 -0
- package/package.json +28 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 開発・テスト用のサンプルデータをデータストアに投入するワークフロー
|
|
3
|
+
auto_execution_mode: 1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Database-Seed (x-Database-Seed)
|
|
7
|
+
|
|
8
|
+
## 目的
|
|
9
|
+
|
|
10
|
+
- 開発環境で動作確認するためのサンプルデータを投入する。
|
|
11
|
+
- テストで使用するフィクスチャデータを準備する。
|
|
12
|
+
- デモ環境で実際のデータに近いサンプルを表示する。
|
|
13
|
+
- 新規開発者が即座に開発を開始できるようデータを用意する。
|
|
14
|
+
|
|
15
|
+
## 前提
|
|
16
|
+
|
|
17
|
+
- データストア(データベース、ファイルストア等)がセットアップされている。
|
|
18
|
+
- スキーマ定義またはマイグレーションが完了している。
|
|
19
|
+
- データストアへの接続が確立されている。
|
|
20
|
+
- Git リポジトリが初期化されている。
|
|
21
|
+
|
|
22
|
+
## 手順
|
|
23
|
+
|
|
24
|
+
### 1. シードデータの要件定義
|
|
25
|
+
|
|
26
|
+
**目的の明確化**:
|
|
27
|
+
- 開発環境での動作確認
|
|
28
|
+
- ユニットテスト用フィクスチャ
|
|
29
|
+
- E2E テスト用データ
|
|
30
|
+
- デモ環境用サンプル
|
|
31
|
+
- パフォーマンステスト用大量データ
|
|
32
|
+
|
|
33
|
+
**必要なデータの特定**:
|
|
34
|
+
- どのエンティティ/テーブルにデータが必要か
|
|
35
|
+
- どのくらいのデータ量が必要か(10件 / 100件 / 10,000件)
|
|
36
|
+
- エンティティ間の関連性(外部キー、参照整合性)
|
|
37
|
+
|
|
38
|
+
### 2. データ投入戦略の選択
|
|
39
|
+
|
|
40
|
+
**戦略の種類**:
|
|
41
|
+
|
|
42
|
+
**Clean Seed(クリーンシード)**:
|
|
43
|
+
- すべての既存データを削除してから投入
|
|
44
|
+
- テスト環境や開発環境の初期化に適している
|
|
45
|
+
- 冪等性が保証される
|
|
46
|
+
|
|
47
|
+
**Incremental Seed(増分シード)**:
|
|
48
|
+
- 既存データに追加で投入
|
|
49
|
+
- データが既に存在する場合はスキップまたは更新
|
|
50
|
+
- 本番データとの共存が必要な場合に使用
|
|
51
|
+
|
|
52
|
+
**データソースの選択**:
|
|
53
|
+
- **ハードコード**: スクリプト内に直接記述(少量データ向け)
|
|
54
|
+
- **外部ファイル**: JSON、YAML、CSV等から読み込み(中量データ向け)
|
|
55
|
+
- **ランダム生成**: Faker等のライブラリで生成(大量データ向け)
|
|
56
|
+
- **本番データのサニタイズ**: 本番環境からエクスポートして個人情報を除去
|
|
57
|
+
|
|
58
|
+
### 3. シードスクリプトの設計
|
|
59
|
+
|
|
60
|
+
**基本的な構造**:
|
|
61
|
+
|
|
62
|
+
1. **データストア接続の確立**
|
|
63
|
+
2. **トランザクション開始**(サポートされている場合)
|
|
64
|
+
3. **既存データのクリア**(Clean Seedの場合)
|
|
65
|
+
- 外部キー制約を一時的に無効化(必要に応じて)
|
|
66
|
+
- 依存関係の逆順でデータ削除
|
|
67
|
+
4. **データ投入の実行**
|
|
68
|
+
- 依存関係の順序でデータ投入(親 → 子)
|
|
69
|
+
- 一意制約違反のチェック
|
|
70
|
+
- 外部キー制約の検証
|
|
71
|
+
5. **コミットまたはロールバック**
|
|
72
|
+
6. **投入結果の検証**
|
|
73
|
+
|
|
74
|
+
**冪等性の確保**:
|
|
75
|
+
```
|
|
76
|
+
IF データが既に存在する THEN
|
|
77
|
+
データをスキップ または 更新
|
|
78
|
+
ELSE
|
|
79
|
+
新規作成
|
|
80
|
+
END
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**実装チェックリスト**:
|
|
84
|
+
- [ ] データストア接続の確立
|
|
85
|
+
- [ ] エラーハンドリングの実装
|
|
86
|
+
- [ ] トランザクション管理(可能な場合)
|
|
87
|
+
- [ ] 依存関係の順序管理
|
|
88
|
+
- [ ] 冪等性の保証(既存データチェック)
|
|
89
|
+
- [ ] ログ出力(投入件数、エラー情報)
|
|
90
|
+
- [ ] 環境変数による制御(本番環境での実行を防止)
|
|
91
|
+
|
|
92
|
+
### 4. データ投入の実行
|
|
93
|
+
|
|
94
|
+
**一般的な実行パターン**:
|
|
95
|
+
|
|
96
|
+
**スクリプトの直接実行**:
|
|
97
|
+
```bash
|
|
98
|
+
# 例: Node.js
|
|
99
|
+
node scripts/seed.js
|
|
100
|
+
|
|
101
|
+
# 例: Python
|
|
102
|
+
python scripts/seed.py
|
|
103
|
+
|
|
104
|
+
# 例: Ruby
|
|
105
|
+
ruby db/seeds.rb
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**タスクランナー経由**:
|
|
109
|
+
```bash
|
|
110
|
+
# package.json の scripts
|
|
111
|
+
npm run seed
|
|
112
|
+
|
|
113
|
+
# Makefile
|
|
114
|
+
make seed
|
|
115
|
+
|
|
116
|
+
# タスクランナー
|
|
117
|
+
rake db:seed
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**環境別の実行制御**:
|
|
121
|
+
```bash
|
|
122
|
+
# 開発環境のみ
|
|
123
|
+
NODE_ENV=development npm run seed
|
|
124
|
+
|
|
125
|
+
# テスト環境のみ
|
|
126
|
+
RAILS_ENV=test rake db:seed
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 5. データ整合性の検証
|
|
130
|
+
|
|
131
|
+
**検証項目**:
|
|
132
|
+
- [ ] データ件数が期待通りか
|
|
133
|
+
- [ ] リレーション/参照が正しく設定されているか
|
|
134
|
+
- [ ] 一意制約が守られているか
|
|
135
|
+
- [ ] 外部キー制約が満たされているか
|
|
136
|
+
- [ ] データ型が正しいか
|
|
137
|
+
- [ ] NULL制約が守られているか
|
|
138
|
+
|
|
139
|
+
**検証方法**:
|
|
140
|
+
|
|
141
|
+
**データストアに直接クエリ**:
|
|
142
|
+
```bash
|
|
143
|
+
# カウント確認
|
|
144
|
+
SELECT COUNT(*) FROM users;
|
|
145
|
+
SELECT COUNT(*) FROM posts;
|
|
146
|
+
|
|
147
|
+
# リレーション確認
|
|
148
|
+
SELECT users.name, COUNT(posts.id)
|
|
149
|
+
FROM users
|
|
150
|
+
LEFT JOIN posts ON users.id = posts.user_id
|
|
151
|
+
GROUP BY users.id;
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**アプリケーション経由での確認**:
|
|
155
|
+
- 開発サーバーを起動してブラウザで確認
|
|
156
|
+
- APIエンドポイントにリクエストして応答を確認
|
|
157
|
+
- 管理画面でデータを表示
|
|
158
|
+
|
|
159
|
+
### 6. 本番環境での実行防止
|
|
160
|
+
|
|
161
|
+
**環境チェックの実装**:
|
|
162
|
+
|
|
163
|
+
**環境変数による制御**:
|
|
164
|
+
```javascript
|
|
165
|
+
if (process.env.NODE_ENV === 'production') {
|
|
166
|
+
throw new Error('Cannot seed production database');
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**明示的な確認プロンプト**:
|
|
171
|
+
```bash
|
|
172
|
+
echo "Are you sure you want to seed? (yes/no)"
|
|
173
|
+
read confirmation
|
|
174
|
+
if [ "$confirmation" != "yes" ]; then
|
|
175
|
+
exit 1
|
|
176
|
+
fi
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**データベース名チェック**:
|
|
180
|
+
```python
|
|
181
|
+
if 'production' in DATABASE_URL:
|
|
182
|
+
raise Exception('Cannot seed production database')
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 7. ドキュメント化
|
|
186
|
+
|
|
187
|
+
**README.md への記載例**:
|
|
188
|
+
```markdown
|
|
189
|
+
## Development Setup
|
|
190
|
+
|
|
191
|
+
### Seed Database
|
|
192
|
+
|
|
193
|
+
開発用サンプルデータを投入:
|
|
194
|
+
```bash
|
|
195
|
+
npm run seed
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
データをリセットして再投入:
|
|
199
|
+
```bash
|
|
200
|
+
npm run db:reset
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Sample Accounts
|
|
204
|
+
|
|
205
|
+
- Admin: admin@example.com / password123
|
|
206
|
+
- User: user@example.com / password123
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**package.json への登録**:
|
|
210
|
+
```json
|
|
211
|
+
{
|
|
212
|
+
"scripts": {
|
|
213
|
+
"seed": "node scripts/seed.js",
|
|
214
|
+
"db:reset": "npm run db:drop && npm run db:migrate && npm run seed"
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### 8. Git コミット
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
git add scripts/seed.js
|
|
223
|
+
# または db/seeds.rb, fixtures/*, etc.
|
|
224
|
+
|
|
225
|
+
git commit -m "feat: add database seed script
|
|
226
|
+
|
|
227
|
+
- Add sample users and posts
|
|
228
|
+
- Support clean and incremental seeding
|
|
229
|
+
- Add environment check to prevent production seeding
|
|
230
|
+
- Document seed command in README
|
|
231
|
+
|
|
232
|
+
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
233
|
+
|
|
234
|
+
Co-Authored-By: Claude <noreply@anthropic.com>"
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## 完了条件
|
|
238
|
+
|
|
239
|
+
- シードスクリプトが作成されている
|
|
240
|
+
- データが正常に投入される
|
|
241
|
+
- データ整合性が保たれている(外部キー、制約など)
|
|
242
|
+
- 冪等性が保証されている(複数回実行しても安全)
|
|
243
|
+
- 本番環境での実行が防止されている
|
|
244
|
+
- README にシードコマンドが記載されている
|
|
245
|
+
- Git にコミットされている
|
|
246
|
+
|
|
247
|
+
## エスカレーション
|
|
248
|
+
|
|
249
|
+
- **一意制約違反エラー**:
|
|
250
|
+
- 既存データをクリアしてから投入
|
|
251
|
+
- upsert(存在すれば更新、なければ作成)を使用
|
|
252
|
+
- ユニークなデータを生成(UUID、Faker など)
|
|
253
|
+
|
|
254
|
+
- **外部キー制約違反**:
|
|
255
|
+
- データの投入順序を確認(親 → 子)
|
|
256
|
+
- トランザクションで一括投入
|
|
257
|
+
- 外部キー制約を一時的に無効化(非推奨)
|
|
258
|
+
|
|
259
|
+
- **パフォーマンス問題(大量データ)**:
|
|
260
|
+
- バルクインサート(一括挿入)を使用
|
|
261
|
+
- トランザクションでまとめて投入
|
|
262
|
+
- インデックスを一時的に無効化
|
|
263
|
+
|
|
264
|
+
- **本番環境でシード実行のリスク**:
|
|
265
|
+
- 環境変数でガード
|
|
266
|
+
- データベース名チェック
|
|
267
|
+
- 明示的な確認プロンプト
|
|
268
|
+
|
|
269
|
+
## ベストプラクティス
|
|
270
|
+
|
|
271
|
+
- **環境による切り替え**: 本番環境では実行しない
|
|
272
|
+
- **冪等性**: 何度実行しても同じ結果になるようにする
|
|
273
|
+
- **リアルなデータ**: 実際の使用に近いデータを用意
|
|
274
|
+
- **機密情報の除外**: 本番データをエクスポートする場合、個人情報を除外
|
|
275
|
+
- **バージョン管理**: シードファイルは Git で管理
|
|
276
|
+
- **ドキュメント化**: README にシードコマンドとサンプルアカウント情報を記載
|
|
277
|
+
- **自動化**: CI/CD でテスト前にシードを実行
|
|
278
|
+
- **段階的な投入**: 基本データとオプショナルデータを分離
|
|
279
|
+
|
|
280
|
+
## 参考: 技術スタック別の実装パターン
|
|
281
|
+
|
|
282
|
+
**ORM / データアクセスライブラリ**:
|
|
283
|
+
- Prisma, TypeORM, Sequelize (Node.js)
|
|
284
|
+
- SQLAlchemy, Django ORM (Python)
|
|
285
|
+
- ActiveRecord (Ruby)
|
|
286
|
+
- GORM (Go)
|
|
287
|
+
- Eloquent (PHP)
|
|
288
|
+
|
|
289
|
+
**データソース形式**:
|
|
290
|
+
- JSON/YAML ファイル
|
|
291
|
+
- CSV ファイル
|
|
292
|
+
- SQL ダンプファイル
|
|
293
|
+
- Faker/Factory パターン
|
|
294
|
+
|
|
295
|
+
**実行方法**:
|
|
296
|
+
- npm scripts / package.json
|
|
297
|
+
- Makefile
|
|
298
|
+
- rake tasks
|
|
299
|
+
- Django management commands
|
|
300
|
+
- カスタムCLIコマンド
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 依存関係を安全に更新し、破壊的変更やセキュリティ脆弱性に対処するワークフロー
|
|
3
|
+
auto_execution_mode: 1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Dependencies-Update (x-Dependencies-Update)
|
|
7
|
+
|
|
8
|
+
## 目的
|
|
9
|
+
|
|
10
|
+
- プロジェクトの依存関係を最新の安全なバージョンに更新する。
|
|
11
|
+
- セキュリティ脆弱性を修正し、パッチを適用する。
|
|
12
|
+
- 破壊的変更(Breaking Changes)を事前に確認し、適切に対処する。
|
|
13
|
+
- アップデート後の動作を検証し、問題があれば修正する。
|
|
14
|
+
|
|
15
|
+
## 前提
|
|
16
|
+
|
|
17
|
+
- `package.json` または `requirements.txt` などの依存関係管理ファイルが存在する。
|
|
18
|
+
- npm/yarn/pnpm(Node.js)、pip/poetry(Python)などのパッケージマネージャーが利用可能。
|
|
19
|
+
- テストが整備されており、アップデート後の動作確認ができる。
|
|
20
|
+
- Git リポジトリが初期化されており、変更を追跡できる。
|
|
21
|
+
|
|
22
|
+
## 手順
|
|
23
|
+
|
|
24
|
+
### 1. 現在の依存関係の確認
|
|
25
|
+
|
|
26
|
+
**質問1: パッケージマネージャーの確認**
|
|
27
|
+
- 「このプロジェクトで使用しているパッケージマネージャーは何ですか?」
|
|
28
|
+
- npm
|
|
29
|
+
- yarn
|
|
30
|
+
- pnpm
|
|
31
|
+
- pip
|
|
32
|
+
- poetry
|
|
33
|
+
- その他
|
|
34
|
+
|
|
35
|
+
**現在のバージョンを確認**:
|
|
36
|
+
```bash
|
|
37
|
+
# Node.js プロジェクト
|
|
38
|
+
npm list --depth=0
|
|
39
|
+
# または
|
|
40
|
+
yarn list --depth=0
|
|
41
|
+
# または
|
|
42
|
+
pnpm list --depth=0
|
|
43
|
+
|
|
44
|
+
# Python プロジェクト
|
|
45
|
+
pip list
|
|
46
|
+
# または
|
|
47
|
+
poetry show
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. セキュリティ脆弱性のスキャン
|
|
51
|
+
|
|
52
|
+
**Node.js プロジェクト**:
|
|
53
|
+
```bash
|
|
54
|
+
npm audit
|
|
55
|
+
# または
|
|
56
|
+
yarn audit
|
|
57
|
+
# または
|
|
58
|
+
pnpm audit
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Python プロジェクト**:
|
|
62
|
+
```bash
|
|
63
|
+
pip-audit
|
|
64
|
+
# または
|
|
65
|
+
safety check
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**質問2: 脆弱性の確認**
|
|
69
|
+
- 「セキュリティ脆弱性が検出されましたか?」
|
|
70
|
+
- 検出された場合、重要度(Critical, High, Moderate, Low)を確認
|
|
71
|
+
|
|
72
|
+
### 3. 更新可能なパッケージの確認
|
|
73
|
+
|
|
74
|
+
**Node.js プロジェクト**:
|
|
75
|
+
```bash
|
|
76
|
+
npm outdated
|
|
77
|
+
# または
|
|
78
|
+
yarn outdated
|
|
79
|
+
# または
|
|
80
|
+
pnpm outdated
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Python プロジェクト**:
|
|
84
|
+
```bash
|
|
85
|
+
pip list --outdated
|
|
86
|
+
# または
|
|
87
|
+
poetry show --outdated
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**質問3: 更新戦略**
|
|
91
|
+
- 「どの更新戦略を使用しますか?」
|
|
92
|
+
- **Conservative(保守的)**: パッチバージョンのみ更新(例: 1.2.3 → 1.2.4)
|
|
93
|
+
- **Moderate(中程度)**: マイナーバージョンまで更新(例: 1.2.3 → 1.3.0)
|
|
94
|
+
- **Aggressive(積極的)**: メジャーバージョンも更新(例: 1.2.3 → 2.0.0)
|
|
95
|
+
- **Security Only(セキュリティのみ)**: 脆弱性があるパッケージのみ更新
|
|
96
|
+
|
|
97
|
+
### 4. 破壊的変更(Breaking Changes)の確認
|
|
98
|
+
|
|
99
|
+
更新するパッケージの CHANGELOG または リリースノートを確認:
|
|
100
|
+
|
|
101
|
+
**質問4: Breaking Changes の確認**
|
|
102
|
+
- 「更新するパッケージに破壊的変更がありますか?」
|
|
103
|
+
- 確認すべき内容:
|
|
104
|
+
- API の変更(関数名、引数、戻り値の変更)
|
|
105
|
+
- 非推奨 API の削除
|
|
106
|
+
- デフォルト動作の変更
|
|
107
|
+
- 最低必要バージョンの変更(Node.js, Python など)
|
|
108
|
+
|
|
109
|
+
**確認方法**:
|
|
110
|
+
- GitHub リリースページ: `https://github.com/{org}/{repo}/releases`
|
|
111
|
+
- CHANGELOG.md
|
|
112
|
+
- Migration Guide
|
|
113
|
+
|
|
114
|
+
### 5. 依存関係の更新
|
|
115
|
+
|
|
116
|
+
#### 5.1. バックアップの作成
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# package.json と package-lock.json のバックアップ
|
|
120
|
+
cp package.json package.json.backup
|
|
121
|
+
cp package-lock.json package-lock.json.backup
|
|
122
|
+
|
|
123
|
+
# または Python の場合
|
|
124
|
+
cp requirements.txt requirements.txt.backup
|
|
125
|
+
cp poetry.lock poetry.lock.backup
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### 5.2. パッケージの更新
|
|
129
|
+
|
|
130
|
+
**セキュリティパッチのみ適用**:
|
|
131
|
+
```bash
|
|
132
|
+
# Node.js
|
|
133
|
+
npm audit fix
|
|
134
|
+
# または
|
|
135
|
+
yarn audit fix
|
|
136
|
+
# または
|
|
137
|
+
pnpm audit fix
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**すべてのパッケージを更新**:
|
|
141
|
+
```bash
|
|
142
|
+
# Node.js (interactive)
|
|
143
|
+
npm update
|
|
144
|
+
# または
|
|
145
|
+
yarn upgrade-interactive
|
|
146
|
+
# または
|
|
147
|
+
pnpm update -i
|
|
148
|
+
|
|
149
|
+
# Python
|
|
150
|
+
pip install --upgrade -r requirements.txt
|
|
151
|
+
# または
|
|
152
|
+
poetry update
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**特定のパッケージのみ更新**:
|
|
156
|
+
```bash
|
|
157
|
+
# Node.js
|
|
158
|
+
npm install <package>@latest
|
|
159
|
+
# または
|
|
160
|
+
yarn upgrade <package>@latest
|
|
161
|
+
|
|
162
|
+
# Python
|
|
163
|
+
pip install --upgrade <package>
|
|
164
|
+
# または
|
|
165
|
+
poetry update <package>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 6. 変更内容の確認
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
git diff package.json
|
|
172
|
+
git diff package-lock.json
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**質問5: 変更の確認**
|
|
176
|
+
- 「予期しない変更がありませんか?」
|
|
177
|
+
- 「更新されたパッケージのバージョンは適切ですか?」
|
|
178
|
+
|
|
179
|
+
### 7. テストの実行
|
|
180
|
+
|
|
181
|
+
**すべてのテストを実行**:
|
|
182
|
+
```bash
|
|
183
|
+
# Node.js
|
|
184
|
+
npm test
|
|
185
|
+
# または
|
|
186
|
+
yarn test
|
|
187
|
+
|
|
188
|
+
# Python
|
|
189
|
+
pytest
|
|
190
|
+
# または
|
|
191
|
+
python -m unittest
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**質問6: テスト結果**
|
|
195
|
+
- 「すべてのテストが通りましたか?」
|
|
196
|
+
- 失敗した場合、原因を特定:
|
|
197
|
+
- 破壊的変更による API の変更
|
|
198
|
+
- テストコードの更新が必要
|
|
199
|
+
- 環境依存の問題
|
|
200
|
+
|
|
201
|
+
### 8. ビルドの確認
|
|
202
|
+
|
|
203
|
+
**ビルドが成功するか確認**:
|
|
204
|
+
```bash
|
|
205
|
+
# Node.js
|
|
206
|
+
npm run build
|
|
207
|
+
# または
|
|
208
|
+
yarn build
|
|
209
|
+
|
|
210
|
+
# TypeScript
|
|
211
|
+
tsc --noEmit
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**質問7: ビルド結果**
|
|
215
|
+
- 「ビルドが成功しましたか?」
|
|
216
|
+
- エラーがある場合、型定義やコンパイルエラーを修正
|
|
217
|
+
|
|
218
|
+
### 9. 動作確認
|
|
219
|
+
|
|
220
|
+
**開発サーバーを起動して動作確認**:
|
|
221
|
+
```bash
|
|
222
|
+
npm run dev
|
|
223
|
+
# または
|
|
224
|
+
yarn dev
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**質問8: 動作確認**
|
|
228
|
+
- 「主要な機能が正常に動作しますか?」
|
|
229
|
+
- 確認すべき項目:
|
|
230
|
+
- ページが正しく表示される
|
|
231
|
+
- API リクエストが成功する
|
|
232
|
+
- フォームが正常に動作する
|
|
233
|
+
- 認証・認可が機能する
|
|
234
|
+
|
|
235
|
+
### 10. コミットとプッシュ
|
|
236
|
+
|
|
237
|
+
**変更をコミット**:
|
|
238
|
+
```bash
|
|
239
|
+
git add package.json package-lock.json
|
|
240
|
+
git commit -m "chore: update dependencies
|
|
241
|
+
|
|
242
|
+
- Update <package1> from <old-version> to <new-version>
|
|
243
|
+
- Update <package2> from <old-version> to <new-version>
|
|
244
|
+
- Fix security vulnerabilities (npm audit)
|
|
245
|
+
- All tests passing
|
|
246
|
+
|
|
247
|
+
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
248
|
+
|
|
249
|
+
Co-Authored-By: Claude <noreply@anthropic.com>"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**プッシュ**:
|
|
253
|
+
```bash
|
|
254
|
+
git push origin <branch>
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### 11. CI/CD の確認
|
|
258
|
+
|
|
259
|
+
- CI が成功することを確認
|
|
260
|
+
- 失敗した場合、ログを確認して修正
|
|
261
|
+
|
|
262
|
+
### 12. ドキュメント更新(必要に応じて)
|
|
263
|
+
|
|
264
|
+
**質問9: ドキュメント更新**
|
|
265
|
+
- 「依存関係の更新により、ドキュメントの更新が必要ですか?」
|
|
266
|
+
- 更新すべきドキュメント:
|
|
267
|
+
- README.md(最低必要バージョン)
|
|
268
|
+
- CHANGELOG.md
|
|
269
|
+
- API ドキュメント
|
|
270
|
+
|
|
271
|
+
## 完了条件
|
|
272
|
+
|
|
273
|
+
- 依存関係が最新の安全なバージョンに更新されている
|
|
274
|
+
- セキュリティ脆弱性が修正されている
|
|
275
|
+
- すべてのテストが通っている
|
|
276
|
+
- ビルドが成功している
|
|
277
|
+
- 主要な機能が正常に動作している
|
|
278
|
+
- 変更がコミットされ、GitHub にプッシュされている
|
|
279
|
+
- CI/CD が成功している
|
|
280
|
+
|
|
281
|
+
## エスカレーション
|
|
282
|
+
|
|
283
|
+
- **メジャーバージョンアップで破壊的変更が多い場合**:
|
|
284
|
+
- 「メジャーバージョンアップには大きな変更が含まれます。段階的に更新することを推奨します。」
|
|
285
|
+
- マイグレーションガイドを参照
|
|
286
|
+
- 別ブランチで作業
|
|
287
|
+
|
|
288
|
+
- **テストが失敗する場合**:
|
|
289
|
+
- 「テストが失敗しました。原因を特定してください:」
|
|
290
|
+
- 破壊的変更による API の変更
|
|
291
|
+
- テストコードの更新が必要
|
|
292
|
+
- モック・スタブの修正が必要
|
|
293
|
+
|
|
294
|
+
- **ビルドが失敗する場合**:
|
|
295
|
+
- 「ビルドが失敗しました。型定義やコンパイルエラーを確認してください。」
|
|
296
|
+
- TypeScript の場合、`@types/*` パッケージも更新
|
|
297
|
+
|
|
298
|
+
- **セキュリティ脆弱性が修正できない場合**:
|
|
299
|
+
- 「セキュリティ脆弱性が修正できません。以下を検討してください:」
|
|
300
|
+
- パッケージの代替案を探す
|
|
301
|
+
- 一時的に `npm audit` の特定の警告を無視(非推奨)
|
|
302
|
+
- セキュリティチームに報告
|
|
303
|
+
|
|
304
|
+
- **依存関係の競合が発生した場合**:
|
|
305
|
+
- 「依存関係の競合が発生しました。`npm ls <package>` で原因を特定してください。」
|
|
306
|
+
- `resolutions`(yarn)または `overrides`(npm)で強制解決
|
|
307
|
+
|
|
308
|
+
## ベストプラクティス
|
|
309
|
+
|
|
310
|
+
- **定期的な更新**: 週次または月次で依存関係を確認
|
|
311
|
+
- **小さく更新**: 一度に多くのパッケージを更新せず、段階的に更新
|
|
312
|
+
- **テスト自動化**: CI で依存関係の更新を自動テスト
|
|
313
|
+
- **Dependabot/Renovate**: 自動 PR 作成ツールの活用
|
|
314
|
+
- **セキュリティアラート**: GitHub Security Alerts を有効化
|
|
315
|
+
- **ロックファイルのコミット**: `package-lock.json` や `yarn.lock` を必ずコミット
|