AIによるAIの修正は可能か GitHub Copilot Autofixから見えてくるAIの新たな課題ソフトウェアデリバリーがAIの悪影響にさらされる?

TechTargetは「GitHub Copilot Autofixから見る、AIの信頼度」に関する記事を公開した。AIによって生成されるコード量の多さによってソフトウェアデリバリープロセスが窮地に陥っている。こうした状況では、GitHubの「Copilot Autofix」による脆弱性管理が役立つ可能性がある。だが、AIを制するのにAIを信頼してもよいのだろうか。

» 2024年12月05日 08時00分 公開
[Beth Pariseau@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 TechTargetは2024年10月29日(米国時間)、「GitHub Copilot Autofixから見る、AI(人工知能)の信頼度」に関する記事を公開した。AIによるコード自動生成は、コーディングの生産性を高めるとされる。しかし、安全なソフトウェアのデリバリー速度が向上するとは言い切れない状況だ。この課題に対応するため、「GitHub Copilot Autofix」のようなAIを活用したソフトウェア脆弱(ぜいじゃく)性検知ツールは機能を強化している。だが、こうしたツールの利用にも課題はある。

画像 ソフトウェアデリバリーがAIの悪影響にさらされる中拡大される「GitHub Copilot Autofix」(提供:TechTarget)

コードへの脆弱性の混入を防ぐCopilot Autofix

 Copilot Autofixは2024年8月にAdvanced Security利用者向けに一般提供され、同年9月には全てのリポジトリに利用できるようになった。リポジトリ内のコードをスキャンしてセキュリティの脆弱性を検出し、開発者にその重要性を説明した上で修正案を提示するものだ。Copilot Autofixは2024年10月に新たに2つの機能をパブリックプレビューとして追加した。それは、セキュリティ負債のバックログを消化する「セキュリティキャンペーン」と、「ESLint」やJFrogの静的アプリケーションセキュリティテスト(SAST)、Black Duckの「Polaris」といった外部のコードスキャンツールとの統合だ。

 IDCのアナリスト、ケイティ・ノートン氏によれば、組織は自動化された脆弱性修正を「コーディング中」と「セキュリティ負債の削減」の2段階で利用する必要があるという。

 「Copilot Autofixはコーディング中における脆弱性の導入を削減する手助けをし、セキュリティキャンペーンはセキュリティ負債の削減を支援する。現行の自動修正ツールはどちらか一方に特化していることが多いため、Copilot Autofixの2つの新機能は企業にとって有益だと言える」(ケイティ・ノートン氏)

 2024年10月現在、セキュリティキャンペーンは主にGitHubの「CodeQL」による脆弱性スキャンとSASTの結果に焦点を当てているが、今後はGitHubの「Dependabot」によるオープンソースの脆弱性や依存関係も含むように拡張されるのではないか、とノートン氏は期待しているという。他のソースコード解析ツールとしては、Endor Labsの「Endor Open Source」がある。これは依存関係のモデリングや脆弱なパッケージのアップグレードの影響を分析するものだ。

 「セキュリティの自動アップデート機能は幾つか存在するが、AIを活用するAutofixとDependabotとの統合がより緊密になり、インテリジェント性が高まることを期待している」(ケイティ・ノートン氏)

 ノートン氏の予測を裏付けるかのように、GitHubは2024年10月下旬にDependabot向けのCopilot Autofixのプライベートプレビュー版をリリースした。GitHubの変更ログによるとこの新機能によって、TypeScriptリポジトリでDependabotが作成したプルリクエストにおいて、依存関係のアップグレードが原因で発生するプログラムの動作に大きな影響を与えるような変更を、AIを使って自動的に修正できるようになったという。

AIがソフトウェアデリバリーに与える悪影響

 AIを活用したソースコード解析ツールの普及が進む中、GoogleのDORA(DevOps Research and Assessment)チームは年次報告書「Accelerate State of DevOps」において、AI生成コードがソフトウェア配信プロセスに与える影響を分析した。この調査には約3000人が参加。回答者の81%が「AIを使用している」と回答している。その主な用途は、コードの作成、説明、文書化、最適化、情報の要約などだった。

 DORAチームの分析によると、AIは個人の作業効率や生産性、仕事の満足度、プロジェクト文書の質を向上させる。一方で、ソフトウェアデリバリー全体のパフォーマンスという点で幾つかの課題がある。調査結果によると、AIの導入率が25%増加するごとに、ソフトウェアデリバリーのスループットが1.5%低下し、配信の安定性(ソフトウェア変更の失敗率とやり直し率を組み合わせた指標)が7.2%低下することが明らかになった。

 DORAチームは同調査の報告書において「AIがもたらした生産性向上やコード生成速度の劇的な変化によって、DORAが提供する基本原則『小さいバッチサイズの重要性』が忘れられてしまった可能性がある。DORAはこれまでも一貫して『大きな変更は時間がかかり、不安定になりやすい』ということを示してきた」と述べている。

 別の見方をする業界アナリストもいる。

 Constellation Researchでアナリストを務めるアンディ・トゥライ氏は「回答者の75%がコード作成にAIを使用しているのに対し、デバッグ、コードレビュー、テスト作成にAIを使用しているのは60%未満だ。後者のツールの成熟度が低いか、この分野のタスクではAIが信頼されていないかのどちらかだ。だが、どちらであってもAIがDevOpsの半分でしか活用されていないのであれば、良い結果にはつながらないだろう」と分析している。

 一方、「問題はもっとシンプルだ」と指摘する業界関係者もいる。

 「ソフトウェア開発におけるAI活用は成熟には程遠い状況だ。企業はAI導入による成果を誇張している。本当にAIから効果を得ているなら、AIコードへの信頼、生産性の向上、またはエンジニアの作業時間の代替効果がより明確に示されるはずだからだ」と語るのはWebOpsサービスプロバイダーPantheonで最高技術責任者(CTO)を務めるデビッド・シュトラウス氏だ。

 DORAチームの報告書によれば、AIへの信頼はそれほど高くないことが分かる。回答者の39.2%は「ほとんど信頼していない」「全く信頼していない」と答えている。一方で、67%の回答者は、AI支援型コーディングツールによってコード作成能力がある程度改善したと述べている。ただ、そのうち約40%は「わずかな改善」と表現しており、「非常に大きな改善」と答えたのは10%だけだった。

AIをAIで修正することは可能か?

 GitHubのドキュメントによると、Copilot Autofixでは自動適用されるテスト群により、“提案の質”を監視している。また、GitHubのレッドチームがシステムのストレステストを実施し、潜在的な問題を検出している。さらに、大規模言語モデル(LLM)にフィルタリングシステムを設け、ユーザーに有害な提案が表示されるのを防いでいるという。

 だが、GitHubのドキュメントには次の注意事項も記されている。

 「AIには限界があることを常に念頭に置き、提案された変更を受け入れる前に必要に応じて修正してほしい。また、コードスキャン用にCopilot Autofixを有効にする前に、リポジトリのCI(継続的インテグレーション)テストや依存関係管理を更新することも検討すべきだ」

 これを実践している企業の一例として、ヘルステック企業Veradigmがある。同社の主任ソフトウェアエンジニアであるカイラー・ミドルトン氏は「Copilot Autofixは時に驚くほど優れた提案をするが、予期しないことをしたり、他の機能を壊してしまったりすることもある。そういう意味では、まるで人間のエンジニアのようだ」と語る。

 ただし、AIが生成するコードを見極めるのは「未解決の課題」と同氏は考えている。

 「AI生成コードと人間が書いたコードを見分けることができないため、われわれは可能な限り多くのコードをテストする方針を採っている。AIが登場する以前から、エンジニアがインターネットのあちこちからコードをコピーする可能性はあった。結局のところ、優秀な技術者にコードを見てもらい、優れた単体テストによって問題点を見つけることが重要だ」

 だが、AIを使ってAIをテストすることに不安を抱く人もいる。特に、コード生成とコードテストの両方に同じ基盤モデルが使われている場合はその不安は一層高まる。

 Pantheonのシュトラウス氏は「AIを使って実施されたAIのテストを信頼するのは難しい。それは、人間が自身のミスを見逃すことが多いのと同じだ。潜在的なミスを理解しているAIシステムならば、そもそもミスを犯さないのが普通だ。モデルやトレーニングが異なるAIであれば、別のAIが行った作業の問題点を見つけられるかもしれない。だが、少なくとも現時点では、それぞれのAIのトレーニングや機能配分が極めて似通っているため、異なるAIの作業を信頼に足る方法で『コードレビュー』することはできないだろう」

 では、異なる基盤モデルを使えばいいのかと言えばそう簡単な話でもない。Constellation Researchのアンディ・トゥライ氏によると、異なる基盤モデルを使用して別のモデルの出力を評価すると、複雑さとコストが増大するという。すでに多くの企業が生成AIへの投資回収に苦労している状況を考えれば、この点は無視できない。

 「結局のところ、何のためにこれ(AI活用)をしているのかが問われることになる。生産性やコスト効率を追求するためであれば、その目的に反する結果になること覚悟する必要がある」(トゥライ氏)

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

Test & Tools 記事ランキング

本日月間

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。