AIエージェントは、コーヒーを飲み終えるほどの時間で、機能ブランチ全体を作成できます。一つの優れたプロンプトから、数千行ものコードが現れます。そのスピードは、ある基本的な真実を変えることはありません。リポジトリに投入されるコードには、依然として人間の判断が必要です。レビューは単なる仕上げのステップではありません。それは、動作するソフトウェアと、静かに蓄積していく技術的負債との間にある防波堤なのです。

仕事の性質が変わりました。以前は、エディタに一行ずつロジックを打ち込むことに精神的なエネルギーを費やしていました。今では、認知負荷の所在が変わっています。難しいのは、もはやコードを書くことではありません。コードを読み、疑問を投げかけ、それが本当にシステムにふさわしいかどうかを判断することなのです。

この変化は、コードレビューに対する異なるアプローチを要求します。チームがどのように適応すべきかを以下に示します。

他の誰かに見られる前に、コードに責任を持つ

AIが生成したコードは、まるで見知らぬ誰かが自分のブランチにチェックインしたかのようにレビューする必要があります。その違いは重要です。すべての行を手書きしたときは、自然とコンテキストを把握していました。なぜそのループが0ではなく1から始まるのか、その理由を知っていたのです。今、あなたは、人間離れした速さで作業するものの、確認のための質問を一切しない、意欲過剰な請負業者を指導するテックリードのような存在になっています。

だからこそ、セルフレビューがプロセスにおける最も重要なゲートとなります。プルリクエストを作成する前に、一歩引いて、厳しい問いを投げかけてください。

コードはアーキテクチャを尊重していますか? 生成されたコードは、トレーニングデータから、あなたの規約に合わないパターンをインポートすることがよくあります。チームがロジックをモノリス内に保持することに合意しているのに、新しいサービスを立ち上げたり、内部のロギング標準を無視して単なるprint文を使用したりすることがあります。

正しい問題を解決していますか? AIモデルは、チケットのエッジケースを理解することではなく、プロンプトを完了させることを最適化します。もし課題が部分返金の処理について記述されている場合、生成されたコードはハッピーパスのみをカバーし、照合の失敗などの例外処理をユーザー任せにしてしまうかもしれません。

同じタスクをより少ないコードで行えますか? AIは冗長になる傾向があります。実際のロジックを不明瞭にするような、防御的なラッパー、冗長なコメント、精巧すぎるエラーハンドリングを書きがちです。構造を繰り返しているメソッド、目的のないインポート、あるいは一度も変化しない変数がないか探してください。ノイズを削ぎ落としましょう。エージェントに簡素化やリファクタリングを指示すれば、それをどう操るかを学ぶことにもなります。どの制約が余計なものを削ぎ落とせるかを発見できるのです。この反復的な絞り込みも、今やあなたの仕事の一部です。プルリクエストにはあなたの名前がついています。あなたはすべての行に対して責任を負っているのです。

機械にスキャンさせ、脳は使い続ける

自動レビューツールはCIパイプラインに組み込むべきものです。最新のAI搭載レビュアーは、インジェクション脆弱性のようなセキュリティリスクをフラグ立てし、未処理のエッジケースを見つけ出し、本番環境に到達する前に古い依存関係を検知できます。これらはスケーラビリティに優れ、疲れることもありません。

それらを活用しましょう。崇拝してはいけません。

これらのツールにはビジネスコンテキストが欠けています。自動レビュアーは、ミドルウェアが別のレイヤーですでにサニタイズを行っていることを知らず、文字列結合を使用しているためにデータベースクエリをリスクとしてフラグ立てするかもしれません。また、固定しているライブラリのバージョンに破壊的変更が含まれていることを知らずに、カスタムアルゴリズムをライブラリの呼び出しに書き換えるよう提案するかもしれません。それらの提案はパターンに基づいたもっともらしい推測であり、あなたの製品に関する根拠に基づいた知識ではありません。

常にフィードバックを注意深く読み、その上で判断してください。自動コメントは命令ではなく、シグナルとして扱いましょう。

また、実用的な