- オープンソースの470件のPR分析結果では、AIが作成したコードは人間が作成したコードより平均1.7倍多くの問題を含んでいた
- ロジックエラー・可読性の低下・セキュリティ脆弱性など主要な欠陥がAIコードで顕著に多く、特に可読性の問題は3倍以上増加
- AIコードではエラー処理の欠落・並行性エラー・命名の不一致が頻発し、レビュー負荷と運用リスクが拡大
- 原因として、ビジネスロジックの理解不足、表面的な正確さの追求、低効率なパターンの選好などが分析された
- レポートは、AIコードの品質管理体制の強化とAI認識型のコードレビュー・セキュリティ・テスト手順の導入の必要性を強調
AI vs Human Code Generation Report 概要
- CodeRabbitは、AIと人間が作成したコードの品質差を実証的に分析するために研究を実施
- オープンソースのGitHub PR 470件を調査し、このうち320件はAI共同作成、150件は人間単独作成
- すべての結果はPR 100件あたりのイシュー数に正規化し、統計的な比率比較によって問題タイプ別の発生頻度を測定
- 結果として、AIは生産性を高める一方で、エラー発生率も増加
- AI作成PRあたり平均10.83件の問題、人間作成PRは6.45件
- 特に深刻度の高いエラーがAIコードでより頻繁に見つかった
研究の限界
- AI作成かどうかを直接確認できないため、AI共同作成シグナル(co-authored-by) があるPRをAI作成として分類
- シグナルのないPRは人間作成とみなしたが、完全な区別は不可能
- この限界にもかかわらず、2つのグループ間の問題パターンの統計的差異は有意に現れた
- 全体の方法論はレポート末尾で公開
主要な10の発見
- すべてのエラータイプがAIにのみ存在するわけではないが、ほとんどのカテゴリでAIコードのエラー率が高い
- 人間とAIはどちらも同種のミスをするが、AIはより頻繁に、より大規模に発生する
-
1. 全体のイシュー数が1.7倍増加
- AI作成PRあたり平均10.83件、人間作成PRは6.45件
- イシューが集中したPR(outlier) がAIコードで大幅に多く、レビュー負荷が増加
-
2. 深刻度の高いエラーが増加
-
3. ロジックと正確性の問題が75%増加
- ビジネスロジックのエラー、誤った依存関係、制御フローの欠陥、設定ミスを含む
- 修正コストが高く、運用障害につながる可能性が大きい
-
4. 可読性の問題が3倍以上増加
- 命名規則・コード構造・表現の一貫性が著しく低下
- コードが見た目には整っていても、ローカルパターン違反が頻発
-
5. エラー処理および例外経路の欠落が2倍増加
- nullチェック、guard条件、例外処理ロジックがしばしば欠ける
- 実際のサービス障害に直結するタイプ
-
6. セキュリティ問題が最大2.74倍増加
- パスワード処理の不適切さ、オブジェクト参照の脆弱性が代表例
- 固有の脆弱性ではないが、大半のセキュリティ欠陥が拡大
-
7. 性能低下の問題は少ないがAI側に集中
- I/Oの過剰呼び出しが約8倍多い
- AIが明快さ重視のコードを好むため効率が落ちる
-
8. 並行性・依存関係のエラーが約2倍増加
-
9. フォーマット問題が2.66倍増加
- インデント、空白、スタイル不一致など形式的なエラーが多い
- 自動フォーマッタやリンターを使っても、AIコードではノイズが増加
-
10. 命名の不一致が2倍増加
- 不明瞭な名前、用語の不一致、一般的な識別子の使用が多く、レビュアーの認知負荷が上昇
問題発生の原因
- AIはビジネスロジックの理解が不足
- 統計的パターンに基づいてコードを生成するため、システムのルールを見落とす
- 表面的な正確さ中心の生成
- コードは見た目には正しそうでも、制御フロー保護や依存順序のエラーが存在
- リポジトリごとの慣例を順守しない
- 命名・構造・フォーマット規則が一般化された形に変質
- セキュリティパターンの弱化
- 明示的な指示がなければ、古い・脆弱なコードパターンを再現
- 効率より単純さを選好
エンジニアリングチーム向けの対応策
- AI導入では速度向上だけでなく、品質保証体制の再設計が必要
-
1. AIに十分なコンテキストを提供
- ビジネスルール・設定パターン・アーキテクチャ制約を明示することでエラーを削減
- プロンプト内にリポジトリごとのガイドライン・スキーマを含める
-
2. ポリシーベースでコードスタイルを強制
- CIのフォーマッタ・リンター・スタイルガイドで可読性の問題を予防
-
3. 正確性の安全装置を追加
- テストの義務化、null/type検査、例外処理の標準化、guard条件の明示
-
4. セキュリティのデフォルトを強化
- 認証情報の一元化、パスワードの直接使用を遮断、自動SAST・セキュリティリンター実行
-
5. 効率的なパターンを誘導
- I/Oのバッチ処理、適切なデータ構造の選択、性能ヒントの提供
-
6. AI認識型PRチェックリストを導入
- レビュー時に次の項目を確認:
- エラー経路がカバーされているか
- 並行制御が正確か
- 設定値が検証されているか
- パスワード処理方法が適切か
-
7. AIコードレビュー自動化を導入
- レビュー疲労の増加によるバグ見落としを防ぐため、AIコードレビューツール(CodeRabbit) の活用を提案
結論
- AIコーディングツールは強力な加速装置だが、防護策のない加速は危険
- AI生成コードは変動性・エラー率・深刻度のすべてが高い
- AIを代替ではなく補完ツールとして活用し、品質・セキュリティ・テスト体制の強化が必須
- 速度と品質を両立するには、意図的なエンジニアリング管理が必要
- AIコードレビュー支援ツールの活用は品質維持に実質的な助けとなり得る
5件のコメント
1.7倍なら、思ったより少ない……?
私もAIでコーディングしながら、似たようなことを感じています。整理された原因を見ると、人がコーディングするときに前提として持っているパターン、命名規則、エッジケース処理、ガード条件などが、コンテキストとして十分に与えられていないからではないかと思います。
なので私は、そういったものだけを集めたルールファイルを1つ作って、コーディングするときはそのファイルを必ず読んで順守するよう指示しています。すると、そのルールファイルだけを改善していけば、成果物がかなり良くなるんですよね。
「ものすごくたくさん作れたんだから、1.7倍ならタダ同然じゃないか」という意見がありそうで怖い…
でも速かったでしょ?っていうミームを思い出します(笑)
Hacker Newsの意見
私は AI以前から『vibe coding』は存在していた と思う
vibe coding への批判はもっともだが、実際のところ AI以前からコード品質はひどかった
「AIコードは1.7倍多くの問題を作る」という話は、発見されたバグの数 にすぎない
少し前に .NET で IComparable の実装 を Copilot に提案してもらい、数分節約できた
以前にも似たような状況はあった
LLMベースの会社が「AIは思ったほどひどくない」と主張していたのは興味深かった
私は CodeRabbit をよく使うが、今でも false positive が多い
「1.7倍多い」と「1.7倍増えた」は同じ意味ではない
Agentic AI coding は単なるツールであり、使い方を誤れば当然誤った結果になる
記事タイトルの「AIコードが1.7倍多くの問題を作る」という表現は不正確だ