# 生成AIプログラミング入門 ハンズオン

本研修で手を動かすファイル一式です。**VSCode で開くフォルダは、最初から最後まで常にこの `handson` フォルダです。** `kadaiA` や `kadaiB` を単体で開くと、あとで配置する設定ファイルが読み込まれません。作業対象は `@kadaiA/` `@kadaiB/` のようにパスで指定して切り替えます。

## 当日の流れ

演習は「設定が無い状態」から始めて、途中で設定ファイル一式（ハーネス）を自分の手で配置します。同じ AI が、設定の前後でどう変わるかを自分の目で確かめるための順番です。

```
演習A 前半          演習A 後半           演習B
─────────────────────────────────────────────────────────
設定なしで作る  →  _harness_kit/ を   →  Skill 3種を足して
懸念を書き出す      handson 直下へ        バグ修正・テスト・
                    配置する              脅威モデリング
                    実行サマリーが出る
                    /selfcheck が回る
```

配布直後の `handson` 直下に `CLAUDE.md`・`.claude`・`docs` はありません。演習 A-3 で `_harness_kit/step1_kadaiA/` からこの3つをコピーして初めて配置します。無いのは不備ではなく、演習の出発点です。

## フォルダ構成

```
handson/                          ← VSCode で開くのはここ
├── README.md                     この案内
├── memo.md                       気づいたことを書き残すファイル（見出しだけ用意してあります）
├── exercises/                    演習の手順書
│   ├── README.md                 演習一覧（時間・難易度つき）
│   ├── exA0_baseline.md 〜 exA6_compare.md                課題A 7本
│   ├── exB0_start_kadaiB.md 〜 exB6_threat_model.md       課題B 7本
│   └── challenges/               発展課題5本（ch01 〜 ch05）
├── hints/                        詰まったときの参考プロンプト
│   ├── README.md                 ステップとヒントの対応表
│   ├── step01_first_prompt.md    最初の1指示
│   ├── step02_crud_build.md      アプリを組み立てる
│   ├── step03_warning_check.md   危ない箇所を指摘させる
│   ├── step04_pipeline.md        /selfcheck が止まったとき
│   ├── step05_comment_insert.md  初見のコードを読む
│   ├── step06_issue_driven.md    Issue 駆動で直す
│   └── step07_skill_and_threat.md Skill 作成と脅威モデリング
├── _harness_kit/                 設定ファイルの待機場所。合図があるまで開きません
│   ├── README.md
│   ├── step1_kadaiA/             演習 A-3 で handson 直下へコピーする一式
│   │   ├── CLAUDE.md             ← A-3 でコピー
│   │   ├── .claude/              ← A-3 でコピー（settings / commands / skills / agents）
│   │   ├── docs/                 ← A-3 でコピー（/selfcheck が読む観点ファイル4本）
│   │   ├── AGENTS.md             他のAIツール向けの見本。コピーしません
│   │   └── .github/ .cursor/ .codex/  同上。研修中は使いません
│   └── step2_kadaiB/             演習 B-0 で追加する一式
├── kadaiA/                       課題A ゼロからアプリを作る作業フォルダ
│   ├── README.md                 お題・完成イメージ・OK基準
│   ├── dummy_data.csv            備品50件・カテゴリ5種
│   └── docs/お題シート.md        画面要件
└── kadaiB/                       課題B Spring Boot のバグ修正題材
    ├── README.md                 業務ルール5項目（仕様の正本）・到達基準
    ├── issues/                   Issue テンプレートと記入例
    ├── src/                      アプリ本体とテストコード
    └── mvnw / mvnw.cmd           Maven Wrapper（Maven のインストール不要）
```

配布直後の `handson` 直下は、上の8つだけです。`CLAUDE.md`・`.claude`・`docs` はここにはありません。演習 A-3 で自分の手で置きます。

演習を進めると、次のものが増えていきます。

