目次
はじめに
こんにちは。GMOインターネットの平野です。
前回の記事では、AIコーディングエージェントの出力品質を「構造」で担保するハーネスエンジニアリングの考え方と、4段階エスカレーションラダー(L1〜L4)の実装について紹介しました。
このハーネスをしばらく運用してきて、自然と浮かんできた問いがあります。
「ここまで構造で品質を守れるなら、人間のコードレビューはどこまで必要なのか?」という問いです。
先に結論を言うと、コードレビューを全廃できるとは考えていません。ただし、レビューが拾っているものを分類してみると、その大部分はハーネスとAIで代替できる作業であり、人間が本当に見るべき領域はもっと狭い、ということがわかってきました。この記事では、その分類と、移行をどう判断するかについて整理します。
レビューがボトルネックになる構造
AIにコードを書かせると、コーディングの速度は確実に上がります。一方で、レビューの速度は人間の処理能力に縛られたままです。
| 開発スタイル | コーディング速度 | レビュー速度 | ボトルネック |
| 人間が書き、人間がレビュー | 1x | 1x | なし(均衡) |
| AIが書き、人間がレビュー | 5~10x | 1x | レビューが律速 |
| AIが書き、ハーネス+AIがレビュー | 5~10x | 自動化 | 解消 |
この構造を放置すると、「レビューを省略して速度を取るか、レビューを維持して品質を取るか」という二択に追い込まれます。どちらも望ましくありません。必要なのは、レビューの中身を分解して、自動化できるものとできないものを仕分けることです。
コードレビューが拾うものを分類する
コードレビューで指摘される内容を整理すると、大きく4つのカテゴリに分かれます。
| カテゴリ | 内容 | 自動化 |
| A | ハーネス違反の検出 | 可能 |
| B-1 | ハーネス自体の矛盾 | 不可 |
| B-2 | ハーネス不足 | 不可 |
| C | 要件・設計の妥当性 | スコープ外 |
カテゴリA: ハーネス違反の検出
命名規約やアーキテクチャ境界、実装パターンへの準拠など、既存のルールに対する違反を見つける作業です。「camelCaseになっていない」「レイヤーを越えたimportがある」「パターンファイルで定義した実装方針と違う」といった指摘がここに入ります。
カテゴリB-1: ハーネス自体の矛盾
ルール体系そのものに矛盾がある場合です。たとえば、あるルールは「すべてのスキーマに.strict()をつける」と言い、別のルールは「外部APIレスポンスには.passthrough()を許容する」と言っている。外部APIのレスポンスをバリデーションするスキーマはどちらに従うべきでしょうか。こうした矛盾は、ルールを個別に見るだけでは気づけません。特に、新しいルールを追加するとき、ルール体系をリファクタリングするときに発生しやすくなります。パターンファイルが推奨するディレクトリ構造と、別のパターンファイルが前提とするインポートパスが噛み合わなくなる、といった事態は、ルールが増えるほど起きやすくなります。
カテゴリB-2: ハーネス不足
ハーネスがまだカバーしていない領域の発見です。たとえば、新しいライブラリやフレームワークが追加されたのに、それに対するルールが整備されていないとき、また、既存ルールの粒度では捕捉できないクラスのバグが起きたとき、「ルールを足すべきだった」と事後的に気づくケースもあります。AIは「既存ルールに違反していない」ことは判定できますが、「ルールが足りない」ことは判定できません。「ルールが無いから通過」と「ルールが不要だから通過」の区別がつかないのです。
カテゴリC: 要件・設計の妥当性
そもそもこの実装が問題を正しく解決しているか、アーキテクチャ上の判断は妥当か、という問いです。これはコードレビューというより設計レビューであり、判断基準もタイミングも異なります。設計レビューは本来、実装に入る前に行うべきものです。コードレビューの場で「そもそもこの方針で合ってるのか」が議論になるのは、設計レビューとコードレビューが混同されている兆候であり、プロセス自体を見直すべきサインです。本稿ではカテゴリCをスコープ外とし、コードレビューの中で扱うべきA・B-1・B-2に焦点を当てます。
機械に任せられるもの、人間が見るべきもの
カテゴリA: ハーネス違反の検出
ハーネス違反は、決定論的なものと確率的なものに分類できます。リンター等による決定論的な検出は、見落としがなく、人間も疲れません。確率的な検出は現時点では人間と同等かやや劣る可能性がありますが、ここは後述する並行運用で検証できます。
カテゴリB-1: ハーネス自体の矛盾
一方、ハーネス自体の矛盾の検知を自動化できない理由は構造的なものです。ハーネス矛盾(B-1)について言えば、AIはルールを公理として受け取ります。公理は「従うもの」であり「疑うもの」ではありません。公理系の内部矛盾を検出するには、その系の外に立ち、ルール同士の関係を俯瞰する視点が必要です。これは本質的にメタレベルの作業であり、現状のAIにはこの自発的な「一歩引いた視点」が欠けています。
矛盾が特に発生しやすいのは、次のようなタイミングです。
- 新ルールの追加時(既存ルールとの整合性チェックが漏れる)
- ルールの昇格時(執行レベルの変更による副作用が見えにくい)
- ルール体系のリファクタリング時(分割・統合で前提が崩れる)
だからこそ、ハーネス自体を変更するPRには、必ず人間のレビューを通す必要があります。ハーネス変更のレビューは省略してはいけません。
カテゴリB-2: ハーネス不足
ハーネス不足(B-2)について言えば、AIは「ルールがないから通過」と「ルールが不要だから通過」の区別がつきません。ルールが存在しない領域では、AIは何もフラグを立てずに通過させます。
これはAIの欠陥ではなく、ルールベースなシステムの構造的な限界です。経験あるエンジニアがレビューで拾うのは、まさにこの「ルールがまだない領域」の問題であることが多い。「このパターン、うちのコードベースに入ったの初めてだけど、ルール化しなくて大丈夫?」「この新しいライブラリの使い方、パターンファイルに追加しておいたほうがよくないか?」といった問いかけは、ハーネスの外にいる人間にしかできません。こうした指摘は、ハーネスを育てる上で最も価値のあるフィードバックになります。
カテゴリC: 要件・設計の妥当性
カテゴリC(設計の妥当性)については、ハーネスの守備範囲外です。「このAPIの設計は利用者にとって使いやすいか」「この機能の責務配置は将来の拡張に耐えられるか」といった問いは、コードの正しさではなく設計の判断に関わるものです。こうした問いは実装に入る前の設計段階で扱うべきであり、コードレビューの場に持ち込むと、レビューの焦点がぼやけます。設計レビューとコードレビューを明確に分けることで、それぞれのプロセスが本来の役割に集中できるようになります。
カテゴリBとCを整理すると、人間がレビューで注力すべき領域がはっきりします。この構造は、自動テストの普及がQAの役割を変えた流れに似ています。手動テストが自動テストに置き換わったとき、QAは「テストを実行する人」から「テスト戦略を設計する人」になりました。同様に、コードレビュアーは「違反を検出する人」から「違反を検出する仕組みを設計する人」へと役割が変わっていくと考えています。
統計で判断する: 並行運用モデル
カテゴリAが自動化可能だとしても、「いつ人間レビューをやめるか」を感覚で決めるべきではありません。並行運用でデータを取り、統計的に判断するアプローチを考えています。
フェーズ1では、人間レビュアーとAIハーネスの両方がすべてのPRをレビューします。人間レビュアーはAIの結果を見ずに独立してレビューし、両者の指摘を記録して差分を分類します。そして、以下のメトリクスを計測します。
| メトリクス | 定義 | 目標 |
| AIの見落とし数 | 人間が検出したがAIが見逃した違反 | 低下傾向 |
| 人間の見落とし数 | AIが検出したが人間が見逃した違反 | ベースライン |
| 偽陽性率 | AIが指摘したが人間が却下したもの / AIの全指摘数 | 閾値以下 |
ここで重要なのは、人間見落とし数を計測する点です。人間もまた見落とすことは多々あります。AIの見落とし数が人間の見落とし数を下回れば、AIに委譲する統計的な根拠が成立します。
フェーズ2においてAIの見落とし数が人間の見落とし数をN週連続で下回った時点で、カテゴリAの人間レビューを任意化します。ただし、まず低リスクなPR(小規模変更、既知パターンのみ)から人間レビューを省略し、段階的にスコープを広げます。異常があればフェーズ1に戻ります。セキュリティやデータ損失に関わる重大な違反については、統計的にAIが優勢でもサンプリングベースで人間レビューを継続することを想定しています。稀だが重大な問題は、統計の平均値だけでは捉えきれないからです。
| 条件 | 閾値 | 判定 |
| AI見落とし数 < 人間見落とし数 | N週連続で達成 | カテゴリAの人間レビューを任意化 |
| 偽陽性率 | X%以下を維持 | レビュアーの信頼が維持される |
| 重大違反の見落とし | 0件 | 移行の前提条件 |
まとめ
コードレビュー不要論の核心は、「レビューをやめる」ことではなく、レビューの対象を再定義することです。今回の議論は、次の3つに整理できます。
1. レビューの分類が自動化の出発点
コードレビューが拾うものは一枚岩ではありません。ハーネス違反の検出、ハーネス自体の矛盾、ハーネスの不足、設計の妥当性。分類して初めて、何が自動化でき、何に人間の判断が必要かが見えてきます。
2. ハーネスの「中」は機械、「外」は人間
既知のルールに対する適合チェックは、レビューの最大ボリュームでありながら、構造的に自動化可能な作業です。一方、ルール体系自体の矛盾や不足は、ルールの外に立つ視点でしか見つけられません。人間のレビューは、この「外」を見ることに集中すべきです。
3. 移行はデータで判断する
「AIのほうが賢そうだから」は、移行の根拠になりません。並行運用で人間とAIの見落とし率を比較し、統計的にAIが人間と同等以上であることを確認してから移行する。このプロセスを踏むことで、感覚ではなくエビデンスに基づいた判断ができます。
コードレビューが不要になるのではなく、コードレビューの対象が「コード」から「ハーネス」に移行する。レビュアーの役割は消えるのではなく、より高いレイヤーへ移る。これが、ハーネスエンジニアリングを運用してきた先に見えてきた景色です。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(577)
-
イベント(220)
-
カルチャー(55)
-
デザイン(59)
-
インターンシップ(2)
TAG
- "eVTOL"
- "Japan Drone"
- "ロボティクス"
- "空飛ぶクルマ"
- 5G
- Adam byGMO
- AdventCalender
- AGI
- AI
- AI 機械学習強化学習
- AIエージェント
- AIコーディング
- AIコーディングエージェント
- AI人財
- AI駆動
- AMD
- APT攻撃
- AWX
- BIT VALLEY
- Blade
- blockchain
- Canva
- ChatGPT
- ChatGPT Team
- Claude Team
- cloudflare
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEBLUE
- CODEGYM Academy
- ConoHa
- ConoHa VPS
- ConoHa、Dify
- CS
- CSS
- CTF
- DC
- design
- Designship
- Desiner
- DeveloperExper
- DeveloperExpert
- DevRel
- DevSecOpsThon
- DiceCTF
- Dify
- DNS
- Docker
- DTF
- Excel
- Expert
- Experts
- Felo
- GitLab
- GMO AI&ロボティクス商事
- GMO AIR
- GMO AIロボティクス大会議&表彰式
- GMO DESIGN AWARD
- GMO Developers Day
- GMO Developers Night
- GMO Developers ブログ
- GMO Flatt Security
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOインターネット
- GMOインターネットグループ
- GMOクラウド]
- GMOグローバルサイン
- GMOコネクト
- GMOサイバーセキュリティbyイエラエ
- GMOサイバーセキュリティ大会議
- GMOサイバーセキュリティ大会議&表彰式
- GMOソリューションパートナー
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOメディア
- GMOリサーチ
- GMO大会議
- Go
- GPU
- GPUクラウド
- GTB
- Hardning
- Harvester
- HCI
- INCYBER Forum
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- JJUG CCC
- K8s
- Kaigi on Rails
- Kids VALLEY
- KidsVALLEY
- Linux
- LLM
- MCP
- MetaMask
- MySQL
- NFT
- NVIDIA
- NW構成図
- NW設定
- Ollama
- OpenStack
- Perl
- perplexity
- PGP
- PHP
- PHPcon
- PHPerKaigi
- PHPカンファレンス
- Python
- QUIC
- Rancher
- RPA
- Ruby
- SECCON
- Selenium
- Slack
- Slack活用
- Spectrum Tokyo Meetup
- splunk
- SRE
- sshd
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- vibe
- VLAN
- VPN
- VS Code
- Webアプリケーション
- WEBディレクター
- XSS
- ZTNA
- アドベントカレンダー
- イベントレポート
- インターンシップ
- インハウス
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- クリエイター
- クリエイティブ
- コーディング
- コンテナ
- サイバーセキュリティ
- サマーインターン
- システム研修
- スクラム
- スペシャリスト
- セキュリティ
- ゼロトラスト
- ソフトウェアテスト
- チームビルディング
- デザイナー
- デザイン
- テスト
- ドローン
- ネットのセキュリティもGMO
- ネットワーク
- ビジネス職
- ヒューマノイド
- ヒューマノイドロボット
- フィジカルAI
- プログラミング教育
- ブロックチェーン
- ベイズ統計学
- マイクロサービス
- マルチプレイ
- ミドルウェア
- モバイル
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- ロボット
- 京大ミートアップ
- 人材派遣
- 出展レポート
- 動画
- 協賛レポート
- 国際ロボット展
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 展示会
- 広告
- 強化学習
- 形
- 応用
- 情報伝達
- 技育プロジェクト
- 技術広報
- 技術書典
- 採用
- 採用サイトリニューアル
- 採用活動
- 新卒
- 新卒研修
- 日本科学未来館
- 映像
- 映像クリエイター
- 映像制作
- 暗号
- 業務効率化
- 業務時間削減
- 機械学習
- 決済
- 物理暗号
- 生成AI
- 第3回GMO大会議・春 サイバーセキュリティ2026
- 色
- 視覚暗号
- 開発生産性
- 開発生産性向上
- 階層ベイズ
- 高機能暗号
PICKUP
-
コードレビュー不要論 ーハーネスが人間の目を代替するとき
技術情報
-
「同じグループにこんな人がいたんだ」── 動画クリエイターの横のつながりを作った話
技術情報
-
クレジットカード不正利用と戦う!秘密計算×AIの挑戦 — IPSJ-ONE 2026 登壇レポート
技術情報
-
第3回GMO大会議・春 サイバーセキュリティ2026を開催!産官学で守り抜く、AI時代のサイバーセキュリティ【イベントレポート後編】
イベント
-
【2025国際ロボット展 出展レポート】AI ❤ ROBOTs で描く、人とロボットが共存する社会
技術情報
-
第3回GMO大会議・春 サイバーセキュリティ2026を開催!産官学で守り抜く、AI時代のサイバーセキュリティ【イベントレポート前編】
イベント