世界中のコードの品質が急激に低下、その原因は AI です。 1億5300万行のコードの詳細な分析レポートが公開されました

世界中のコードの品質が急激に低下、その原因は AI です。 1億5300万行のコードの詳細な分析レポートが公開されました

AI が世界中のコード品質を低下させています。

最近、GitClear が発表した調査レポートによると、AI を使用してコードを記述すると、コードの品質と保守性が低下し続けることが示されました。

このことはインターネット上で白熱した議論を引き起こした。

「AI プロバイダーを使用すると、コードを 50% 速く生成できます (理解できないコードや書けないコードでも)。ただし、コードの品質と持続可能性は低下します。」

「私たちが追求しているのは、品質かスピードか?」

この調査では、GitClear は 2020 年 1 月から 2023 年 12 月の間に書かれた 1 億 5,300 万行のコード変更を分析しました。

——1億5,300万行のコード、コード品質の違いを評価するための最大のデータセット。

調査の結果何が分かりましたか?次の図を見てみましょう。

このグラフは、4 年間のコード変更率 (作成後 2 週間以内に取り消された、または更新されたコード行の割合) を示しており、暗い領域は AI コード生成ツールの影響を受けた時間を示しています。

調査では、「更新」、「削除」、「移動」コードの割合に比べて、「新規コード」と「コピー&ペーストコード」の割合が増加していることも判明しました。

これは、開発者がCopilotなどのAIコード生成ツールを多用して大量のコードを素早く生成しているものの、その後コード内に問題を発見していることを示しているようです。GitClearのレポートでは、2024年にはコード変更率が2021年のAI登場前の2倍になると予測しています。

もう 1 つのポイントは、AI コード生成ツールは人間のプログラマーの原則 (「車輪の再発明」など) にあまり注意を払わないため、コード ベース内で重複するコードがますます増えるということです。

——ただ、コーダーの多くは「CVプログラマー」なので、AIもその本質を学んでいるようですね。

2023 年、GitHub Copilot が輝きます。この AI プログラミング アシスタントは、わずか 2 年足らずで「プロトタイプ」から「コア ツール」へと急速に成長し、世界中の何十万もの企業の何百万人もの開発者に広く使用され、コーディングの新しい時代を切り開きました。

これに応えて、GitHub はソフトウェア開発分野における AI の成長と影響を調査したいくつかの研究論文を発表しました。

速度は55%増加、GDPは1.5兆円増加

調査によると、Copilot を使用する開発者はコーディング速度が 55% 速くなり、コード総量が 46% 増加し、世界の GDP が 1.5 兆ドル増加することがわかりました。

このような実績を見ると、GitHub CEO の Thomas Dohmke 氏が多忙な業務の合間に AI 革命に関する記事を書いているのも理解に難くありません。

2023年2月にCopilot個人版ユーザー数が100万人を超えたことを受けて、GitHubはGitHub Copilot for Business版の提供を開始しました。

では、AI を使用してコードを記述している開発者はどれくらいいるでしょうか?

GitHubとWakefield Researchが2023年6月に実施した調査によると、米国の大手企業の開発者の92%がAIプログラミングツールを使用していると回答した。また、開発者の 70% は、AI の使用によって明らかなメリットがもたらされると考えています。

しかし、2023年8月にO'Reilly Publishingが実施した調査データによると、開発者の67%がChatGPTやCopilotを使用していなかったことが分かりました。いずれにせよ、GitHub は市場でまだ活用されるのを待っている大きな可能性を秘めています。

ただし、大規模言語モデル (LLM) によって生成されたコードには次の問題があります。

このコードの品質と保守性はどうですか?

AI が吐き出す大量のコードに直面して、プログラマーがその中の問題点を見つけるのは難しいようです。結局のところ、プログラマー自身が書いたわけではないのですから。

また、誰もが知っているように、プログラマーが前任者が残した膨大なコードを引き継ぐ場合、従うべき「暗黙のルール」は次のとおりです。

コードが正常に動作する場合は、リファクタリングについて考える必要はありません。

AI生成コードの課題

Copilot によって開発者のコ​​ーディング効率が本当に向上したことは否定できません。 GitHub の調査によると、Copilot を使用すると開発者の満足度が 75% 増加しました。

