---
session: S03
exercise: A-5
title: コマンド一つでパイプラインを回す
duration: 20min
difficulty: 3
prerequisite: [A-2, A-3, A-4]
phases:
  実行: 5min
  中間データを見る: 8min
  報告書を読む: 7min
files_to_edit:
  - kadaiA/index.html  # 修正が入る場合があります（AI が実行します）
  - memo.md            # ## A-5 に気づきを書きます
hints: hints/step04_pipeline.md
challenge: true
tags: [スラッシュコマンド, サブエージェント, 中間データ, ループ]
---

# 演習 A-5: コマンド一つでパイプラインを回す

コマンド1本で、AI が観点に沿って成果物を点検し、中間データを残し、直し、直しきれたかを再判定して、人間向けの報告書を出すところまでを体験します。演習Aの山場です。

| 項目 | 内容 |
|---|---|
| 所要 | 20分（実行3〜5分を含む） |
| 触るフォルダ | `handson` 全体（`.work/` が新しくできます） |
| 前提 | A-3 で `CLAUDE.md`・`.claude`・`docs` の3つを配置済みであること。`docs` が無いと点検の観点が読めません |
| 生成物 | `kadaiA/REPORT.md` と `.work/` の中間データ4本 |
| 終わったと言える状態 | 報告書に指摘・修正・残件の数字が入り、中間データが4本揃っている |

---

## 目的

「AI に頼む」を1回の会話ではなく、決まった手順の実行として扱えることを体験します。

A-1 から A-4 まで、依頼はすべて会話でした。会話は柔軟ですが、毎回書き方が違います。同じ点検を明日もう一度やろうとすると、同じようには書けません。手順を1本のファイルに書いておけば、コマンド名を打つだけで同じ手順が動きます。

このステップでは、実行中に何が起きているかを見ることに時間を使います。結果だけ受け取ると、中で何をしたのかがわからないまま報告書を信じることになります。`.work/` に残る途中経過を開けば、どのファイルを見て、何を根拠に、何を直すと決めたのかが全部追えます。

---

## 操作

### 1. コマンドを実行する

Claude Code パネルで次を送ります。

```
/selfcheck kadaiA
```

`/` を打つと候補が出ます。`selfcheck` を選び、引数に `kadaiA` を付けて送信してください。引数を省略しても `kadaiA` が対象になりますが、明示するほうが何を点検したかが記録に残ります。

3分から5分かかります。途中で止めないでください。

### 2. 実行中に `.work/` を眺める

実行が始まったら、VSCode のエクスプローラで `handson/.work/` フォルダを開いたままにします。フォルダは実行開始時に作られます。ファイルが順に増えていく様子が見えます。

```
.work/
├── 01_inventory.md    点検対象として拾ったファイルの一覧
├── 02_findings.json   観点ごとの指摘（深刻度つき）
├── 03_fix_plan.md     どれを直すと決めたか
└── 04_loop_log.md     何周回って、各周で何件残ったか
```

番号順に増えます。増えていく間、AI は点検専任のサブエージェント（`.claude/agents/reviewer.md`）を呼び出しています。このサブエージェントは読み取りしかできない設定になっていて、コードを書き換えません。点検する役と、直す役を分けてあります。

### 3. 報告書を読む

完了したら `handson/kadaiA/REPORT.md` を開きます。次の6節が並んでいます。

| 節 | 何が書かれているか |
|---|---|
| 1. 結論 | 3行以内。何件指摘し、何件直し、何件残したか |
| 2. 数字のまとめ | 指摘の内訳（高／中／低）、修正件数、残件数、ループ何周 |
| 3. 直したもの | 観点・ファイル・変更内容・確認方法 |
| 4. 直さなかったもの | なぜ直さないと判断したか |
| 5. 人間に判断してほしいこと | AI が決められなかったもの |
| 6. 使った観点と出どころ | どのファイルのどの見出しに基づくか |

まず1節と2節を読み、数字を頭に入れてください。そのあと5節に飛びます。**5節がこの報告書で一番重要です。** AI が「自分では決められない」と判断した箇所が並んでいます。全部を AI が決めて終わる報告書にしていないのは、そこが実務での線引きだからです。

### 4. 中間データを番号順に開く

報告書を読んだあと、`.work/` の4本を順に開きます。読む観点を挙げておきます。

