← AI開発 資料アーカイブ
ビルド/生成スクリプト

ビルドスクリプト: ガイド類とフローガイドの一括生成

元ファイル: システム要件定義の分析と汎用化方法/gen_templates.py

要約

claude_fullsetの05_guidesなど残りのテンプレート・ガイド文書を生成するPythonスクリプト。FLOW_GUIDE.mdでは新規プロジェクト開始から本番移行・ハーネス更新までの7ステップ運用フローと、P-00/P-01等のプロンプトの使いどころを具体的に記述する。

要点

Pythonガイド生成運用フロープロンプトclaude_fullset

#!/usr/bin/env python3
"""残りのテンプレートファイルとガイドを一括生成するスクリプト"""
import os

BASE = "/home/ubuntu/claude_fullset"

FILES = {}

# ===== 05_guides/FLOW_GUIDE.md =====
FILES["05_guides/FLOW_GUIDE.md"] = """# Claude Code読み込みフロー完全ガイド v3.0
# このファイルを読めば、最初から最後まで何をすればいいかわかります

---

## 全体フロー(7ステップ)

```
新しいプロジェクト開始
     ↓
STEP 1: ファイルを準備する(5分)
     ↓
STEP 2: P-00で要件定義する(30〜60分)
     ↓
STEP 3: P-01で毎日開発する(繰り返し)
     ↓
STEP 4: P-04でレビューする(フェーズ完了時)
     ↓
STEP 5: P-05でテストする(フェーズ完了時)
     ↓
STEP 6: P-08で本番移行する(完成時)
     ↓
STEP 7: P-14でハーネスを更新する(完了後)
```

---

## STEP 1:ファイルを準備する(5分)

```bash
# プロジェクトフォルダを作る
mkdir my-project && cd my-project && mkdir docs

# コアファイルをコピーする
cp ~/claude_fullset/01_core/CLAUDE.md ./CLAUDE.md
cp ~/claude_fullset/01_core/CONSTRAINTS.md ./CONSTRAINTS.md
cp ~/claude_fullset/01_core/AGENTS.md ./AGENTS.md
cp ~/claude_fullset/01_core/RULES.md ./RULES.md
cp ~/claude_fullset/01_core/docs/progress.md ./docs/progress.md
```

CLAUDE.md の「PART A:プロジェクト情報」だけ書き換える(5分)。
他のPART B〜Mはそのまま使えます。

---

## STEP 2:P-00で要件定義する(30〜60分)

Claude Codeを開いて、`03_prompts/ALL_PROMPTS.md` の「P-00」をコピーして貼り付ける。

Claudeが7つの質問をしてくるので日本語で答えるだけ。
自動生成されるもの:
- docs/SRS_v1.md(要件定義書)
- docs/SDD_v1.md(設計書)
- docs/TEST_PLAN_v1.md(テスト計画書)
- docs/E2E_SCENARIOS_v1.md(E2Eシナリオ)

---

## STEP 3:P-01で毎日開発する

**毎日Claude Codeを開いたら、最初に必ず「P-01」を貼り付ける。**

これをやらないと:
- Claudeが前回の状態を知らない
- 同じことを繰り返す
- 設計が崩壊する

開発中に困ったら:

| 状況 | 使うプロンプト |
|-----|-------------|
| バグが出た | P-02 |
| バグを直す | P-03 |
| ログを見たい | P-06 |
| 会話が50往復を超えた | P-07(必ず実施) |

---

## STEP 4:P-04でレビューする

フェーズが完成したら P-04 でレビューする。

- 🔴が出たら修正する(テストを削除・スキップしない)
- 🟡が出たら修正するかSRSを更新する
- 🟢になったら次のフェーズへ

---

## STEP 5:P-05でテストする

レビューが通ったら P-05 でテストを実行する。

全テスト通過 + カバレッジ80%以上 = 本番移行の準備OK

---

## STEP 6:P-08で本番移行する

本番環境にデプロイするときは必ず P-08 を使う。
チェックリストを全部クリアしてから移行する。
1項目でも🔴があれば移行しない。

---

## STEP 7:P-14でハーネスを更新する

プロジェクトが完了したら P-14 で学びをハーネスに保存する。
次のプロジェクトでこの学びが活かされる。

---

## よくある質問

**Q:どのファイルをClaude Codeに渡せばいいですか?**
A:Claude Codeはプロジェクトルートのファイルを自動的に読みます。
「渡す」操作は不要です。P-01を貼り付けるだけでOKです。

**Q:SRSって難しそうですが、書けますか?**
A:P-00を使えばClaude Codeが質問してくれるので、
日本語で答えるだけでSRSが自動生成されます。

**Q:バグが出たらどうすればいいですか?**
A:P-02を貼り付けて、エラーメッセージをコピーするだけです。

**Q:途中でClaude Codeを閉じても大丈夫ですか?**
A:大丈夫です。docs/progress.mdに進捗が保存されています。
次回のセッション開始時にP-01を使えば続きから開発できます。

---

## トラブルシューティング

**Claudeが「前の会話を覚えていない」と言い始めた**
→ P-07(セッション切り替え)を使う

**同じエラーが何度も出る**
→ P-02(バグ調査)で原因を特定する
→ 3回試しても解決しない場合はアプローチを変える

**実装が迷走している**
→ P-07でセッションを切り替える
→ SRSに戻って要件を確認する

**テストが通らない**
→ テストを削除・スキップしない(CONSTRAINTS.md違反)
→ P-02でバグを調査して実装を修正する
"""

