1
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 から Codex CLI・Gemini CLI を並列実行して PR をレビューする

1
Posted at

はじめに

筆者は個人開発で Claude Code によるバイブコーディング(自然言語で指示して AI にコードを書かせるスタイル)をしている。この開発スタイルには2つの問題がある。

  1. 個人開発なのでレビュアーがいない
  2. コードを書いたのが AI なので、開発者自身もコードの詳細を完全には把握していない

つまり、中身を十分に理解していないコードを、誰にもレビューされずにマージすることになる。

実は、コードを書いた Claude 自身にレビューを頼むだけでも一定の効果はある。「書く」タスクと「レビューする」タスクではモデルの注意の向け方が変わるようで、自分で書いたバグを自分で見つけてくれることも多い。単体レビューでも十分有用だ。

ただし、同じモデルには同じ盲点がある。そこで、さらに別の AI にもレビューさせる。しかも3つ同時に。 異なるモデルが異なる観点で指摘するため、単体では見逃すバグを拾えるようになった。

本記事では実際に運用している「三体合議レビュー」の仕組みと、再現手順を紹介する。

使うツール

ツール モデル 役割
Claude Code Claude (Anthropic) 司令塔 + レビュアー1
Codex CLI OpenAI モデル レビュアー2
Gemini CLI Gemini (Google) レビュアー3

セットアップ

1. 各ツールのインストール

Claude Code(必須・司令塔):

npm install -g @anthropic-ai/claude-code

Codex CLI:

npm install -g @openai/codex

OPENAI_API_KEY の設定が必要。

Gemini CLI:

npm install -g @anthropic-ai/gemini-cli  # または公式手順に従う

Google の認証設定が必要。

2. CLAUDE.md にレビュー手順を定義する(必須)

ここが再現のキモ。Claude Code は CLAUDE.md(プロジェクトルートに置く設定ファイル)に書かれた指示に従って動く。以下を追記する。

## コードレビュー

「三体レビュー」「三体合議」「三体レビューに回して」等と言われたら、
以下の3つを**並列実行**する:

1. Claude 自身が PR の差分をレビューし、`gh pr comment` で PR にコメント投稿する
2. `codex review --base main` を Bash で実行する
3. 以下のコマンドを Bash で実行する:
   ```
   gemini -p "PR #<番号> のレビューをしてください。
   git diff main...HEAD で差分を確認し、問題点があれば指摘してください。
   問題なければLGTMと言ってください。
   レビュー結果を gh pr comment <番号> --body-file <一時ファイル> で投稿してください。
   署名は '-- Gemini CLI' で。" --approval-mode yolo
   ```

3つの結果が揃ったら、表形式でまとめて報告する。

この定義がないと Claude Code は「三体レビュー」の意味がわからない。 CLAUDE.md はプロジェクト固有の指示書であり、ここに書いた手順を Claude Code が忠実に実行する仕組みになっている。

仕組み

全体のフローは以下の通り。

開発者
  │
  │ 「三体レビューに回して」
  ▼
Claude Code(CLAUDE.md の手順に従う)
  ├─→ [並列] Claude 自身がレビュー(Task エージェント → gh pr comment)
  ├─→ [並列] codex review --base main(Bash 経由)
  └─→ [並列] gemini -p "レビューして" --approval-mode yolo(Bash 経由)
  │
  ▼
3つのレビュー結果を集約 → 表形式で報告

ポイントは Claude Code がオーケストレーターになること。Claude Code には Bash コマンドの実行機能とバックグラウンドタスク機能があるため、他の AI CLI を子プロセスとして並列起動できる。

使い方

Step 1: PR を作成する

通常通りブランチを作成してコードを変更し、PR を作る。

Step 2: Claude Code にレビューを依頼する

三体レビューに回して

これだけ。Claude Code が CLAUDE.md の指示に従って、3つのレビューを並列実行する。

Step 3: 結果を待つ

3つとも非同期で実行されるため、完了通知が来るまで待つ(または別の作業をする)。全て完了すると、Claude Code が結果をまとめてくれる。

