Claude と Codex の二刀流レビュー:別系統AIで盲点を炙り出す

株式会社ペンタコン研究所 PentaTrail開発チーム···5分で読める
目次

1人で開発していて、いちばん心もとないのは品質の担保です。

書いた本人が見直すと、書いたときと同じ思い込みのまま読んでしまいます。AI に書かせて AI に見直させればよいかというと、同じ系統の AI どうしでは同じ盲点をそろってすり抜けてしまうのでした。

01 / 同じ系統どうしのレビューは、安心感のわりに穴がそろう

同じ訓練の流れをくむ AI は、得意なことも苦手なことも似ています。片方が見落とす欠陥は、もう片方も見落としやすいという性質です。

同じ系統と違う系統でレビューの穴がどうなるかを示した図。同じ訓練の流れをくむAIどうしは得意も苦手も似ているので穴がそろうが、モデルの家系が違うと穴がずれて一方が素通りした問題にもう一方が引っかかる

図1:家系が違うと、穴の位置がずれる

深掘り:観点を増やすだけでは足りない

見る角度を分けたレビュー役を並べても、同じ系統で揃えると穴の位置は変わりません。ずらすのに効くのは観点の数ではなく、モデルの家系のほうです。

02 / まず観点を分けた 5 体を並行で走らせ、そのあと別系統にもかける

Claude 側で見る角度の違う5体を並行で走らせ、そのうえで同じ変更を別系統の Codex にもかけます。順に重ねることで、網の目の向きが変わるからです。

二刀流の回し方を示した図。まずClaude側で観点を分けた5体を並行で走らせ、コードの誤り、握りつぶされた例外、コメントと実装の食い違い、テストの抜け、型の設計をそれぞれ見て、そのうえで同じ変更を別系統のCodexにもかける

図2:観点で分けたあと、系統で分ける

深掘り:5 体がそれぞれ見ているもの

コードの誤りや規約違反、握りつぶされた例外や黙って失敗する処理、コメントと実装の食い違い、テストの抜けやカバレッジ、型の設計。公開されているプラグインの構成で、それぞれ見る角度が違います。

03 / 5 体が全員で見落とした欠陥を、別系統が拾ったことがある

データベースの関数から引数を一つ削ったとき、アプリ側の呼び出しはすべて直したのに、データベースの振る舞いを SQL で確かめるテストのほうに古い呼び出しが一箇所だけ残っていました。観点の違う5体が全員で見落とし、別系統の Codex だけが拾いました。

実際にあった見落としの図。データベースの関数から引数を一つ削り、アプリ側の呼び出しはすべて直したが、SQLで振る舞いを確かめるテストに古い呼び出しが一箇所だけ残り、観点を分けた5体は全員が見落とし別系統のAIだけが拾った

図3:観点を増やしても揃って見落とした一件

深掘り:二重の網になっている

この類のミスは、見落としても CI が必ず赤くなります。別系統 AI の指摘と、機械的な関所が二重の網になっていて、どちらか片方でも掛かればそこで止まる形です。

04 / 答えが一意に決まることは、機械に任せる

同じ入力なら必ず同じ結果になる検査の一群が土台にあります。これらは人の気分にも AI の調子にも左右されません。

機械に任せている3つの検査の図。PRを出すたびにlintと型チェックとビルドとテストが自動で走り緑が揃わないとマージできない、データベースの関数や権限をSQLで直接テストする、画面やロジックの単体テストでスコアの計算や表示を確かめる

図4:事実を固定する 3 つの仕掛け

深掘り:何を機械に、何を AI に

設計の良し悪し、見落とした副作用、命名や責務の置きかたといった「意味」の判断は、AI と、最後は人の受け持ちです。ここを取り違えて、決まった語が含まれているかのような代理指標で文章や設計の質を測ろうとすると、たいてい外します。形式や事実の判定は機械に任せ、意味の良し悪しは人とAIで見ます。 この切り分けが、二刀流の土台です。

05 / コードを書く前に、「完了」を機械が判定できる形で決めておく

検索して0件であること、この条件が SQL で必ず真であること、このテストが終了コード0で通ること。先に書いておくと、実装の途中で基準がなしくずしに緩むのを防げます。

完了の定義を先に決めることを示した図。コードを一行でも書く前に、検索して0件であることやSQLで必ず真であることやテストが終了コード0で通ることを決めておくと、実装中に基準が緩まず、レビューはクライテリア通りかを確かめるだけで済む

図5:完了の定義を、数値とコマンドで先に置く

深掘り:契約に関わるところは、もう一段きびしく

画面とサーバーのやり取りの形や、データベースの列の定義といった「契約」に関わるところは、着手前に現物を直接確認し、それを唯一の正として仕様に書き出してから実装に入ります。推測で書いた仕様をそのまま実装に渡すと、ズレが下流まで伝播するからです。地味ですが、これが手戻りをいちばん減らしました。

06 / 一周では終わらず、十数ラウンド回ることもある

仕様や設計を固める種類の変更だと、指摘がゼロに収束するまで十数ラウンド回ることも珍しくありません。片方の修正が次の論点を生むからです。

レビューが一周で終わらないことを示した図。直しても別の綻びが見えてまた直すという往復が続き、仕様や設計を固める変更では指摘がゼロに収束するまで十数ラウンド回ることも珍しくない

図6:直すたびに、次の論点が出る

深掘り:地道な往復を厭わないこと自体が効いている

その往復を回せるからこそ、1人でもチーム並みの目を変更にあてられます。なぜそれだけのレビューを罪悪感なく回せるのかは、開発側の AI のコスト構造に関わる話なので、追って別の記事で書きます。

07 / 人ではなく、系統の差で炙り出す

二刀流が効くのは、欠陥を「誰が優れている・劣っている」ではなく「系統の差」で炙り出すからです。そこに、決定論的なテストと CI という機械の関所が重なります。

二刀流の効き方をまとめた図。書いた本人の思い込みからも単一モデルの癖からも半歩離れたところで欠陥が見つかり、決定論的なテストとCIによって固定される

図7:半歩離れたところで、欠陥が見つかり固定される

深掘り:1 人開発の品質を、人手を増やさずに底上げする

書いた本人の思い込みからも、単一モデルの癖からも半歩離れたところで、欠陥が見つかり、固定されます。人手を増やさずに品質を底上げする現実的な手立てが、ここにありました。

こうして二重三重に目を通しながら作っているのが PentaTrail / CTEM です。外から見える会社の攻撃面を、AIで継続的に把握するサービスです。

付録:レビュー役と、機械の関所

表1:観点を分けた 5 体

役 見ているもの
code-reviewer コードの誤りや規約違反
silent-failure-hunter 握りつぶされた例外、黙って失敗する処理
comment-analyzer コメントと実装の食い違い
pr-test-analyzer テストの抜けやカバレッジ
type-design-analyzer 型の設計

表2:機械に任せている検査

検査 何を固定するか
PR ごとの自動実行 lint・型チェック・ビルド・各種テスト。緑が揃わないとマージできない
データベースのテスト 関数や権限を SQL で直接検証する。権限がうっかり開けば赤くなる
単体テスト 画面やロジックが、決めたとおりに動くこと

表3:機械と AI の切り分け

任せる先 対象
機械 答えが一意に決まること(形式・事実の判定)
AI と人 設計の良し悪し、見落とした副作用、命名や責務の置きかた

PentaTrail CTEM/ASMで攻撃面を可視化しませんか?

CTEMフレームワークに基づき、外部攻撃面の発見から脆弱性検証・対応推進までを一気通貫で実現します。

お申し込みはこちら

料金を見る/他サービスとの比較・選び方