# step05 初見コードの読み解きと、自動化の提案

対応する演習ステップ: B-0 課題Bを起動して現状を掴む [8min] ／ B-1 claude-code-setup に自動化を提案させる [8min]
対応する演習md: `exercises/exB0_start_kadaiB.md` ／ `exercises/exB1_setup_recommender.md`
VSCode で開くフォルダ: `handson`（`kadaiB` を単体で開かないでください）

課題Bは Java と Spring Boot のプロジェクトです。Java を書いたことがなくても進みます。読むための足場を AI に作らせるところから始めます。

---

## 参考プロンプト

### B-0 起動と、全体像の把握

先に `_harness_kit/step2_kadaiB/.claude/skills/` の4つのフォルダ（`claude-automation-recommender` / `skill-creator` / `threat-model` / `_lib`）を `handson/.claude/skills/` へコピーし、`_harness_kit/step2_kadaiB/CLAUDE_追記.md` の中身を `handson/CLAUDE.md` の末尾に貼り付けて保存します。**そのあとパネルを開き直します。**

アプリの起動は VSCode のターミナル（<kbd>Ctrl</kbd>+<kbd>`</kbd>）で行います。

```
cd kadaiB
./mvnw spring-boot:run
```

Windows の PowerShell では `cd kadaiB` のあと `.\mvnw.cmd spring-boot:run` です。`Started EquipmentApplication` が出たら、ブラウザで `http://localhost:8080/equipments` を開きます。

起動を待つあいだに、Claude Code パネルで全体像を聞きます。

```
@kadaiB のプロジェクト構成を説明してください。
どの画面があり、1つの画面を表示するときに処理がどのファイルをどう流れるかを、日本語で順番に教えてください。
```

読む順番に迷ったら、足場としてコメントを入れさせます。

```
@kadaiB/src/main/java/com/example/equipment/service/EquipmentServiceImpl.java
このファイルの各メソッドに、何をしているかがわかる日本語コメントを追加してください。
ロジックは一切変更しないでください。
```

### B-1 自動化を提案させる

```
@kadaiB のプロジェクトに合った自動化を提案してください。
```

5カテゴリの提案が返ります。1件だけ選んで、実際に作らせます。

```
提案のうち「（選んだ項目名をそのまま書く）」を、実際に .claude/ の下に作ってください。
作ったファイルのパスと、それが何をするものかを最後に1行で教えてください。
```

## なぜその形か

起動を先にしているのは、動く状態を見てから壊れている箇所を探すほうが速いからです。コードから読み始めると、どこが仕様どおりでどこが違うのかの基準が持てません。画面を一巡して、動くところと止まるところを体で覚えてから読みます。

構成の説明を「処理がどのファイルをどう流れるか」と聞いているのは、ファイルの一覧が欲しいのではなく、追い方が欲しいからです。Spring Boot は controller から service、repository、そしてデータベースへと流れ、画面は Thymeleaf のテンプレートが受け持ちます。この流れを1回言葉にしておくと、あとで「ここを直す」と言われた場所がどの層かがわかります。

コメント追加で「ロジックは一切変更しないでください」と縛るのは、縛らないと直し始めるからです。読むための作業と、直す作業を混ぜないでください。混ざると、あとで差分を見たときに、自分が頼んだ変更なのか AI の判断なのかが分かれません。

B-1 の Skill は読み取り専用です。提案はしますが、ファイルを一切書き換えません。だから手順を分けて「実際に作ってください」と別に頼む必要があります。**読むだけの部品と、書く部品を分けておく。** チームで安全に運用するときの、いちばん基本の分け方です。

参考リンク: Skill の仕組みは https://docs.claude.com/en/docs/claude-code/skills 、Spring Boot 本体は https://spring.io/projects/spring-boot に公式情報があります。

## 比較観点

- 一覧は全件表示されるのに、詳細を開くとエラーになる備品があります。エラーになる備品とならない備品で、一覧に見えているデータの何が違いますか。ここが B-2 の入口です。
- AI が説明した処理の流れと、実際のファイルの中身。1箇所だけでいいので自分で開いて確かめてください。説明が合っているかを1回確かめておくと、その後の説明をどこまで信用してよいかの目安ができます。
- コメントを入れる前と後で、自分がコードを読む速さがどれだけ変わりましたか。変わらなかった場合、コメントの粒度が細かすぎるか粗すぎます。
- B-1 の提案を `@kadaiA` に対して投げると、内容はどう変わりますか。技術スタックが違うと提案が変わるなら、この Skill は何を見て判断していると考えられますか。
- 5カテゴリの提案のうち、自分の職場でいちばん効きそうなのはどれですか。理由を `memo.md` の `## B-1` に1行書いてください。

## よくある勘違い

- 「初回起動が遅いのは失敗」。初回はライブラリのダウンロードが走るため数分かかります。2回目以降は数十秒です。**3分待っても進まないときは挙手してください。** 社内のネットワーク設定が原因の場合があり、その場合は講師が用意した依存キャッシュを配ります。
- 「Java を知らないと課題Bは無理」。B-4 まで到達するのに Java の文法知識は要りません。必要なのは、画面の動きと業務ルールを突き合わせる読み方です。
- 「エラーが出た画面は自分の操作ミス」。この課題では、エラーが出ること自体が題材です。エラー画面が出たら、そのときの操作をメモしてください。それが再現手順になります。
- 「Skill は提案してくれたのだから、そのまま全部作らせればいい」。1件だけ選んでください。全部作ると、中身を読まないまま設定だけが増えます。読めない設定は、あとで誰も直せません。
- 「Skill が発火したかどうかはわからない」。実行サマリーの「従った設定」欄に Skill 名が出ます。出ていなければ発火していません。
- 「`CLAUDE_追記.md` は読むだけのファイル」。中身を `CLAUDE.md` の末尾に貼り付けて保存してください。貼らないと課題B用のルールが効きません。

## 次のアクション

1. `handson/.claude/skills/` に4つのフォルダがそろっているか、エクスプローラで数えます。
2. ブラウザで一覧を開き、リンクをいくつか押して、詳細が出る備品と出ない備品を1件ずつ見つけます。
3. 時間が余ったら `http://localhost:8080/h2-console` を開いてください。JDBC URL は `jdbc:h2:mem:equipmentdb`、ユーザー名は `sa`、パスワードは空欄です。画面に出ているデータとテーブルの中身が一致しているかを見ておくと、B-2 で原因の切り分けが速くなります。
4. 次は B-2（`exercises/exB2_plan_hunt.md`）です。参考プロンプトは `step06_issue_driven.md` にあります。

うまくいかないときは次を確認してください。

- ポート 8080 が使用中と出る: 以前に起動したアプリが残っています。そのターミナルで <kbd>Ctrl</kbd>+<kbd>C</kbd> を押して止めてから起動し直します。
- `./mvnw` が見つからない: `cd kadaiB` が実行できていません。ターミナルの現在位置を確認してください。
- `java -version` が 17 でない: 事前セットアップガイドの Java の項を見直してください。切り分けがつかないときは挙手してください。
- 起動時のエラーが読めない: エラー全文をコピーして `このエラーの意味を、Java を知らない人にもわかるように説明してください。` と貼り付けます。