初期の製品開発に携わった人たちは満足していましたが、長期的なメンテナンスを担当した人たちは不満を抱いていました。

ベテランのコード研究者であり、『Code is a Crime Scene』の著者でもある Adam Tornhill 氏は、これについて次のように疑問を抱いています。

Copilot を使用すると、コードを 55% 速く記述できるようになりますが、そもそも記述すべきではないコードだった場合はどうなるでしょうか?

『Clean Code: A Handbook of Agile Software Craftsmanship』の著者である Robert Martin 氏は、コードが読まれる頻度は書かれる頻度の 10 倍であると述べています。悪いコードをすぐに書くということは、その後のコード読者に大きな負担をかけることを意味します。

さらに、AI コード アシスタントには他の問題もあります。

たとえば、コード アシスタントはコードの生成は得意ですが、コードの変更は得意ではありません。複数の生成ツールが提案を行った場合、どれが優れているかを評価するのに時間がかかります。

最後に、AI コード アシスタントは開発者とは異なる動機を持っている可能性があります。コードの最適化に関しては、AI は最も受け入れられる可能性の高い提案を行う傾向があります。

そのため、経験豊富な開発者と比較して、初心者の開発者は AI によるコードの提案を受け入れる可能性が高くなります。

そしてベテランたちは、時間が経つにつれて、コードを維持するためのコストがどんどん高くなることを知っています。

コード操作の紹介

GitClear はコードの変更を 7 つのカテゴリに分類します (最初の 6 つが調査に含まれました)。

1. 新しく追加されたコード: 初めて提出されたコード行。コード行は完全に新しいものです。既存のコード行に小さな変更を加えたものや、追加、削除、再度追加されたコード行は含まれません。

2. 削除されたコード: 削除されてコミットされ、少なくとも 2 週間再追加されていないコード行。

3. コードを移動する: コード行を切り取って、新しいファイルまたは同じファイル内の新しい関数に貼り付けます。 「移動」操作では位置の変更のみが含まれ、コードの内容は変更されません。

4. コードの更新: 約 3 語以下の単語を変更して、既存のコード行を変更します。

5. コードの検索/置換: 3 か所以上の場所から同一の文字列を削除し、同一のコンテンツに置き換えます。

6. コードのコピー/貼り付け: 1 回のコミットで同じコード行を複数のファイルまたは関数にコピーします。

7. No-op コード: 同じコード ブロック内のスペースや行番号の変更など、いくつかの小さなコード変更を指します。

GitClear は 2020 年からこれらの操作に基づいて Git リポジトリを分類しており、Diff Delta ドキュメントでコード操作の具体的な例を提供しています。

2024 年 1 月現在、GitClear は商用顧客 (NextGen Health、Verizon など) および一般的なオープンソース リポジトリ (Facebook React、Google Chrome など) から約 10 億行のコードを分析および分類しています。

このうち 1 億 5,300 万行のコードが意味のある変更であり、この研究に使用されました。

最後に、「churn」と呼ばれる別の定義があります。これは、コードが作成され、git リポジトリにプッシュされ、その後 2 週間以内に撤回されるか、大幅に変更されることを意味します。

——これは冒頭で分析した図です。「Churn」は、作者が最初に書いて提出し、会社のgitリポジトリにプッシュしたコードに問題があり、それが後になって発見されたことを意味します。

データ分析

次の表は、GitClear データに基づいてさまざまなコード行操作の数を分析し、コードが作成された年ごとに分類しています。

表の最初の 6 つの項目は、前述のコード変更の最初の 6 つのカテゴリであり、最後の項目は「churn」です。

表のデータを次のグラフにプロットすると、さまざまなコード操作タイプの変化傾向をより明確に表示できます。たとえば、グラフ内の薄い青色の細い線は、「Churn」タイプのコードの変化を示しています。

2024 年の予測では、OpenAI の gpt-4-1106-preview アシスタントを使用して、既存のデータに対して二次回帰分析を実行します。

2022 年と 2023 年の動作頻度の違いを比較すると、コードの品質に影響を与える可能性のある 3 つの警告サインが特定されました。

