6月20日、Vini Brasilが「When I reject AI code even if it works」と題した記事を公開した。AIが生成したコードが動作していても却下すべき理由と、コーディングエージェント時代におけるエンジニアの役割について詳しく論じた内容だ。
「動くコード」は「良いコード」ではない
GitHub CopilotやCursor、Claude CodeといったAIコーディングエージェント(自然言語の指示からコードを自律的に生成・修正するツール)の普及により、実装速度は劇的に上がった。しかしVini Brasilは、その副作用としてレビューの負荷が新たなボトルネックになっていると指摘する。同僚のPRだけでなく、自分自身がエージェントに書かせたコードのgit diff(変更差分)を前にして、認知的な過負荷を感じるというのだ。
この問題はVini Brasil個人の感覚にとどまらない。AIコーディングツールの利用が急拡大するにつれ、「コードを書くコスト」は下がる一方で「コードを理解・評価するコスト」は変わらない、あるいは増大するという構造的な課題が業界全体で議論されるようになっている。プラン段階から始める、タスクを小さく分割するといったベストプラクティスを守っていても、「自分が考え抜いていないコード」をレビューする重さは変わらない、とVini Brasilは述べる。
AIの出力をそのまま捨てることも「前進」だ
Vini Brasilが正直に認めているのは、AIを使っても大きなタスクは依然として数日かかるという事実だ。そしてAIが生成したコードを全部破棄して最初からやり直すことも珍しくないという。
ただし、最初のセッションと2回目のセッションの違いはLLM(大規模言語モデル) の性能差ではない。画面の前のエンジニア自身の理解度だ。問題の本質を時間をかけて掴んでいるほど、エージェントを「正しい方向に誘導できる」か「エージェントに引きずられる」かが変わってくる。一度生成されたコードをすべて捨てる行為は、失敗ではなく問題理解を深めるプロセスの一部だという観点は、AIツールの使い方を再考させる視点として興味深い。
却下する理由は5つ
記事の核心は、Vini Brasilが整理したAIコードを却下するための具体的な判断軸だ。原文では以下の5つが順に示されている。
- 自分の言葉でアプローチを説明できないとき
- diffがその問題より大きいとき
- 必要性が証明される前に抽象化を導入しているとき
- ローカルでは動くが、システムの挙動を追いにくくなっているとき
- 自分の理解よりも出力を信頼してしまっているとき
特に「diffがその問題より大きいとき」という基準は示唆に富む。AIは往々にして、シンプルに解ける問題に対して過剰な構造を持ち込む。git diffの変更行数が問題の複雑さに比例していなければ、それ自体がコードの質を疑うサインになる。
「必要性が証明される前に抽象化を導入しているとき」という観点も重要だ。ここでいう抽象化とは、具体的な処理を汎用的なインターフェースやレイヤーに切り出す設計手法を指す。適切に使えば将来の変更コストを下げるが、時期尚早な抽象化はコードベースをかえって読みにくくする。AIはパターンに沿ったコードを生成するのが得意なため、不要なレイヤーやインターフェースを挿入しがちだという問題は多くのエンジニアが実感しているところだろう。
5つ目の「自分の理解よりも出力を信頼してしまっているとき」は、前述の「2回目のセッション」の話とも直結する。エンジニアがエージェントの出力を批判的に評価できる状態にあるか否かが、AIコードの品質を左右するという主張の根幹をなす基準だ。
CIが緑でも「悪い解」はある
Vini Brasilが最後に強調するのは、テストが通るコードと、適切・拡張可能・保守しやすいコードは別物だという点だ。CI(継続的インテグレーション)のステータスが緑であることは、コードの正しさの一側面に過ぎない。エンジニアリングの本質は後者を実現することにあり、その判断はまだエージェントに任せられない。
記事中でVini Brasilは、
"engineers accept AI-generated changes too quickly"
と述べている。これはAIコードを受け入れるスピードそのものへの警鐘であり、「動くから承認する」という思考停止的なレビューへの問題提起だ。この文脈でVini Brasilが訴えるのは、AIによる自動チェックと並行した人間によるレビューの必須化である。コーディングエージェントは優秀だが、優秀なエンジニアがガイドして初めて優秀な解にたどり着く、というのが現時点での結論だ。
AIコーディングが加速する中で、5つの却下基準はチームのコードレビュー文化を見直す具体的な出発点として機能する。「生成させる力」と同じくらい「却下する判断力」を鍛えることの重要性を、改めて意識させる記事だ。
詳細はWhen I reject AI code even if it worksを参照していただきたい。




