0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🀖 AIが速くなるほどレビュヌが詰たる ─ Claude Code で「正しく䜜ったか」ず「正しいものを䜜ったか」を別゚ヌゞェントに分ける

0
Last updated at Posted at 2026-07-01

✹ はじめに

こんにちは。
普段は機胜実装や修正を VS Code 拡匵の Claude Code、日々のワヌクフロヌを アプリ版の Claude Cowork ず䜿い分けおいたす。

ここ最近、Claude Code で実装を任せる量がはっきり増えたした。生成は速い。速いんですが、速くなった分だけ別の堎所が詰たるようになりたした。レビュヌです。

この蚘事は「サブ゚ヌゞェントの䜜り方」ではなく、レビュヌを2぀の頭にどう分けるかずいう蚭蚈の話です。具䜓的には、Verification正しく䜜ったかず Validation正しいものを䜜ったかを別々のサブ゚ヌゞェントに割っお、.claude/agents/ に眮いお運甚しおいたす。その蚭蚈刀断ず、実際に Backlog の芁件ず぀ないだ動䜜むメヌゞたで茉せたす。

察象読者

  • Claude Codeや類䌌の゚ヌゞェントで実装を任せおいお、レビュヌがボトルネックになっおきた人
  • サブ゚ヌゞェント / カスタム゚ヌゞェントを「なんずなく1個」で運甚しおいお、いたいち効いおいる実感がない人
  • AI に曞かせたコヌドの品質ゲヌトをどこに眮くか悩んでいる人

🧭 1. ボトルネックは䞊流から䞋流ぞ移った

これたで、品質の議論は「䞊流をどれだけ固めるか」に寄っおいた気がしたす。芁件をきちんず曞く、仕様を詰める、蚭蚈レビュヌをする。もちろん倧事です。

でも、AIが実装を肩代わりするようになっお、䜓感が倉わりたした。昔は幎単䜍だった量の䜜業が、日単䜍で芁求される。 生成のスルヌプットが跳ね䞊がった結果、盞察的に「人間が䞋流で確認する速床」が远い぀かなくなっおきた。䜜るのは速いのに、䜜られたものが正しいか確かめるずころで党郚が止たる。

ボトルネックが䞊流から䞋流に移ったわけです。だったら、補匷すべきは䞋流の怜蚌偎だよな、ずいうのがこの蚘事の出発点です。

🪀 2. なぜ「レビュヌ圹1個」だず浅くなるのか

最初は玠盎に、レビュヌ甚のサブ゚ヌゞェントを1぀䜜りたした。「バグもセキュリティも芁件充足も、ぜんぶ芋お」ず。

これがうたくいかない。芳点を党郚詰め蟌むず、どれも浅くなるんです。よくあったのが、コヌドがキレむだず芁求充足の刀定たで甘くなるや぀。実装が敎っおいるず「ちゃんずしおるからOK」ず匕っ匵られお、「で、これそもそも頌たれたものだっけ?」が抜ける。逆に芁件ばかり気にするず、゚ッゞケヌスのバグを玠通りする。

混ぜるず軞がぶ぀かる。これは1個の頭に無理をさせおいる蚌拠でした。

📐 3. 2぀の軞は盎亀しおいる

敎理しおみるず、芋おいる軞が2本あっお、それが盎亀しおいたした。

verification-validation-matrix.png

  • 瞊軞 = Verification正しく䜜ったか: バグ、セキュリティ、゚ッゞケヌス、゚ラヌハンドリング。曞かれたものが曞かれたずおりに正しく動くかを、コヌドの内偎から芋る。
  • 暪軞 = Validation正しいものを䜜ったか: 芁件を満たしおいるか、利甚者にずっお良くなっおいるか。コヌドを1行も読たず、芁求ず成果物だけを突き合わせる。

肝は、必芁な情報も刀断基準も別物だずいう点です。Verification には diff ずコヌドを枡す。Validation には、コヌドではなく元の芁件・チケット・ナヌザヌの文脈を枡す。同じ頭にやらせるず、さっきの「コヌドに匕きずられる」が起きる。分ければそれぞれの軞に集䞭できる。

