AI vs human code gen report: AI code creates 1.7x more issuesの意訳です。
数百件のオープンソースPull Requestを分析して分かったこと
この1年で、AIコーディングアシスタントは「新しいツール」から「日常的に使われる存在」へと急速に変化しました。現在では、多くの組織においてコード変更の一部がAIによって生成、もしくはAIの支援を受けて作られています。
しかし、開発スピードが加速する一方で、次のような疑問が静かに広がっていました。
-
なぜステージング環境に流れ込む不具合が増えているのか
-
なぜ特定のロジックや設定ミスが繰り返し発生するのか
-
そして、これらのパターンはAI生成コードと関係しているのか
AIが大きな役割を果たしているように見えます。
最近のレポートでは、AIの支援により開発者1人あたりのPull Request数は前年比20%増加した一方で、Pull Requestあたりのインシデント数は23.5%増加したと報告されています。
今年はさらに、AIの書いた変更が要因の一つとされる、注目度の高いインシデントやポストモーテム、事例談も複数ありました。これらは特殊なケースや誤用ではなく、一見すると普通のPull Requestに、微妙なミスが埋め込まれていたというものです。
AIコーディングツールが急速に普及している割には、AIが書いたPRと人間が書いたPRの品質の違いについて、具体的なデータはほとんど存在していませんでした。
そこでCodeRabbitは、この問いに実証的に答えるため、
State of AI vs Human Code Generation Report を作成しました。
State of AI vs Human Code Generation Report について
私たちは 470件のオープンソースGitHub Pull Request を分析しました。その内訳は、AIが共著者として関与したPRが320件、人によってのみ作成されたPRが150件 です。
分析にはCodeRabbitの構造化された課題分類(issue taxonomy)を使用し、すべての結果を「PR100件あたりの問題数」に正規化しました。さらに、各問題種別ごとの出現頻度を比較するため、統計的な率比を用いています。
結果は明確で、測定可能であり、多くの開発者が直感的に感じていたことと一致していました。
AIはアウトプットを加速させますが、特定の種類のミスも増幅させます。
本調査の制約について
AIが関与したPRで多く発生する問題を把握することは、エンジニアリングチームにとって非常に重要です。しかし、本調査では「どのPRがAIによって書かれたか」を判定する点が課題でした。
十分な規模のOSSデータセットに対して、各PRの著者を直接確認することは不可能だったため、AIによる共著を示すシグナルをチェックし、それが存在しないものを人間によるPRと仮定しました。
この方法により、2つのデータセット間には統計的に有意な差が確認されました。本レポートでは、チームが注視すべきポイントを理解できるよう、その結果を共有しています。ただし、人間によるPRと分類したものが、完全に人間のみで書かれていたことを保証するものではありません。
手法全体については、レポート末尾に記載しています。
レポートから分かる10の知見
AI特有の問題といえるカテゴリは存在しませんでしたが、ほぼすべてのカテゴリで、AIが関与したPRの方が有意に多くのエラーを含んでいました。
つまり、人間とAIは同じ種類のミスをしますが、AIはそれをより頻繁に、より大規模に発生させるということです。
1. AIによって生成されたPRは、全体として約1.7倍の問題を含んでいました
470件のPR全体で見ると、AIが関与したPR(以下AI PRとします)では PRあたり10.83件の問題 が見つかりました。一方、人間のみのPRでは 6.45件 でした。
さらに顕著なのは、問題の数が極端に多いPRがAI PRでははるかに多く、レビュー負荷を大きく押し上げていた点です。
2. 深刻度はAIで悪化する:クリティカル・メジャー問題の増加
AI PRでは、クリティカルおよびメジャーな指摘が 約1.4〜1.7倍 多く見られました。
3. ロジックおよび正しさの問題は75%増加
ビジネスロジックの誤り、誤った依存関係、制御フローの欠陥、設定ミスなどが含まれます。
これらのロジックエラーは、修正コストが高く、下流でのインシデントにつながりやすい問題です。
4. 可読性の問題は3倍以上に急増
全データセットの中で最も大きな差が出たのは可読性でした。
AIが生成したコード(以下AI生成コードとします)は一見整っているものの、命名や明確さ、構造といったローカルな慣習を破るケースが多く見られました。
5. エラーハンドリングや例外経路の欠落は約2倍
AI生成コードでは、nullチェック、早期リターン、ガード条件、網羅的な例外処理が省略されがちで、実際の障害と密接に関係する問題が多く含まれていました。
6. セキュリティ問題は最大2.74倍
特に目立ったのは、不適切なパスワード管理や安全でないオブジェクト参照です。
AI特有の脆弱性はありませんでしたが、ほぼすべての問題が増幅されていました。
7. 件数は少ないが、パフォーマンス劣化はAIに偏って発生
過剰なI/O操作は、AI PRで 約8倍 多く見られました。
これは、AIがリソース効率よりも、分かりやすさや単純なパターンを優先する傾向を反映しています。
8. 並行処理や依存関係の正しさも約2倍増加
処理順序の誤り、依存関係フローの不備、並行処理プリミティブの誤用が、AI PRで頻発しました。
小さなミスですが、影響は非常に大きい問題です。
9. フォーマットの問題は2.66倍
フォーマッタやリンターを導入しているチームでも、スペース、インデント、構造的不整合、スタイルの揺れといったノイズが、AI生成コードでは顕著でした。
10. 命名の不整合は約2倍
曖昧な命名、用語の不一致、汎用的すぎる識別子が多く、レビュアーの認知負荷を高めていました。
なぜこのような傾向が生まれるのか
AI生成コードで問題が増える理由について、私たちは次のように分析しています。
-
AIはローカルなビジネスロジックを理解していない
モデルは統計的にコードを推測するため、シニアエンジニアが暗黙知として持つルールを見落としがちです -
表面的に正しそうなコードを生成する
見た目は正しくても、制御フローの防御や依存関係の扱いが不十分な場合があります -
リポジトリ固有の慣習を完全には守らない
命名規則、アーキテクチャ、フォーマットが汎用的な方向に流れがちです -
明示的に指示しないとセキュリティが劣化する
古い学習データに基づくレガシーなパターンを再現することがあります -
効率よりも分かりやすさを優先する
単純なループ、繰り返しのI/O、非効率なデータ構造を選びがちです
エンジニアリングチームが取るべき対策
AIコーディングツールの導入は、単なるスピード向上ではありません。
本番に入るすべてのコードが安全で、保守可能で、正しいことを保証するためのガードレールを再設計する必要があります。
1. AIに十分なコンテキストを与える
ビジネスルール、設定パターン、アーキテクチャ制約をプロンプトやリポジトリ固有の指示として与えることで、ロジックの逸脱や設定ミスを減らせます。
2. Policy-as-Codeでスタイルを強制する
可読性とフォーマットは最大の課題でした。
CIでフォーマッタ、リンター、スタイルガイドを強制すれば、レビュー前に多くの問題を排除できます。
3. 正しさのためのセーフティレールを追加する
-
複雑な制御フローにはテストを必須にする
-
null確認や型のアサーションを義務付ける
-
例外処理ルールを標準化する
-
ガード条件を明示的に指示する
4. セキュリティのデフォルトを強化する
資格情報管理の集中化、場当たり的なパスワード利用の禁止、SASTやセキュリティリンターの自動実行が有効です。
5. 効率的なパターンへモデルを誘導する
I/Oのバッチ化、適切なデータ構造の選択、パフォーマンス指向のヒントをプロンプトに含めます。
6. AI前提のPRチェックリストを導入する
レビュアーは次を明示的に確認すべきです。
-
エラーパスは網羅されているか
-
並行処理は正しいか
-
設定値は検証されているか
-
パスワードは承認済みの仕組みを使っているか
7. AIコードのレビューとテストを支援するツールを使う
AIのサポートでデリバリーされるコード量は、従来のレビュー体制を超えています。レビュアーの疲労は、バグ見逃しの増加につながることも分かっています。
CodeRabbitのようなAIコードレビューツールは、レビューを標準化し、第三者的な視点で品質を担保しつつ、認知負荷と時間を削減します。
まとめ
AIコーディングツールは強力な加速装置ですが、ガードレールなしの加速はリスクを高めます。
本分析は、適切な対策がなければ、AI生成コードが 一貫してばらつきが大きく、エラーが多く、高深刻度の問題を引き起こしやすい ことを示しています。
AI支援開発の未来は、開発者を置き換えることではありません。
AIの強みを最大化し、弱点を補うためのシステム、ワークフロー、安全装置を構築することです。
AIのスピードを活かしつつ驚きを避けたいチームにとって、データが示す結論は明確です。
品質は自動ではありません。意図的なエンジニアリングが必要です。AIを使っていても同じです。
AIコードレビューツールも有効です。
今すぐCodeRabbitを試す





