# 演習一覧

手順書は全部で19本です。当日必ず通るのが14本（`exA0` から `exA6`、`exB0` から `exB6`）、時間が余った人向けの発展課題が5本（`challenges/`）です。

**上から順に進めてください。** 各ファイルの先頭に前提となる演習を書いてあります。前提を飛ばすと、その先で生成物が揃わずに止まります。

VSCode で開くフォルダは、最初から最後まで `handson` です。作業対象は `@kadaiA/` `@kadaiB/` のようにパスで切り替えます。

---

## 進む順番

```
S03 課題A [70min]                        S04 課題B [70min]
────────────────────────────────         ────────────────────────────────
A-0 素の状態を確認する      [5min]        B-0 起動して現状を掴む      [8min]
A-1 素の状態でアプリを作る [15min]        B-1 自動化の提案を出させる  [8min]
A-2 懸念点を自分で洗い出す  [8min]        B-2 Plan モードでバグを探す [12min]
A-3 ハーネスを配置する      [5min]  ───▶  B-3 Issue を起票する        [7min]
A-4 実行サマリーを確認する  [7min]        B-4 修正・実行・テスト     [20min]
A-5 パイプラインを回す     [20min]        B-5 自分の Skill を作る     [8min]
A-6 ハーネスの有無を比較   [10min]        B-6 脅威モデリングを回す    [7min]
```

演習Aの前半（A-0 から A-2）は、設定ファイルが1つも無い状態で進みます。A-3 で `_harness_kit/step1_kadaiA/` から `CLAUDE.md`・`.claude`・`docs` の3つを配置し、後半（A-4 から A-6）で同じ AI がどう変わるかを見ます。演習Bは、A-3 で置いた設定の上に Skill を足して進みます。**演習Bは演習Aの続きです。** A-3 を飛ばすと B-0 以降が動きません。

---

## 課題A ゼロからアプリを作る

作業対象は `kadaiA/`。お題は `kadaiA/README.md` と `kadaiA/docs/お題シート.md` にあります。

| # | 手順書 | 内容 | 所要 | 難易度 | 前提 | 終わったと言える状態 |
|---|---|---|---|---|---|---|
| A-0 | [exA0_baseline.md](exA0_baseline.md) | 素の状態を確認する | 5min | 易 | なし | `CLAUDE.md`・`.claude`・`docs` が無いことを確認し、AI の回答を1つ受け取っている |
| A-1 | [exA1_vibe_build.md](exA1_vibe_build.md) | 素の状態で CRUD 業務アプリを作る | 15min | 中 | A-0 | ブラウザで一覧50件が出て、検索と詳細表示が動く |
| A-2 | [exA2_concerns.md](exA2_concerns.md) | バイブコーディングの懸念点を自分で洗い出す | 8min | 中 | A-1 | 自分の懸念5個、AI の指摘3件以上、差分1行が `memo.md` に揃っている |
| A-3 | [exA3_harness_install.md](exA3_harness_install.md) | ハーネスを配置する（`CLAUDE.md` / `.claude` / `docs` の3つ） | 5min | 易 | A-0 / A-2 | 3つが `handson` 直下に並び、AI が `CLAUDE.md` の中身に触れて答え、応答の末尾にサマリーが付く |
| A-4 | [exA4_exec_summary.md](exA4_exec_summary.md) | 実行サマリーの出方を確認する | 7min | 中 | A-3 | サマリーの記載と実ファイルの変更が一致していることを確認できた |
| A-5 | [exA5_pipeline.md](exA5_pipeline.md) | コマンド一つでパイプラインを回す | 20min | 難 | A-2 / A-3 / A-4 | 報告書に指摘・修正・残件の数字が入り、中間データが4本揃っている |
| A-6 | [exA6_compare.md](exA6_compare.md) | ハーネスの有無を比較する | 10min | 中 | A-2 / A-5 | 3列の表があり、3列目に自分の手で1行足してあり、持ち帰りの節が書けている |

合計 70min。A-5 が山場です。ここだけ実行に3分から5分かかるため、待ち時間の使い方も手順書に書いてあります。

## 課題B 既にあるコードを直す

作業対象は `kadaiB/`。Spring Boot のプロジェクトです。業務ルールと到達基準は `kadaiB/README.md` にあります。

| # | 手順書 | 内容 | 所要 | 難易度 | 前提 | 終わったと言える状態 |
|---|---|---|---|---|---|---|
| B-0 | [exB0_start_kadaiB.md](exB0_start_kadaiB.md) | 課題Bを起動して現状を掴む | 8min | 易 | A-3 | Skill 3種を配置し、アプリが起動し、エラーになる備品を1件以上見つけた |
| B-1 | [exB1_setup_recommender.md](exB1_setup_recommender.md) | 自動化の提案を出させる | 8min | 易 | B-0 | 5カテゴリの提案を読み、1件を選んで実物を1本作らせた |
| B-2 | [exB2_plan_hunt.md](exB2_plan_hunt.md) | Plan モードで壁打ちしてバグを見つける | 12min | 中 | B-1 | バグ2件のファイル名・メソッド名・症状を `memo.md` に書けている |
| B-3 | [exB3_issue.md](exB3_issue.md) | Issue を起票する | 7min | 中 | B-2 | `ISSUE_002_...md` の5見出しがすべて埋まり、再現手順を自分でなぞれた |
| B-4 | [exB4_fix_and_test.md](exB4_fix_and_test.md) | 修正して、動かして、テストを通す | 20min | 中 | B-3 | バグ2件が直り、ブラウザで確認でき、`./mvnw test` が `BUILD SUCCESS` |
| B-5 | [exB5_skill_creator.md](exB5_skill_creator.md) | skill-creator で自分の Skill を作る | 8min | 中 | B-4 | 名前を出さずに依頼して、自分で作った Skill が発火した |
| B-6 | [exB6_threat_model.md](exB6_threat_model.md) | 脅威モデリングを回す | 7min | 中 | B-4 | `THREAT_MODEL.md` が出力され、一番上の脅威をコードに紐づけて読めた |