**`01_inventory.md`**：点検対象に何が挙がっていますか。`dummy_data.csv` は「参照のみ」になっているはずです。データを点検の材料にはするが、書き換え対象からは外す、という区別が最初に付けられています。

**`02_findings.json`**：指摘が JSON の配列で並んでいます。1件開いて、`ファイル` `行` `内容` `根拠` の4つが埋まっているかを見てください。`根拠` には、どのファイルのどの観点に基づく指摘かが書かれています。根拠のない指摘は出さない決まりにしてあります。

**`03_fix_plan.md`**：指摘のうち、どれを直すと決めたかが表になっています。全部は直していないはずです。判断の基準は、深刻度「高」は必ず直す、「中」は依頼外の機能追加にならず既存の動作を壊さないものだけ、「低」は直さない、というものです。

**`04_loop_log.md`**：周ごとの表が並んでいます。開始時に高が何件あって、何件直して、終了時に何件残ったか。そして次の周に進んだのか、止まったのか。

### 5. ループが何周で止まったかを確認する

`04_loop_log.md` の一番下を見ます。止まった理由が書かれています。次の3通りのどれかです。

- 深刻度「高」が0件になったので停止
- 上限3周に達したので打ち切り（残件は報告書の未対応欄へ）
- 同じ指摘の修正が2周続けて失敗したので打ち切り

自分がどれだったかを `memo.md` の `## A-5` に書いてください。周回数と止まった理由の2行で構いません。

### 6. アプリがまだ動くことを確かめる

ブラウザを再読み込みして、一覧50件・検索・詳細が動くことを確認します。点検の過程で修正が入っているため、直した結果として壊れていないかを人間の目で見ます。

---

## 自分で考える

`02_findings.json` の指摘は、A-2 であなた自身が書き出した5個と比べてどうですか。

数は増えましたか。増えたとしたら、増えた分は何を見ているから出てきたのでしょうか。観点の一覧は `.claude/skills/kadaia-review/SKILL.md` に書かれています。開くと、A-01 から A-13 までの観点が表になっています。「ブラウザで開くだけで動くか」「データが全件出るか」「入力値の扱い」といった具合です。

この表を見てから、もう一度自分の5個を読み返してください。同じことを別の言葉で書いていた項目はありませんか。逆に、この表に無い視点を自分が書いていませんでしたか。

最後の観点 A-13 に注目してください。「受講者の懸念」という観点があり、`memo.md` の `## A-2` に書かれた内容のうち、他の観点で拾えなかったものを拾う決まりになっています。自分の書いた懸念が指摘に入っていたら、`内容` の冒頭に「受講者の懸念より:」と付いています。探してみてください。

---

## 生成物の名前と場所

- `handson/kadaiA/REPORT.md`（最終報告・人間向け）
- `handson/.work/01_inventory.md`
- `handson/.work/02_findings.json`
- `handson/.work/03_fix_plan.md`
- `handson/.work/04_loop_log.md`
- `handson/kadaiA/index.html`（修正が入っている場合）

`.work/` は消さないでください。実行が終わったあとに開けることが、この演習の中身です。研修後に社内で説明するときも、途中経過が残っているほうが伝わります。

---

## OK基準

1. `kadaiA/REPORT.md` が生成され、指摘件数・修正件数・残件数が **数字で** 書かれている
2. `.work/` に中間ファイルが **4本** 揃っている
3. `04_loop_log.md` に **2周以上** の記録がある（1周で深刻度「高」が0件になった場合は1周でも可。その旨がログに書かれていること）
4. `REPORT.md` の第5節「人間に判断してほしいこと」に **1件以上** 書かれている
5. 修正後もブラウザでアプリが動く（一覧50件・検索・詳細）

4番が空の報告書は、この演習の趣旨から外れています。空だった場合は「判断が分かれた箇所か、置いた前提を1件挙げてください」と追加で依頼してください。

---

## 追加と考察

`/selfcheck` は `.claude/commands/selfcheck.md` に書かれた手順書です。**中身は日本語の文章で、プログラムではありません。**

開いて読んでみてください。「0. 前提と引数」から始まり、入力を読む、棚卸しを書く、点検する、修正する、ログを書く、報告書を書く、という順に手順が並んでいます。表の書式まで見本付きで指定されています。書いてあるとおりに AI が動いた結果が、いま手元にある `.work/` と `REPORT.md` です。