# ===== 02_templates/test/TEST_PLAN_TEMPLATE.md =====
FILES["02_templates/test/TEST_PLAN_TEMPLATE.md"] = """# テスト計画書テンプレート(IEEE 829:2008準拠)v3.0
# 使い方:[角括弧]の部分を書き換えて使う

---

## ドキュメント管理

| 項目 | 内容 |
|-----|------|
| ドキュメントID | TEST-[略称]-v1.0 |
| プロジェクト名 | [プロジェクト名] |
| 対応SRS | SRS-[略称]-v1.0 |
| 作成日 | [YYYY-MM-DD] |
| ステータス | 草稿 |

---

## 1. テスト目的

本テスト計画は、[プロジェクト名]のSRS記載の全要件が正しく実装されていることを検証する。
テスト通過をもってフェーズ完了・本番移行の可否を判断する。

---

## 2. テスト種別と実行タイミング

| テスト種別 | 実行タイミング | ツール | 目標 |
|----------|-------------|-------|-----|
| ユニットテスト | 関数実装のたびに | Jest/Vitest | カバレッジ80%以上 |
| 統合テスト | API実装のたびに | Supertest | 主要APIを全て |
| E2Eテスト | フェーズ完了時 | 手動 | 主要フローを全て |
| セキュリティテスト | 本番移行前 | 手動+OWASP | チェックリスト全項目 |

---

## 3. テストケース一覧

### 3.1 ユニットテスト

| テストID | 対象関数 | 対応要件ID | テスト内容 | 期待結果 |
|--------|--------|----------|---------|--------|
| UT-001 | [関数名] | FR-AUTH-001 | 正常系:有効な入力 | 成功レスポンスが返る |
| UT-002 | [関数名] | FR-AUTH-001 | 異常系:重複データ | エラーが返る |
| UT-003 | [関数名] | FR-AUTH-002 | 正常系:正しい認証 | JWTトークンが返る |
| UT-004 | [関数名] | FR-AUTH-002 | 異常系:誤った認証 | 401エラーが返る |
| UT-005 | [関数名] | [要件ID] | [テスト内容] | [期待結果] |

### 3.2 E2Eテストシナリオ一覧

| シナリオID | シナリオ名 | 対応要件 | 優先度 |
|---------|---------|--------|-------|
| E2E-001 | 新規ユーザー登録からログインまで | FR-AUTH-001〜002 | 高 |
| E2E-002 | メイン機能の基本フロー | FR-XXX-001〜003 | 高 |
| E2E-003 | エラー時の表示確認 | FR-AUTH-002 | 中 |

---

## 4. 合否判定基準

### フェーズ完了の条件(全項目クリアが必要)

- [ ] ユニットテスト:全テスト通過
- [ ] ユニットテスト:カバレッジ80%以上
- [ ] E2Eテスト:全シナリオ通過
- [ ] セキュリティ:チェックリスト全項目グリーン

### 本番移行の条件(全項目クリアが必要)

- [ ] フェーズ完了条件を全て満たしている
- [ ] ステージング環境で24時間以上安定稼働している
- [ ] ロールバック手順が文書化されている
- [ ] バックアップが取得されている
- [ ] 監視・アラートが設定されている

---

## 5. テスト実行ログ

### フェーズ1テスト結果

| 実行日 | ユニットテスト | カバレッジ | E2E | セキュリティ | 判定 |
|-------|-------------|---------|-----|-----------|-----|
| [日付] | XX/XX通過 | XX% | XX/XX通過 | XX/XX | 🟢/🔴 |
"""