| 増えるもの | いつ | 何か |
|---|---|---|
| `CLAUDE.md` | A-3 | Claude Code が起動時に自動で読む共有文脈 |
| `.claude/` | A-3 と B-0 | 設定・コマンド・Skill・サブエージェント |
| `docs/` の4ファイル | A-3 | `/selfcheck` が点検の観点として読むチェックリスト |
| `kadaiA/index.html` | A-1 | 自分で作るアプリ本体 |
| `kadaiA/REPORT.md` | A-5 | `/selfcheck` が出す点検の報告書 |
| `kadaiA/COMPARE.md` | A-6 | 設定の有無を比べた記録 |
| `.work/` | A-5 | `/selfcheck` の中間データ。消さないでください |
| `kadaiB/issues/ISSUE_002_...md` | B-3 | 自分で起票する Issue |
| `kadaiB/THREAT_MODEL.md` | B-6 | 脅威モデルの出力 |

## 演習の一覧

所要時間・難易度・前提・終わったと言える状態をまとめた索引を [exercises/README.md](exercises/README.md) に置いてあります。**どの順番で、どこまでやれば次に進めるかは、そちらを見てください。** 下の表は当日の全体像だけです。

| # | 内容 | 目安 |
|---|---|---|
| A-0 | 設定が1つも無い状態を確認する | 5分 |
| A-1 | 素の状態で備品管理アプリを作る | 15分 |
| A-2 | 気になる点を自分の言葉で書き出す | 8分 |
| A-3 | ハーネスを配置する | 5分 |
| A-4 | 実行サマリーの出方を確認する | 7分 |
| A-5 | `/selfcheck` でパイプラインを回す | 20分 |
| A-6 | 設定の有無を比較する | 10分 |
| B-0 | 課題Bを起動して現状を掴む | 8分 |
| B-1 | 自動化の提案を出させる | 8分 |
| B-2 | Plan モードで不具合を2件見つける | 12分 |
| B-3 | Issue を起票する | 7分 |
| B-4 | 修正して、動かして、テストを通す | 20分 |
| B-5 | 自分の Skill を作る | 8分 |
| B-6 | 脅威モデリングを回す | 7分 |

手順の本体は `exercises/` の各ファイルにあります。各ファイルは 目的／操作／自分で考える／生成物の名前と場所／OK基準／追加と考察／発展課題 の順で書かれています。

**最初に開くのは [exercises/README.md](exercises/README.md) です。** 19本の手順書の一覧と、進む順番、発展課題5本の一覧がそこにあります。時間が余った人向けの発展課題も、そこから辿れます。

## Claude Code の開き方

VSCode 左のアクティビティバーにある Claude Code のアイコンを押すと、パネルが開きます。ここに日本語で指示を書きます。

設定ファイル（`CLAUDE.md` と `.claude/`）は**パネルを開いた時点で読み込まれます**。ファイルを追加・変更したあとは、パネルをいったん閉じて開き直してください。

Tips: ターミナルから `claude` と入力しても起動できます。研修中はパネルの操作で統一しますが、ご自身の環境ではどちらでもかまいません。

## 事前に確認しておくこと

- VSCode でこの `handson` フォルダが開けること
- Claude Code のパネルが開き、日本語で1往復のやり取りができること
- `java -version` で 17 と表示されること
- `kadaiB` フォルダで `./mvnw -q -DskipTests package` を1回実行し、エラーなく終わること（当日の起動待ち時間が数分から数十秒に縮みます）

うまく動かないときは、事前セットアップガイドの手順を見直すか、当日冒頭の環境確認の時間にお知らせください。

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

- `kadaiA/dummy_data.csv` と `kadaiB/src/main/resources/data.sql` は書き換えません
- `hints/` は詰まってから開きます。先に開くと、自分で考える練習になりません
- `_harness_kit/` は講師の合図があるまで開きません
- 本研修では Git と GitHub を使いません。Issue はローカルの Markdown ファイルです
- 実在する社名・氏名・メールアドレス・電話番号は入力しません