危険信号

2023 年には、コードの乱立、移動、コピー アンド ペーストに大きな変化が見られました。これらの変化の影響については、深く検討する価値があります。

コードチャーニングの新たなトレンド

コード チャーンは、リポジトリにプッシュされたコードのうち、次の 2 週間以内に取り消されたり、削除されたり、更新されたりしたコードの割合を反映します。

過去に開発者が独自にコードを完全に記述していたときは、これは比較的まれであり、2023 年までに修正されたコードはわずか 3 ~ 4% でした。

しかし、2022年にCopilotのデビューとChatGPTの登場により、コード離脱率は不吉なことに9%に急上昇しました。

2022年から2023年にかけて、AIアシスタントの増加は倉庫内のエラーコードの増加と密接に相関しています。

Copilot の普及率が 2021 年に 0%、2022 年に 5~10%、2023 年に 30% であると仮定すると、これらの変数間のピアソン相関係数は 0.98 と高くなり、同期した成長を示しています。

コードの変更が当たり前になると、不良コードが本番環境に導入されるリスクが高まります。この傾向が 2024 年まで続くと、コード変更の 7% 以上が 2 週間以内に元に戻される可能性があり、これは 2021 年の 2 倍の割合になります。

これを踏まえて、レポートでは、Google DORAが年末に発表される「2024 Devops State」レポートにおいて「変更失敗率」の増加を示すだろうと予測しています。もちろん、この調査には 2023 年に AI アシスタンスを使用する開発者に関するデータが含まれていることが前提です。

コードの移動が少なくなり、リファクタリングと再利用が減ります

コードの移動は通常、既存のコード システムをリファクタリングするときに発生します。

システムのリファクタリング、特にコードの移動は、コード再利用の基礎となります。製品の範囲が拡大するにつれて、開発者は既存のコードを新しいモジュールとファイルに再編成し、新しい機能の再利用を可能にします。

経験豊富な開発者にとって、コードの再利用の利点は明らかです。新しいコードを追加する場合と比較して、再利用されたコードは実稼働環境でテストされ、安定性が証明されています。

再利用されたコードは複数の人によって変更されていることが多く、ドキュメントが含まれている可能性が高いため、新規ユーザーがモジュールをより早く理解するのに役立ちます。

「コピー&ペースト」とマークされたコードの増加に伴い、AI アシスタントはコードの再利用を阻止し、リファクタリングを推奨して「Don’t Repeat Yourself (DRY)」原則に従う代わりに、既存のコードを簡単に繰り返す方法を提供しているようです。

コピー&ペーストコードの増加は将来のメンテナンスの困難さを示唆している

コードのコピーと貼り付けは、長期的にはコードの保守性に影響を与える最大の要因であると考えられます。

コード行が再利用されるということは、本質的には「以前の実装を評価する時間がなかった」ことを意味します。

新しいコードを再利用するのではなくコピーして貼り付けることを選択すると、同じ機能を実現する並列コードの実装を統合する必要があるため、将来のメンテナンスがより困難になります。

ほとんどの開発者は、再利用可能なコードを解釈するよりも新しい機能を実装することを好むため、コピー&ペーストされたコードは長期間存在する傾向があります。

また、経験の浅いチームでは、重複したコードを削除できる有能で権威のあるコードメンテナーがいない可能性があります。

経験豊富な開発者であっても、コードを完全に理解し、重複の一部を削除するには膨大な労力がかかります。

CTO またはエンジニアリング リーダーが技術的負債を軽減するための時間を積極的にスケジュールしなければ、トップダウンの時間的プレッシャーは、新しく追加されたコピー アンド ペーストされたコードが長期的な開発速度を向上させるライブラリに決して組み込まれないもう 1 つの理由にしかなりません。

GitClear は単一のコミット内の重複コードのみをカウントするため、2023 年に測定された 11% のコピー アンド ペースト比率は、今年コピー アンド ペーストされたコードのごく一部にすぎない可能性があります。

要約する

レポートで評価された 2 つの主要なデータ ポイントによると、コードの品質は 2023 年に大幅に低下しました。この状況は、大規模言語モデル (LLM) の広範な応用、特に AI コード アシスタントの人気に直接関係しています。