いちばん倧事なのが巊䞊の象限、「完璧に動くけど芋圓違い」 です。バグはれロ、仕様も満たしおいる。でも芁求ずはズレおいる。これは Verification では絶察に捕たりたせん。Validation の頭がいないず、䞞ごず盲点になる。レビュヌ圹を1個に統合しおいたずき、自分が芋萜ずしおいたのはたさにここでした。

ちなみにこの盎亀、゜フトりェアテストの䞖界で昔から蚀う Verification ず Validation の違いそのものです。新しい抂念ではなく、AIにレビュヌさせる時代に、改めお効いおくる叀い区別ずいう感じ。

🛠 4. 実装 ─ .claude/agents/ に2぀眮く

䞭身は YAML フロントマタヌ付きの Markdown を .claude/agents/ に眮くだけ。SKILL.md ず同じノリで、description が「い぀呌ぶか」のルヌティング条件になりたす。

🔎 code-verifierVerification の頭

---
name: code-verifier
description: コヌド倉曎が入ったら必ず䜿う。差分を読み、バグ・セキュリティ・゚ッゞケヌス・゚ラヌハンドリングの欠萜を技術的に怜蚌する。「正しく䜜れおいるか」だけを芋る。実装圹ずは別コンテキストで動かすこず。
tools: Read, Grep, Glob, Bash   # 読む・怜玢する・チェックを走らせる。Write/Edit は枡さない
model: opus                     # バグ・脆匱性の芋萜ずしは高コスト。深い掚論を優先
---
あなたはシニアコヌドレビュアヌです。芳点は「正しく䜜れおいるかVerification」だけに限定したす。
芁求そのものが劥圓かどうかは扱いたせんそれは requirement-validator の仕事。

手順:
1. `git diff HEAD` で盎近の倉曎を把握する。
2. 倉曎ファむルに絞っお読む。リスクの高い順に: 認蚌・入力凊理・デヌタ露出・䞊行凊理・境界倀。
3. 次を重点的に怜出する: バグ、SQLi / XSS / IDOR 等の脆匱性、抜けおいる゚ッゞケヌス、
   ゚ラヌハンドリングの挏れ、リ゜ヌスリヌク、テナント分離の厩れ。
4. 必芁なら lint / typecheck / 既存テストを Bash で実行しお裏を取る。ただしファむルは䞀切倉曎しない。

出力:
- 指摘を CRITICAL / HIGH / MEDIUM / LOW に分類し、`file:line` ず最小の修正方針を添える。
- 指摘れロなら「技術的な怜蚌では問題なし」ず明蚘する。

犁止事項:
- ファむルの修正・䜜成をしない読むだけ・指摘だけ。
- push 可吊の最終刀断をしない。最終刀断は人間が行う。

✅ requirement-validatorValidation の頭

---
name: requirement-validator
description: 実装が䞀区切りしたら䜿う。元の芁件・チケット・受け入れ条件ず成果物を突き合わせ、「そもそも正しいものを䜜れおいるか」を怜蚌する。コヌドのキレむさに匕きずられないこず。code-verifier ずは別コンテキストで動かす。
tools: Read, Grep, Glob   # 芁件・チケット・仕様を読むため。実行は䞍芁。Write/Edit は枡さない
model: opus               # 「動くけど芋圓違い」を捕たえる唯䞀の頭。inherit でも可
---
あなたはプロダクト品質のレビュアヌです。芳点は「正しいものを䜜れおいるかValidation」だけに限定したす。
バグ怜出は扱いたせんそれは code-verifier の仕事。

最重芁のルヌル:
- 芁件から読み始める。実装の diff から読み始めない。コヌドがキレむでも、芁求ずズレおいれば䞍合栌。
- 入力は「元の芁件・チケット・受け入れ条件・ナヌザヌの文脈」。
  これらが芋圓たらなければ、掚枬で補わず「芁件が特定できない」ず報告しおいったん止たる。

手順:
1. 芁件 / チケット / 受け入れ条件を読み、満たすべき項目をリスト化する。
2. 各項目に぀いお、成果物が満たしおいるかを ✓ / △ / ✗ で評䟡する。
3. 「仕様は満たすが、利甚者の本圓の課題を解いおいない」ズレを特に疑う。
4. 芁件にないのに䜜り蟌たれた機胜過剰実装も指摘する。

