🤖

Codexの指摘を30分議論して結局無視した話

に公開

Codexにコードレビューを依頼した。

いくつかの指摘が返ってきた。「これは直すべきか?」とClaudeに相談した。

30分議論した結果、出た結論は——

「無視していい」

30分返して。

AIレビューは参考意見であって、福音ではない。プロジェクトの文脈を知っているのは自分だけ。この当たり前のことに気づくのに、30分かかった話をする。


この記事が役立つ方

  • AIツールでコードレビューを受けている人
  • レビュー指摘を全部直すべきか迷う人
  • 「AIが言うなら正しいのでは」と思ってしまう人
  • 英語のレビューをそのままClaudeに丸投げしてしまう人

TL;DR

  • AIレビューは参考意見であって絶対ではない
  • プロジェクトの文脈を知っているのは自分だけ
  • 「無視する」も立派な判断
  • 英語レビューは理解してから判断する
  • 迷ったら「5つの確認プロンプト」を使う

背景: AIレビューツールの得意・苦手

まず、AIレビューツールの特性を整理しておきます。

ツール 得意なこと 苦手なこと
Codex / OpenAI 一般的なベストプラクティスの指摘 プロジェクト固有の事情を考慮した判断
Claude 文脈を踏まえた議論、設計意図の理解 時々自信過剰になる
CodeRabbit PR差分に対する具体的なレビュー プロジェクト全体の設計把握

ポイントは、どのツールも「プロジェクト固有の判断」が苦手ということです。

AIは「一般論としてのベストプラクティス」を知っています。しかし、「このプロジェクトでは、この段階では、このチームでは」という文脈は知りません。

その文脈を知っているのは、開発者である自分だけです。


過剰レビューの実例

実際に「無視していい」と判断した指摘を3つ紹介する。

例1: 過剰な抽象化の提案

Codex: 「この関数は分割すべきです」

言いたいことはわかる。でも、これはMVP開発中のコード。

今この関数を「美しく」分割しても、来週には要件変更で書き直しになるかもしれない。YAGNI(You Ain't Gonna Need It)原則に従って、今必要な分だけ書くのが正解。

過剰な抽象化は、MVP段階では害悪になりうる。

例2: 過剰なエラーハンドリング

Codex: 「エラーハンドリングが不十分です」

確かに本番運用を考えると、もっと細かくエラーを捕捉すべきかもしれない。

でも今はプロトタイプ段階。ユーザーは自分だけ。エラーが起きたらログを見ればいい。

商用化するときに強化すればいい。段階的改善という考え方。

例3: 「ベストプラクティス」の押し付け

Codex: 「このパターンは推奨されません」

一般的には推奨されないかもしれない。でも、このプロジェクトではこれが最適解だった。

AIは「なぜこのパターンを選んだのか」という背景を知らない。だから一般論を言ってくる。それは当然のこと。


英語レビューの落とし穴

Codexは基本的に英語でレビューを返してくる。ここに罠がある。

アンチパターン: コピペ丸投げ

こんなフローに陥っていないだろうか。

Codex: "Consider extracting this logic into a separate utility function
        for better reusability and testability."

そのままClaudeにコピペ
「これ直して」

Claudeが修正

何が変わったかよくわからない

またCodexでレビュー

新しい指摘が来る

またコピペ...

無限ループ

これ、あるあるじゃないだろうか。

問題の本質は、開発者が「何を言われているか」を理解していないこと。

理解していないから、必要な修正かどうか判断できない。だから全部丸投げして、全部直そうとする。結果、無限ループにハマる。


対策: 5つの確認プロンプト

英語のレビュー指摘を受けたら、いきなり「直して」と言わない。

まず、レビューしたAIに以下のプロンプトを投げ返す。

このレビュー指摘について確認して:
- 何を言っている?
- この問題は実際に起こる?
- 起こった場合の影響は?
- 現状のコードで本当に問題?
- 修正する場合の工数は?

レビューしたAI自身に確認させることで、指摘の内容と影響を正確に把握できます。

実践例

Codex: "Consider extracting this logic into a separate utility function
        for better reusability and testability."

↓ 5つの確認プロンプトをCodexに投げ返す

Codex:
- 何を言っている?
  → このロジックを別のユーティリティ関数に切り出せと言っています

- この問題は実際に起こる?
  → 現時点では問題ありません。将来同じロジックを再利用する場合に
    コードの重複が発生する可能性があります

- 起こった場合の影響は?
  → 軽微です。その時点でリファクタリングすれば済みます

- 現状のコードで本当に問題?
  → 動作上の問題はありません。コードの「美しさ」の観点からの提案です

- 修正する場合の工数は?
  → 10〜15分程度です

この回答を見れば、今直す必要があるかどうかを判断できる。

この例なら、「MVP段階では不要。後回し」という判断ができる。


無視すべき指摘の見分け方

判断基準を表にまとめます。

従うべき指摘 無視していい指摘
セキュリティリスク 「こうした方がキレイ」系
明確なバグ MVP段階での過剰な抽象化
パフォーマンスの問題 将来のための「念のため」
本番で問題になる可能性が高い 今すぐ必要ない改善

迷ったら、以下の3つの質問を自分に投げかけてみてください。

  1. 今解決すべき問題か? → NOなら後回し
  2. ユーザーに影響するか? → NOなら優先度を下げる
  3. 直すコストと効果は釣り合うか? → NOなら無視

30分議論した教訓

あの30分で学んだことをまとめる。

  • AIに相談する前に「本当に迷ってるか」を自問する

    • 実は心の中で「直さなくていい」とわかっていた
    • それを確認するためだけに30分使った
  • 迷ってないなら無視して進む

    • 判断に迷うのは、判断基準がないから
    • 基準を持っていれば即決できる
  • 時間は有限、トークンも有限

    • 30分あれば、機能を1つ実装できた
    • 無駄な議論に使う時間はない

まとめ

  • AIレビューは参考意見。福音ではない
  • プロジェクトの文脈を知っているのは自分だけ
  • 「無視する」も立派な判断
  • 英語レビューは5つの確認プロンプトで理解してから判断
  • 30分議論するより「今は無視」が正解のこともある

チェックリスト: AIレビューを受けたら

□ 指摘内容を正確に理解したか?(英語なら翻訳して)
□ セキュリティリスクやバグではないか?
□ 今解決すべき問題か?
□ ユーザーに影響するか?
□ 直すコストと効果は釣り合うか?
□ 「5つの確認プロンプト」で詳細を確認したか?

→ 全部確認した上で「不要」なら、堂々と無視する

関連記事

https://zenn.dev/kuma8088/articles/posted_e2e-tests-pass-production-fails

E2Eテストが通るのに本番で動かない——AIに頼りきりになると、こういう問題も見逃す。


参考

Discussion