GitHubとWakefield Researchによる2023年の調査では、開発者がコード品質の低下を認識していることが示されました。

「AI の支援なしで評価すべき指標は何だと思いますか」と質問したところ、最も懸念されていたのは「コラボレーションとコミュニケーション」で、次いで「コードの品質」でした。

質問が「AIアシスタンスを利用する際に評価すべき指標は何か」に変更されたところ、回答は変化し、「コード品質」が最も懸念される問題となり、「本番環境での問題事象」が3位に上昇しました。

一人の開発者の状況だけでは、AI を使用する際に「コードの品質」と「本番環境での問題インシデント」がより重要である理由を説明できないかもしれませんが、レポートのデータから考えられる理由が明らかになります。

開発者が、短期的には問題を解決できそうな、次から次へと適切な提案に圧倒されると、コードの最適化や再利用を無視してコードの量を増やし続けることになりがちです。

——Tab キーを押すだけで現在の問題が解決できるのであれば、将来のことなど気にする必要はないのではないでしょうか。

AI アシスタントと Copilot は開発者の役割をどのように変えるのでしょうか? AI 技術の広範な応用により、前例のないコード成長率を伴う新しい時代に入ったことは間違いありません。

そうなると、2024年の疑問は、「その後の混乱を誰が片付けるのか」ということになるでしょう。

ネットユーザーの議論

AIがもたらした「世界的なコード品質の低下」に直面して、ネットユーザーも深い理解を示している。

非難: 「コード エラーの修正に力を入れすぎたため、2 か月後にサブスクリプション (Copilot) をキャンセルしました。複雑なものや SQL 関連のものに関しては、基本的に役に立ちません (事前にスキーマ全体をロードしたにもかかわらず)。」

上司タイプ: 「書きたい内容がわかっているので、すべてを書き留める方が実際にははるかに手間がかかりません。また、ロボットのミスを修正するよりも自分のミスを修正する方が簡単です。」

慈悲:「このゴミに完全に負ける初心者のために私は泣きます。」

中立: 「Copilot の機能には驚かされましたが、生成されたコードは優れているとは言えません。生成されたコードは間違いなく変更する必要がありますが、多くの時間を節約できます。」

<<: 

>>:  ハルビン工科大学と快手が共同でCogGPTを提案:大規模モデルにも認知反復が必要

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

Pytorch チュートリアル: 初心者向けクイックガイド

Python は、オープンソースの ML ライブラリ Pytorch のおかげで、データ サイエンス...

概念から応用まで、人工知能の可能性

現在、AI の最大の可能性は、回帰や分類などの分析技術にあることが知られています。ニューラル ネット...

...

Google翻訳カーネルのアップグレードによりエラー率が55%以上低下したと主張

最近、Google 翻訳はひっそりと翻訳コアをアップグレードしました。 Google が提供する公式...

人工知能技術には明るい未来がある

1990年代初頭、中国の著名な学者である周海中氏は、人工知能技術がさまざまな分野で広く使用され、予想...

Midjourney の最新「拡張イメージ」ゲームプレイ: 高解像度の大ヒット作が 1 時間で直接制作可能!

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

機械学習の4つの異なるカテゴリの概要

[[420892]]学習の実行方法に基づいて、アルゴリズムをさまざまなカテゴリに分類できます。教師あ...

...

スクリーンはあなたの運命を変えることはできません! AI教育で裸で泳いでいるのは誰ですか? 16社が摘発される

[[252632]]はじめに:最近、「このスクリーンはあなたの運命を変えるかもしれない」という記事が...

...

大規模言語モデルの最大のボトルネックを突破する方法

翻訳者 |ブガッティレビュー | Chonglou OpenAIのGPT-4やAnthropicのC...

...

2021年の中国の医療人工知能産業の展望

医療用人工知能製品は多様化しており、下流の需要は強い医療人工知能産業の上流は、主に医療データマイニン...

デジタル時代のパフォーマンス管理:現実と未来

デジタルパフォーマンス管理の変革デジタル目標設定パフォーマンス計画は、企業の繁栄戦略と業務を結び付け...