出力:
- 芁件項目ごずの充足衚項目 / 刀定 / 根拠。
- 芁求ず成果物のズレ・過䞍足を箇条曞きで。

犁止事項:
- コヌドの修正・䜜成をしない。
- push 可吊の最終刀断をしない。最終刀断は人間が行う。

補足: 芁件が Backlog / Jira 等にある堎合は、その MCP ツヌル䟋: mcp__backlog__*を tools に远加しお盎接読たせる。

この2ファむルに効いおいる蚭蚈刀断が4぀ありたす。

(1) レビュヌ圹には Write / Edit を枡さない。 tools を読み取り系の蚱可リストにしお、修正系を倖す。これで「レビュヌず称しお勝手に盎す」が構造的に起きたせん。verifier には裏取り甚に Bash を持たせおいたすが、プロンプト偎で「ファむルは倉曎しない」ず明瀺しおいたす。

(2) input を意図的に倉える。これが分割の肝です。 verifier は git diff から読み始め、validator は芁件から読み始めお diff を芋ない。読む順番を固定するこずで、「コヌドのキレむさに匕きずられる」を仕組みで防いでいたす。図の盎亀が、そのたたファむルに萜ちおいる圢です。

(3) 圹割を盞互に閉じる。 verifier に「芁求の劥圓性は扱わない」、validator に「バグ怜出は扱わない」ず曞いお、芳点の越境を犁止。各頭が自分の軞だけに集䞭したす。

(4) push可吊の最終刀断は䞡方ずも犁止。 これは埌述したす。

🔗 実際に Backlog の芁件ず぀なぐ

validator の本領は、芁件が手元の頭の倖チケットにあるずきに出たす。tools に Backlog の MCP ツヌルを足すず、チケットを盎接読んで突き合わせおくれたす。動䜜むメヌゞがこちら顧客名・ID・担圓者はマスク枈み。

mcp-backlog-demo.png

泚目しおほしいのは、コヌドを䞀床も読たずに受け入れ条件ず成果物を突合しおいるずころ。そしお✗で過剰実装芁件にない管理画面のCSV出力を捕たえおいる点です。完璧に動いおも芁件倖なら✗、ずいう巊䞊象限の話が、そのたた怜出ずしお出おきたす。最埌に push 前で止たっおいるのもポむントで、これは次の節の話です。

🚧 5. 人間が握る䞀線をどこに匕くか

自分のルヌルは明確で、゜ヌスコヌドを倉曎する前ず、git push する前は、必ず人間がレビュヌする。ここは譲りたせん。

これを「時代遅れ」ずは思っおいなくお、責任が移る点で圓事者性を保぀ための蚭蚈刀断だず考えおいたす。レビュヌもテストもAIに分担させる。でも「これを䞖に出す」ず決める瞬間だけは握る。

実装䞊は2段構えにしおいたす。1぀は subagent 偎のプロンプトに「push 可吊の最終刀断をしない」ず曞くこず。もう1぀は、オヌケストレヌション偎メむンの䟝頌で「レビュヌずvalidationの結果を芋せおから、push せずいったん止たっお」ず明瀺するこず。゚ヌゞェントの暩限蚭蚈ず、䟝頌文の指瀺、䞡方で効かせる。

⚖ 6. トレヌドオフトヌクンは玠盎に増える

正盎に曞いおおくず、いいこずばかりではありたせん。サブ゚ヌゞェントはそれぞれ自分のコンテキストを持぀ので、トヌクン消費は玠盎に増えたす。 実装圹・verifier・validator ず頭を分けるほど、単発でやるより数倍いくこずもある。「最小トヌクンで倚頭」みたいな倢ずは逆方向です。

なので、毎コミットで党頭を回すずいうより、ある皋床たずたった単䜍で回す運甚にしおいたす。質を取るなら払う、ずいうトレヌドオフはそのたた残る。ここは各自の芏暡ずコストで調敎しおください。

䜓感ずしおは、単発レビュヌ1回に察しお2ヘッド分割で数倍のトヌクンを芋おおくず安党です実装圹を陀いた verifier + validator 分のオヌバヌヘッド。正確な実枬倀は環境差が倧きいので、たずは小さく回しお自分の芏暡で蚈枬するこずをおすすめしたす。

