---
session: S04
exercise: B-2
title: Plan モードで壁打ちしてバグを見つける
duration: 12min
difficulty: 2
prerequisite: [B-1]
phases:
  1件目を調べさせる: 5min
  自分で確かめる: 3min
  2件目を調べさせる: 4min
files_to_edit:
  - memo.md  # ## B-2 に2件分を記録します。コードは変更しません
hints: hints/step06_issue_driven.md
challenge: false
tags: [Planモード, 不具合の特定, 業務ルールとの照合]
---

# 演習B-2 Plan モードで壁打ちしてバグを見つける

| 項目 | 内容 |
|---|---|
| 所要時間 | 12分 |
| 難易度 | 中 |
| 使うもの | Claude Code パネル（Plan モード）／ ブラウザ ／ `handson/CLAUDE.md` |
| 前提 | [B-1](exB1_setup_recommender.md) まで完了。アプリが起動していること |
| 次のステップ | [B-3 Issue を起票する](exB3_issue.md) |

---

## 目的

コードをいきなり直させず、まず AI に**調べさせて、計画だけを出させます**。

演習Aでは、指示するとすぐにファイルが作られました。作るときはそれで進みますが、既にあるコードを直すときは事情が変わります。**触っていい範囲がわからないまま書き換えられると、直ったかどうかの判断ができません。** そこで、先に「どこを、どう直すつもりか」を文章で出させ、人間が読んでから承認します。この使い分けを Plan モードで体験します。

このステップの終わりに、バグを2件特定します。1件は画面にエラーが出るもの、もう1件はエラーが出ないものです。**この2種類の見つけ方が違う**ことが、このステップの中心です。

---

## 操作

### 1. Plan モードに切り替える

Claude Code パネルで <kbd>Shift</kbd>+<kbd>Tab</kbd> を押します。入力欄の近くにモードの表示が切り替わります。もう一度押すと元に戻ります。いまが Plan モードになっていることを目で確認してから進んでください。

### 2. 1件目を調べさせる

難しい言葉は使わず、B-0 で見たままを伝えます。

```
詳細画面を開くとエラーになる備品があります。原因を調べて、直すならどこをどう直すかの計画を出してください。まだコードは変更しないでください。
```

### 3. 返ってきた計画を読む

計画には、少なくとも次が書かれているはずです。

- 原因があるファイルのパス
- クラス名とメソッド名
- 何が起きているか（どの値が想定と違うか）
- 直す方針

**ファイル名だけで、メソッド名まで書かれていない場合は追加で聞いてください。**

```
原因のメソッド名と、該当する行の内容まで具体的に書いてください。
```

### 4. 自分でコードを開いて確かめる

計画に書かれた場所を、VSCode で自分で開きます。AI が「ここが原因です」と言った行を、自分の目で読んでください。

読むときの見方は次のとおりです。Java を書いたことがなくても判断できます。

- その行は、何かの値を使おうとしているか
- その値が「空っぽ」だったとき、どうなると書いてあるか
- 空っぽの場合の分岐が、どこにも書かれていないなら、それが原因の候補です

納得できない場合は、そのまま聞いてください。

```
この行が原因だと言える根拠を、Java を知らない人にもわかるように説明してください。
```

### 5. 2件目を、別の観点で調べさせる

1件目はエラーが出るので気づけました。2件目はエラーが出ません。**エラーが出ないバグは、仕様と見比べないと見つかりません。** 仕様は `handson/CLAUDE.md` の `## 業務ルール（課題B）` に5項目あります。

```
CLAUDE.md の業務ルールと、いまの実装が食い違っている箇所はありませんか。画面・データ・ルールの3つを突き合わせて調べてください。まだコードは変更しないでください。
```

### 6. 出てきた候補を自分で確かめる

2件目の候補が出たら、**必ず画面で確かめてください。** AI が「ここが食い違っています」と言っただけでは、根拠になりません。

候補が複数出たときの選び方は1つです。**画面で症状を再現できたものを選んでください。** 再現できないものは候補のまま残します。どれを選んでも間違いにはなりません。このプロジェクトには業務ルール5項目に対する食い違いが複数仕込んであり、B-4 で実行する受け入れテストが、まだ直っていないものを名指しで教えてくれます。

確かめ方の例です。候補が在庫の表示に関するものなら、一覧画面で在庫数がその境目の値になっている備品を探し、表示がルールどおりかを見ます。候補が日付の表示に関するものなら、同じ備品を一覧と詳細の両方で開き、見比べます。

画面で症状を確認できたら、`memo.md` の `## B-2` に、2件分のファイル名・メソッド名・症状を書き残します。

---

## 自分で考える

1件目は画面にエラーが出るので気づけました。2件目はエラーが出ません。