## 三体レビュー結果まとめ

| レビュアー | 結果 | 指摘 |
|---|---|---|
| Claude    | LGTM | 改善提案: エラーメッセージにガイド追加(任意) |
| Codex     | P1指摘 | {{ }} が二重ラムダ → 誤検知 |
| Gemini    | LGTM | 問題なし |

実例: 誤検知を合議で弾く

実際のプロジェクトで起きた事例を紹介する。

Kotlin の構文で Codex が誤検知

以下のコードに対して Codex が「二重ラムダで OK ボタンが効かない」と P1 指摘を出した。

onDismiss = if (uiState.isConnected) {{ viewModel.clearError() }} else null,

Codex の主張は「{{ }} は lambda を返す lambda なので clearError() が呼ばれない」というもの。

しかし、Kotlin では if (cond) { ... } の最初の {if ブロックの開始であり、内側の { viewModel.clearError() } がラムダとして返される。つまり正しいコードである。

Gemini は同じコードを見て「Kotlin として有効な lambda を返す if ブロックであり、動作に問題はありません」と正しく判断した。

Codex: ❌ 二重ラムダで動かない(誤検知)
Gemini: ✅ 正しい Kotlin 構文
Claude: ✅ 正しい Kotlin 構文

1体だけだと誤検知に振り回されるが、三体の多数決で正しい判断ができた。

再帰バグを二体が独立して発見

同じ PR で、Gemini が stopSharing() の再帰問題を指摘した。

// fetchLocations() 内で呼ばれている
onFailure = { e ->
    if (e.code == 404) {
        stopSharing()  // ← stopSharing() 内で fetchLocations() を呼ぶ → 再帰
    }
}

この指摘は Claude も独立して発見しており、二体が一致したことで確信を持って修正できた。

各 AI の傾向

数回の運用を通じて感じた各ツールの特徴。

特徴 Claude Codex Gemini
深さ レースコンディション分析まで踏み込む コード表面の構文チェックが得意 サーバー〜クライアント横断で整合性を見る
誤検知率 低い やや高い(構文の誤読あり) 低い
出力形式 構造化されたレビュー P1/P2 の優先度付き 自然な文章
実行速度 中(エージェント起動あり) 速い

ただしこれは筆者のプロジェクト(Python + Kotlin + JS の Web/Android アプリ)での経験であり、言語や規模によって傾向は変わるかもしれない。

注意点

  • CLAUDE.md の定義が全て。ここが曖昧だと Claude Code の動きもブレる。具体的なコマンドまで書くのが安定運用のコツ
  • Codex CLI の review サブコマンドは PR 番号を指定せず、ローカルの diff を見る。PR コメントへの自動投稿はしないので、結果は Claude Code が読み取って報告する
  • Gemini CLI の --approval-mode yolo は全てのツール呼び出しを自動承認するモード。レビュー+コメント投稿を無人で完了させるために必要
  • 各ツールはサブスクリプションの範囲内で利用できる(Claude Code は Claude Pro/Max、Codex CLI は ChatGPT Pro/Plus、Gemini CLI は Gemini の無料枠または有料プラン)。API キーでの従量課金も可能だが、サブスク利用なら追加コストは発生しない

まとめ

  • 3つの異なる AI にレビューさせることで、単体では見逃すバグを拾える
  • 誤検知を多数決で弾けるのが最大のメリット
  • Claude Code + CLAUDE.md の組み合わせで、自然言語の一言からツール横断の自動化が実現できる
  • 個人開発でも「レビュアー3人体制」を低コストで再現できる

再現に必要なのは3つのツールのインストールと、CLAUDE.md への手順定義だけ。ぜひ試してみてほしい。

なお、筆者は未検証だが、GitHub Copilot CLI を加えた「四体合議」も面白いかもしれない。レビュアーが増えるほど誤検知の検出精度は上がるはずなので、環境がある方はぜひ試してみてほしい。

1
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
1
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?