# ===== 02_templates/e2e/E2E_SCENARIOS_TEMPLATE.md =====
FILES["02_templates/e2e/E2E_SCENARIOS_TEMPLATE.md"] = """# E2Eテストシナリオテンプレート v3.0
# 使い方:シナリオをコピーして[角括弧]を書き換えて使う

---

## シナリオの書き方

```
E2E-[番号]:[シナリオ名] - [正常系/異常系]

対応要件ID:FR-XXX-XXX

前提条件(Given):
- [テスト開始時の状態]

操作手順(When):
1. [操作1]
2. [操作2]

期待結果(Then):
- [確認すべき結果1]
- [確認すべき結果2]

テストデータ:
- [キー]:[値]
```

---

## サンプルシナリオ

### E2E-001:新規ユーザー登録 - 正常系

対応要件ID:FR-AUTH-001

前提条件(Given):
- アプリケーションが起動している
- test@example.com はまだ登録されていない

操作手順(When):
1. ブラウザで http://localhost:3000/register を開く
2. メールアドレス欄に test@example.com を入力する
3. パスワード欄に TestPass123! を入力する
4. 「登録する」ボタンをクリックする

期待結果(Then):
- 「登録が完了しました」というメッセージが表示される
- ダッシュボード(/dashboard)にリダイレクトされる

テストデータ:
- メールアドレス:test@example.com
- パスワード:TestPass123!

---

### E2E-002:ログイン - 正常系

対応要件ID:FR-AUTH-002

前提条件(Given):
- test@example.com が登録済みである

操作手順(When):
1. ブラウザで http://localhost:3000/login を開く
2. メールアドレス欄に test@example.com を入力する
3. パスワード欄に TestPass123! を入力する
4. 「ログイン」ボタンをクリックする

期待結果(Then):
- ダッシュボード(/dashboard)にリダイレクトされる
- ナビゲーションに「ログアウト」ボタンが表示される

---

### E2E-003:ログイン失敗 - 異常系

対応要件ID:FR-AUTH-002

前提条件(Given):
- test@example.com が登録済みである

操作手順(When):
1. ブラウザで http://localhost:3000/login を開く
2. メールアドレス欄に test@example.com を入力する
3. パスワード欄に WrongPass999! を入力する
4. 「ログイン」ボタンをクリックする

期待結果(Then):
- 「メールアドレスまたはパスワードが正しくありません」が表示される
- ログインページに留まる
- パスワード欄がクリアされる
"""