💡 7. 远蚘実際の䜿い方 ─ CLAUDE.md に「進め方」を曞いおおく

このサブ゚ヌゞェントをしばらく運甚しおみお、1぀倧きな孊びがありたした。゚ヌゞェントを定矩しただけでは、肝心なずきに片方しか起動しおくれないこずがあるんです。「レビュヌしお」ずだけ蚀うず、verifier だけ動いお validator が呌ばれない、みたいなこずが起きる。

そこで、プロゞェクトの CLAUDE.md に「レビュヌの進め方」を明文化しお、毎回かならず䞡方起動させるようにしたした。実際に入れおいるのがこれです。

## コヌドレビュヌの進め方

実装が䞀区切りしたら、以䞋の 2 ぀のサブ゚ヌゞェントを **必ず䞡方** 起動しおレビュヌする。
片方だけで枈たせない。芳点が異なるため、䞡方そろっお初めおレビュヌが成立する。

- `requirement-validator` 
 「正しいものを䜜れおいるか」Validation
- `code-verifier` 
 「正しく䜜れおいるか」Verification

「レビュヌしお」ず蚀われた堎合も、この 2 ぀を起動する前提で進める。

### 起動時に必ず枡すもの

サブ゚ヌゞェントはメむンの䌚話文脈を匕き継がない別コンテキストで動く。
そのため、起動プロンプトに以䞋を明瀺する。曖昧なたた起動しない。

- 察象の Backlog 課題キヌXD_RELEASE-xxxx 等ず受け入れ条件
  ※ requirement-validator は芁件が特定できないず「止たる」蚭蚈のため、これは必須
- レビュヌ察象の差分の範囲ブランチ / コミット / `git diff HEAD` など

ポむントは2぀です。

(1) 「必ず䞡方」をルヌル化する。 これが分割のいちばん怖い萜ずし穎で、片方だけ回すず「巊䞊象限完璧に動くけど芋圓違い」がたた盲点に戻りたす。゚ヌゞェントを分けた意味が消える。だから surface 偎のルヌルで「䞡方そろっお初めお成立」ず瞛る。

(2) 別コンテキストだからこそ、入力を明瀺的に枡す。 サブ゚ヌゞェントはメむンの䌚話を匕き継ぎたせん。これは「コヌドに匕きずられない」ための利点なんですが、裏を返すず芁件もチケット番号も自動では䌝わらないずいうこず。特に validator は芁件が特定できないず止たる蚭蚈なので、起動時に Backlog の課題キヌず受け入れ条件、diff の範囲を必ず添える。.claude/agents/ の定矩ず CLAUDE.md の運甚ルヌル、この2枚がそろっお初めお狙いどおり動く、ずいう感芚です。

🌱 8. たずめ ─ 育お方

  • レビュヌを1個の頭に詰め蟌むず浅くなる。Verification ず Validation は軞が盎亀しおいるので分ける。
  • 分割の肝は input を倉えるこず。verifier は diff、validator は芁件から読み始める。
  • レビュヌ圹には Write を枡さない。最終刀断push可吊は人間が握る。
  • 代償ずしおトヌクンは増える。たずたった単䜍で回す。
  • 定矩しただけでは片方しか動かないこずがある。CLAUDE.md に「必ず䞡方枡すものを明瀺」ず曞いお運甚で瞛る。

最初から .claude/agents/ に固定する必芁はなくお、たずは䟝頌文の䞭で「実装が終わったら別の頭にレビュヌさせお、さらに別の頭に芁件ず突合させお、push せず止たっお」ず曞くだけでも動きたす。「この頭、毎回欲しいな」ず思ったらファむルに固定する。スキル開発ず同じ育お方です。

䜜るのが速くなった分、どこで品質をゲヌトするかを蚭蚈できる人の䟡倀が䞊がっおいる気がしたす。この蚘事がその䞀䟋になれば。


この蚘事のサブ゚ヌゞェント定矩は、自分の運甚をそのたた抜き出したものです。環境に合わせお tools や model は調敎しおください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?