**エラーが出ないバグを、あなたは何を手がかりに見つけましたか。**

手がかりの候補は3つあります。画面に見えているもの、データの中身（H2 コンソールで見た値）、`CLAUDE.md` に書かれた業務ルール。この3つのうち、どれとどれを突き合わせたときに食い違いが見えましたか。

<details>
<summary>考えた後で開いてください</summary>

エラーが出ないバグは、**動いているものと、動くべきものを見比べたときだけ**見つかります。動いているものは画面とデータで見られます。動くべきものは、どこかに文章で書いてあるはずです。この演習では `CLAUDE.md` の業務ルール5項目がそれにあたります。

実務でこの「動くべきもの」が書かれていないと、食い違いは検出できません。AI に探させる場合はなおさらで、比べる相手がないものは探せません。**仕様を文章で持っていることが、AI に点検させる前提条件になります。**

</details>

---

## 生成物の名前と場所

`handson/memo.md` の `## B-2` に、次の形式で2件分を記録します。

```
## B-2

- 1件目: ファイル名 / メソッド名 / 症状（画面で何が起きるか）
- 2件目: ファイル名 / メソッド名 / 症状（どの業務ルールと食い違うか）
```

コードの変更は行いません。この時点で `kadaiB` の Java ファイルが1文字も変わっていないことが、このステップの正しい状態です。

---

## OK基準

- Plan モードで依頼し、**コードが変更されずに計画だけが返ってきた**
- バグ候補を2件、ファイル名とメソッド名まで特定できた
- 特定した箇所のコードを、自分で開いて確認した
- 2件目については、画面で症状を確認した
- `memo.md` の `## B-2` に2件分を記録した

---

## 追加と考察

Plan モードは「調べて計画を出すが、書き換えない」モードです。使いどころは次の3つです。

1. 初見のコードを扱うとき。どこに何があるかを把握してから触りたい
2. 触る範囲が広いとき。5ファイルにまたがる変更を一気に出されても読めない
3. 直し方が複数あるとき。方針を選んでから書かせたい

逆に、書き捨てのスクリプトや、失敗しても戻せる作業では、いちいち計画を挟むほうが遅くなります。**モードは安全装置ではなく、読む順番の指定だと考えると使い分けやすくなります。**

もう1つ、このステップでは AI に「調べて」と頼みましたが、判断は毎回あなたがしました。計画を読んで、コードを開いて、画面で確かめました。**AI が出した根拠を、人が追えるかどうか**が、この進め方の分かれ目です。追えない根拠は、直った証明にもなりません。

---

## 発展課題

エラー画面やターミナルに出ている長い英語のログ（スタックトレース）の、**いちばん上の行**をコピーしてください。そのまま貼り付けて聞きます。

```
このエラーの意味を、Java を知らない人にもわかるように説明してください。どの行を見ればよいかも教えてください。
```

スタックトレースは上から下へ「呼ばれた順の逆」に並びます。読み方を1回覚えると、AI に貼る前に自分で当たりを付けられるようになります。

余裕があれば、3件目の食い違いも探してみてください。業務ルールは5項目あり、そのうち何項目が守られていないかを数えると、残りが見えてきます。

---

## 詰まったときは

**Plan モードにしたのにファイルが変更された**

モードの切り替えが効いていない可能性があります。パネルの表示を確認し、変更されたファイルを元に戻してから、依頼文に「まだコードは変更しないでください」を必ず添えてください。

**計画が長すぎて読めない**

要約させてください。

```
いまの計画を、変更するファイルごとに3行以内で要約してください。
```

**候補が出てこない、または「問題は見つかりませんでした」と返る**

見る範囲を絞って聞き直します。

```
@kadaiB/src/main/java/com/example/equipment/service/EquipmentServiceImpl.java だけを読んで、CLAUDE.md の業務ルール5項目と1つずつ突き合わせてください。項目ごとに、守られているかどうかを表にしてください。
```

**候補が5件も6件も出てきて、どれを選べばよいかわからない**

次のステップで起票するのは1件です。**画面で症状を再現できたものだけ**を選んでください。再現できないものは、いまの段階では候補のままにしておきます。

どれも再現できて選べない場合は、業務ルールの番号が小さいものから選んでください。番号順に、影響する画面が広いものから並べてあります。

**AI が「修正しました」と言ってしまった**

Plan モードの外に出ています。まず何を変えたかを聞いてください。

```
いま変更したファイルと、変更した行をすべて挙げてください。変更前の状態も書いてください。
```

意図しない変更であれば、VSCode で <kbd>Ctrl</kbd>+<kbd>Z</kbd>（Mac は <kbd>Cmd</kbd>+<kbd>Z</kbd>）で戻せます。戻したあと、保存し直してください。