# ===== 02_templates/harness/HARNESS_TEMPLATE.md =====
FILES["02_templates/harness/HARNESS_TEMPLATE.md"] = """# 成長型ハーネステンプレート v3.0

## ハーネスとは

プロジェクトをまたいで知識・テンプレート・パターンを蓄積する仕組みです。
新しいプロジェクトを始めるたびに、過去の学びを活用して品質と速度を向上させます。

## ハーネスのディレクトリ構造

```
~/claude-harness/
├── templates/
│   ├── CLAUDE.md.template        ← 全プロジェクト共通の設定
│   ├── SRS.template.md           ← SRSテンプレート
│   └── TEST_PLAN.template.md     ← テスト計画テンプレート
├── learnings/
│   └── [project-name]/
│       ├── bugs_and_fixes.md     ← バグと解決方法
│       ├── effective_prompts.md  ← 効果的だったプロンプト
│       └── code_snippets/        ← 再利用できるコード
├── patterns/
│   ├── auth_pattern.md           ← 認証パターン
│   └── api_pattern.md            ← APIパターン
└── harness_index.md              ← ハーネス全体の索引
```

---

## H-INIT:ハーネス初期化プロンプト(最初の1回だけ)

```
ハーネスを初期化してください。

以下のコマンドを実行してください:
mkdir -p ~/claude-harness/{templates,learnings,patterns}

次に、以下のファイルをコピーしてください:
cp ~/claude_fullset/01_core/CLAUDE.md ~/claude-harness/templates/CLAUDE.md.template
cp ~/claude_fullset/02_templates/srs/SRS_TEMPLATE.md ~/claude-harness/templates/SRS.template.md
cp ~/claude_fullset/02_templates/test/TEST_PLAN_TEMPLATE.md ~/claude-harness/templates/TEST_PLAN.template.md

最後に ~/claude-harness/harness_index.md を以下の内容で作成してください:
# ハーネスインデックス
作成日:[今日の日付]
プロジェクト数:0
最終更新:[今日の日付]

## 登録済みプロジェクト
(まだありません)

初期化完了後に「ハーネス初期化完了」と報告してください。
```

---

## H-NEW:新プロジェクト開始プロンプト

```
新しいプロジェクト「[プロジェクト名]」を開始します。

1. ~/claude-harness/templates/ からテンプレートをコピーしてください:
   cp ~/claude-harness/templates/CLAUDE.md.template ./CLAUDE.md

2. ~/claude-harness/learnings/ に類似プロジェクトがあれば確認してください

3. CLAUDE.md の PART A を今回のプロジェクト情報に書き換えてください:
   - プロジェクト名:[プロジェクト名]
   - 目的:[目的]
   - 技術スタック:[技術スタック]

完了後に「プロジェクト開始準備完了」と報告してください。
```

---

## H-UPDATE:プロジェクト完了後の学習蓄積プロンプト

```
プロジェクト「[プロジェクト名]」が完了しました。
学びをハーネスに蓄積してください。

mkdir -p ~/claude-harness/learnings/[プロジェクト名]

以下のファイルを作成してください:

1. ~/claude-harness/learnings/[プロジェクト名]/bugs_and_fixes.md
   - 発生したバグのリスト(要件ID・症状・原因・解決方法)
   - 再発防止策

2. ~/claude-harness/learnings/[プロジェクト名]/effective_prompts.md
   - 特に効果的だったプロンプト
   - 改善したプロンプト

3. ~/claude-harness/learnings/[プロジェクト名]/code_snippets/
   - 再利用可能なコードパターン

4. ~/claude-harness/harness_index.md を更新する
   - プロジェクト数を+1する
   - 登録済みプロジェクトに追加する

完了後に「ハーネス更新完了」と報告してください。
```

---

## H-REVIEW:ハーネスレビュープロンプト(月1回)

```
ハーネスをレビューしてください。

1. ~/claude-harness/harness_index.md を読む
2. ~/claude-harness/learnings/ の全プロジェクトを確認する
3. 共通するバグパターンを特定する(3つ以上あれば patterns/ に追加)
4. テンプレートを最新の学びで更新する

報告内容:
- 蓄積されたプロジェクト数
- 共通バグパターン(あれば)
- テンプレートの更新内容
```
"""