「コマンドを作る」とは、この文章を1本書くことです。プログラミングの知識は要りません。必要なのは、自分がいつもやっている手順を、抜けなく順番どおりに書き出せることです。手順が言語化できていない作業は、コマンドにもできません。

もう1点、実行中にサブエージェントを1件ずつ順番に呼んでいたことにも触れておきます。20名が同時に実行する研修環境では、並列で走らせると接続先の上限に当たります。手順書の中で「並列で起動しないでください」と1行指定してあります。動く仕組みを書くだけでなく、動かす環境の都合も手順書に書ける、という例です。

---

## 発展課題

`.claude/skills/kadaia-review/SKILL.md` の観点リストに、自分の職場でレビューされる観点を1つ足してください。観点IDは `A-14` から続けます。

足すときに難しいのは「具体的に見るもの」の欄です。ここが抽象的だと、点検時に拾われません。「可読性を確認する」では拾えません。「関数が50行を超えていないか」なら拾えます。コードのどの記述を見れば判定できるかまで書くのが条件です。

足したら `/selfcheck kadaiA` をもう一度回します。指摘は増えましたか。

増えなかった場合、原因は2つ考えられます。そもそも該当する箇所が無かったか、観点の書き方が拾える形になっていなかったかです。どちらかを切り分けるには、`index.html` を自分の目で見て、その観点に該当しそうな箇所があるかを探します。あるのに拾われなかったなら、書き方の問題です。書き直して3回目を回してみてください。

2回目以降の `.work/` は上書きされます。1回目の結果を残したい場合は、`REPORT.md` を `REPORT_1.md` に名前を変えてから回してください。

---

## うまくいかないとき

**`/selfcheck` が候補に出てこない**

`.claude/commands/selfcheck.md` が `handson` 直下に配置されているかを確認してください。A-3 でコピーしたあと、パネルを開き直していない場合も出ません。開き直してから、もう一度 `/` を打ってみてください。

**指摘が数件しか出ず、報告書が薄い**

`handson/docs/` に4本のファイルが揃っているかを確認してください。A-3 で `docs` のコピーを飛ばすと、点検の観点が読めないまま進みます。`.work/01_inventory.md` の「読めなかったもの」の欄に、読めなかったファイル名が出ています。`_harness_kit/step1_kadaiA/docs` をコピーし、パネルを開き直してから `/selfcheck kadaiA` を回し直してください。

**実行が5分以上返ってこない**

20名が同時に実行しているため、混み合うと時間がかかります。10分を超えても終わらない場合は、いったん停止して `/selfcheck kadaiA` をもう一度送ってください。`.work/` にファイルが1本でもできていれば、途中まで進んでいた証拠です。

**`.work/` にファイルが2本しかできていない**

点検の途中で止まっています。`01_inventory.md` を開いて、「読めなかったもの」の欄を見てください。入力のどれかが見つからずに止まっている場合があります。多いのは `memo.md` の `## A-2` が空のケースです。空でも進む作りにしてありますが、書いてあるほうが結果は濃くなります。

**指摘が0件だった**

そのまま報告書に「指摘0件」と書かれていれば、それも結果です。ただし A-2 で自分が5個書けたのに AI が0件なら、点検対象が正しく拾えていない可能性があります。`01_inventory.md` の点検対象一覧に `kadaiA/index.html` が入っているかを確認してください。

**修正が入ったらアプリが動かなくなった**

ブラウザの `F12`（Mac は `Cmd + Option + I`）で Console のエラーを確認し、そのまま AI に貼り付けて直してもらいます。`03_fix_plan.md` を見れば、どの指摘に対して何を変えたかが書かれているので、変更箇所の見当が付きます。この状況自体が「AI の修正も検算が要る」という体験です。`memo.md` に1行残しておいてください。

**`04_loop_log.md` が1周で終わっている**

深刻度「高」が最初から0件だった場合は1周で止まります。ログにその旨が書かれていれば正常です。書かれていない場合は、「ログに停止理由を追記してください」と依頼してください。

**元データを書き換えられていないか不安**

`kadaiA/dummy_data.csv` を開いて、1行目が見出し行、データが50行であることを確認してください。`.claude/settings.json` の `deny` でこのファイルの編集を止めているため、書き換えは起きない設定になっています。

---

## 次のステップ

[A-6 ハーネスの有無を比較する](exA6_compare.md) に進みます。素の状態とハーネス投入後で何が変わったかを、持ち帰れる形にまとめます。