合計 70min。B-4 が山場です。**B-2 と B-3 を飛ばして B-4 だけをやらないでください。** 何を直すかが決まっていない状態で修正を任せると、直ったかどうかを判定できません。

---

## 発展課題

時間が余った人向けです。**やらなくても到達基準は満たせます。** `challenges/` に5本あります。

| # | 手順書 | 対象 | 内容 | 目安 | 難易度 | 前提 |
|---|---|---|---|---|---|---|
| ch01 | [challenges/ch01_category_filter.md](challenges/ch01_category_filter.md) | 課題A | カテゴリでの絞り込みを足す | 10-15min | 易 | A-1 |
| ch02 | [challenges/ch02_low_stock_highlight.md](challenges/ch02_low_stock_highlight.md) | 課題A | 在庫の少ない備品を目立たせる | 10-15min | 易 | A-1 |
| ch03 | [challenges/ch03_crud_cud.md](challenges/ch03_crud_cud.md) | 課題A | 新規登録・編集・削除を足す | 20-30min | 難 | A-1 |
| ch04 | [challenges/ch04_csv_export.md](challenges/ch04_csv_export.md) | 課題A | 表示中の一覧をCSVに書き出す | 15-20min | 中 | A-1（ch01 を終えているとなお良い） |
| ch05 | [challenges/ch05_third_bug.md](challenges/ch05_third_bug.md) | 課題B | 3件目のバグを自力で見つける | 20-25min | 難 | B-4 |

課題Aの発展課題は ch01 から始めるのが楽です。ch03 は書き換える機能を足すため、**何を先に決めなければならないかの洗い出しが本体**になります。時間が15分以下しか無いときは選ばないでください。

ch05 には手がかりを書いていません。`hints/` にも書いていません。探し方だけが書いてあります。

---

## 各手順書の構成

14本すべてが同じ7つの見出しで書いてあります。読む順番も上から順です。

| 見出し | 何が書いてあるか |
|---|---|
| 目的 | このステップで何ができるようになるか。なぜこの順番なのか |
| 操作 | 手を動かす手順。番号付きで、そのまま上から実行できます |
| 自分で考える | 答えを書いていない問いです。手を止めて考える箇所です |
| 生成物の名前と場所 | 終わったときに手元にあるべきファイルの、完全なパス |
| OK基準 | 満たしていれば次に進んでよい条件。箇条書きで判定できる形にしてあります |
| 追加と考察 | なぜそうなるかの解説。作業の手は止めずに、あとから読んでもかまいません |
| 発展課題 | 時間が余ったときの追加のお題 |

末尾に「詰まったときは」または「うまくいかないとき」の節が付いています。**まずここを読んでください。** それでも解決しないときに `hints/` を開きます。

## 先頭のメタ情報の読み方

各ファイルの1行目から `---` で囲まれたブロックがあります。手順書の見出しではなく、機械可読のメタ情報です。読み飛ばしてかまいません。

| 項目 | 意味 |
|---|---|
| `session` | どのセッションで扱うか（`S03` が課題A、`S04` が課題B） |
| `exercise` | 演習番号 |
| `duration` | 所要時間の目安 |
| `difficulty` | 1が易、2が中、3が難 |
| `prerequisite` | 先に終わっていなければならない演習 |
| `phases` | 所要時間の内訳 |
| `files_to_edit` | このステップで増える、または変わるファイル |
| `hints` | 詰まったときに開くヒントファイル |
| `challenge` | 発展課題で成果物が変わるなら `true`、読むだけ・考えるだけなら `false` |
| `tags` | 扱うテーマ |

## ヒントの使い方

`hints/` は詰まってから開きます。対応表は [hints/README.md](../hints/README.md) にあります。

先に全部読むと、自分で考える部分が答え合わせに変わります。特に A-2（自分で懸念を書き出す）と B-2（バグを探す）は、先に読むと演習が成立しません。

発展課題（`challenges/`）に対応するヒントはありません。自分で考えて試す時間です。

## 書き込む先は memo.md 1本です

演習中に「書いてください」と出てくる先は、ほぼすべて `handson/memo.md` です。配布時点で `## A-0` から `## B-6` までの見出しが空のまま並んでいるので、該当する見出しを探して、その下に書き足してください。

**見出しの文字列と並び順は変えないでください。** `/selfcheck` が `## A-2` の位置を目印にして、あなたが書いた懸念を点検の入力に取り込みます。

## 進めるうえでの決めごと

- `kadaiA/dummy_data.csv` と `kadaiB/src/main/resources/data.sql` は書き換えません
- `_harness_kit/` は講師の合図があるまで開きません
- 本研修では Git と GitHub を使いません。Issue はローカルの Markdown ファイルです
- 実在する社名・氏名・メールアドレス・電話番号は入力しません
- 同じプロンプトを送っても出力は毎回少しずつ変わります。手順書の文面どおりの答えが返らなくても失敗ではありません