# ===== 00_START/QUICK_START.md(更新版) =====
FILES["00_START/QUICK_START.md"] = """# クイックスタートガイド v3.0
# 非エンジニアの素人でも、これを読めば今日から開発できます

---

## このフルセットに含まれるもの

```
claude_fullset/
├── 00_START/
│   └── QUICK_START.md          ← 今読んでいるファイル
├── 01_core/                    ← プロジェクトにコピーするコアファイル
│   ├── CLAUDE.md               ← 全知識集約(必須)
│   ├── CONSTRAINTS.md          ← 禁止事項(必須)
│   ├── AGENTS.md               ← エージェント設計(必須)
│   ├── RULES.md                ← 開発ルール(必須)
│   └── docs/
│       └── progress.md         ← 進捗記録テンプレート
├── 02_templates/               ← 自動生成の元になるテンプレート
│   ├── srs/SRS_TEMPLATE.md     ← 要件定義書テンプレート(IEEE 29148)
│   ├── sdd/SDD_TEMPLATE.md     ← 設計書テンプレート(IEEE 1016)
│   ├── test/TEST_PLAN_TEMPLATE.md ← テスト計画書テンプレート(IEEE 829)
│   ├── e2e/E2E_SCENARIOS_TEMPLATE.md ← E2Eシナリオテンプレート
│   └── harness/HARNESS_TEMPLATE.md ← 成長型ハーネステンプレート
├── 03_prompts/
│   └── ALL_PROMPTS.md          ← 全プロンプト集(P-00〜P-18)
├── 04_examples/
│   └── SRS_EXAMPLE_KEIBA.md    ← SRSサンプル(競馬予想システム)
└── 05_guides/
    └── FLOW_GUIDE.md           ← 詳細フローガイド
```

---

## 今すぐ始める(3ステップ)

### ステップ1:コアファイルをコピーする(2分)

```bash
mkdir my-project && cd my-project && mkdir docs
cp ~/claude_fullset/01_core/CLAUDE.md ./CLAUDE.md
cp ~/claude_fullset/01_core/CONSTRAINTS.md ./CONSTRAINTS.md
cp ~/claude_fullset/01_core/AGENTS.md ./AGENTS.md
cp ~/claude_fullset/01_core/RULES.md ./RULES.md
cp ~/claude_fullset/01_core/docs/progress.md ./docs/progress.md
```

### ステップ2:CLAUDE.mdのPART Aを書き換える(3分)

CLAUDE.md を開いて「PART A:プロジェクト情報」の部分だけ書き換える。
他の部分はそのままでOK。

### ステップ3:P-00を貼り付けて開発開始(30〜60分)

Claude Codeを開いて `03_prompts/ALL_PROMPTS.md` の「P-00」をコピーして貼り付ける。
Claudeが質問してくるので日本語で答えるだけ。

---

## 毎日の開発ルーティン

1. Claude Codeを開く
2. P-01を貼り付ける(毎回必ず)
3. 開発する
4. 50往復を超えたらP-07を使う
5. 終了前にP-07でセッションを切り替える

---

## 困ったときの対処法

| 困りごと | 使うプロンプト |
|--------|-------------|
| バグが出た | P-02 |
| バグを直す | P-03 |
| コードを確認したい | P-04 |
| テストを実行したい | P-05 |
| ログを見たい | P-06 |
| 会話が長くなった | P-07 |
| 本番に移行したい | P-08 |
| 緊急で戻したい | P-09 |
| 進捗を確認したい | P-10 |
| セキュリティを確認したい | P-11 |
| プロジェクトを完了したい | P-12 |
| 週1回のチェック | P-13 |

---

## 世界基準との対応

| ドキュメント | 準拠規格 |
|----------|--------|
| SRS(要件定義書) | IEEE 29148:2018 |
| SDD(設計書) | IEEE 1016:2009 |
| テスト計画書 | IEEE 829:2008 |
| 品質特性 | ISO 25010:2023 |
| 本番移行チェックリスト | Google SRE PRR |
| CLAUDE.md構成 | Anthropic公式SDD |

---

詳細は `05_guides/FLOW_GUIDE.md` を読んでください。
"""

# ファイルを書き込む
for rel, content in FILES.items():
    path = f"{BASE}/{rel}"
    os.makedirs(os.path.dirname(path), exist_ok=True)
    with open(path, "w", encoding="utf-8") as f:
        f.write(content)
    print(f"OK: {rel} ({len(content):,} chars)")

print("\nALL DONE")

↑ トップへ戻る