← 最新の論文
💻 computer science

A Large-Scale Comprehensive Measurement of AI-Generated Code in Real-World Repositories A Large-Scale Comprehensive Measurement of AI-Generated Code in Real-World Repositories

この論文は、大規模なヒューリスティックフィルタと LLM 分類を用いて実世界のリポジトリから AI 生成コードを特定し、そのコードレベルおよびコミットレベルの特性を人間が作成したコードと比較分析することで、AI 支援プログラミングの実践的影響を明らかにする大規模な実証研究である。

原著者: Tianhao Mao, Dongfang Zhao, Haixu Tang, Xiaofeng Wang, Hang Zhang

公開日 2026-03-31
📖 1 分で読めます☕ さくっと読める

原著者: Tianhao Mao, Dongfang Zhao, Haixu Tang, Xiaofeng Wang, Hang Zhang

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

この論文は、**「AI が書いたコード(プログラム)と、人間が書いたコードは、実際に使われている現場でどう違うのか?」**という大きな疑問に、膨大なデータを使って答えた研究です。

これまでの研究は「AI に『この機能を作ってください』と命令して、できた結果をテストする」という、どちらかというと実験室のような環境で行われることが多かったのですが、この研究は**「実際に GitHub という巨大なコードの図書館で、AI が手伝って作られた本(コード)を直接調査した」**という点が画期的です。

まるで、**「料理のレシピ本」**を例に挙げて、この研究の発見をわかりやすく解説しましょう。


🍳 料理のレシピで考える:AI 料理人 vs 人間料理人

この研究では、AI を「新しい料理人」、人間を「ベテラン料理人」として比較しました。

1. 料理の「量」と「説明の仕方」の違い

  • AI 料理人(AI 生成コード):

    • 特徴: 非常に**「丁寧で、説明が長い」**レシピを作ります。
    • 例: 「卵を割る」という作業でも、AI は「まず卵を手に取り、殻を優しく叩き、中身をボウルに移す」と、一つ一つの動作を細かく分解して書きます。
    • 結果: 料理自体は完成しますが、レシピのページ数(コードの行数)は人間より**長くなり、冗長(むだ口が多い)**になります。
    • 隠れたリスク: 説明が長すぎるため、後でレシピを見直したときに「あ、ここはもっと簡潔に書けたな」と思わせる**「構造の複雑さ」**が増しています。
  • 人間料理人(人間生成コード):

    • 特徴: **「コンパクトで、要領が良い」**レシピです。
    • 例: 「卵を割る」だけで、ベテランは「卵を割る」と書けば済ませます。
    • 結果: 人間は、同じ料理でも**「共通の道具(再利用)」を上手に使います。例えば、「玉ねぎを切る」工程は、他の料理でも同じレシピを流用します。しかし、AI はその都度、ゼロから新しいレシピを作ってしまうため、「同じような手順がバラバラに散らばっている」**傾向があります。

2. 料理の「安全性」と「隠れた危険」

  • AI 料理人:

    • 致命的な毒(重大なバグ)が入っている確率は人間とあまり変わりません。
    • しかし、**「塩を少し入れすぎた」「火加減が微妙」といった、「高リスク・中リスクの小さな問題」**が人間より多く見つかりました。
    • 特に、**JavaScript(Web 開発でよく使われる言語)**で使われると、セキュリティ上の危険な状態になりやすいことがわかりました。
  • 人間料理人:

    • 人間は、パスワードをメモする際によく「パスワード」という文字をそのまま書いてしまったりしますが、AI は「API キー(鍵)」や「トークン」を誤って残してしまう傾向がありました。

3. 厨房(開発現場)での働き方

ここが最も面白い部分です。AI が手伝うと、厨房の動きがどう変わるか?

  • 作業のタイミング:

    • 人間は「定時」や「週末」に作業しますが、AI を使う人は**「深夜や休日にこっそり作業している」**ことが多いです。
    • しかし、**「お料理が完成する直前(リリース直前)」**には、AI を使うのを避ける傾向があります。「最後の仕上げは慎重に人間がやるべき」と感じているのかもしれません。
  • 作業の規模:

    • 人間は「大きな鍋(大きなファイル)」を一度に作り変えることが多いですが、AI を使う人は**「小さな皿(小さなファイル)」**をコツコツと修正する傾向があります。AI は「大きな変更」よりも「細かい微調整」が得意なようです。
  • その後のメンテナンス(後片付け):

    • ここが重要! AI が作った料理は、**「すぐに片付けられる」のではなく、「後で何度も手直しが必要になる」**傾向があります。
    • 提出されたレシピは、1 週間後よりも**「1 ヶ月後、3 ヶ月後」**に、他の料理人(別の開発者)によって手直しされる頻度が高いです。
    • つまり、**「AI は最初の作成を速くするが、その後の「完成品を磨き上げる」作業(メンテナンス)を人間に増やさせている」**と言えます。

💡 この研究が教えてくれること(結論)

この研究は、**「AI は魔法の杖ではなく、新しい道具」**だと教えてくれます。

  1. AI は「量産」が得意だが、「整理」は苦手:
    AI はすぐにコードを書き出しますが、それが「無駄に長い」「使い回しが悪い」ものになりがちです。人間は、AI が作ったものを**「要約して、整理し、再利用しやすい形に直す」**という追加の作業が必要になります。

  2. 作業のシフト:
    AI のおかげで「ゼロから書く時間」は減りますが、「書いたものをチェックして直す時間」は増える可能性があります。開発者は、AI に任せるだけでなく、その後の「品質管理」に力を入れる必要があります。

  3. 言語による違い:
    AI の性能は、使うプログラミング言語によって大きく異なります。例えば、C++ や JavaScript では問題が出やすい傾向があるため、言語ごとに使い方を工夫する必要があります。

🌟 まとめ

AI は、**「料理の下ごしらえをサクサクしてくれる見習い」のような存在です。
しかし、その見習いが作った料理は、
「味は悪くないけれど、盛り付けが雑で、後でシェフ(人間)が丁寧に整え直す必要がある」**のが現状です。

この研究は、私たちに**「AI に任せて終わりではなく、その後の『仕上げ』をどうするか」**を考えるきっかけを与えてくれました。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →