Altran は Microsoft と提携して、コードをコミットするたびに AI を使ってコードの欠陥を見つけるオープンソース プロジェクトを展開しました。
Microsoftがなぜこの取り組みに熱心なのかは容易に理解できます。これはセルフマネージド型のサービスで、コードをダウンロードし、それをホストするためのAzureリソースを購入する必要があります。Capgemini傘下のコンサルティングおよびソフトウェアエンジニアリング企業であるAltranによるこのプロジェクトでは、2つのAzure Webアプリ(UI用とAPI用)、Azure仮想ネットワーク、VPNゲートウェイ、仮想ネットワークセキュリティグループ、Azureコンテナーレジストリ、Azure MariaDBデータベースサービス、そして予測コードのスケジュール設定用コンテナーが使用されています。言うまでもなく、重要なトラフィック分析のためのAzure Application Insightsも含まれています。
UIウェブアプリは2つのP1v2 Linuxプランで構成します。それぞれ月額約61ポンドです。AIウェブアプリは2つのP2V2 Linuxプランで構成します。それぞれ月額約123.00ポンドです。MariaDBデータベースは4つの仮想コアで月額221ポンドです。つまり、ストレージ費用や仮想ネットワークゲートウェイなどを加算せずに、月額600ポンドを支払うことになります。コードとインストール手順はGitHubで公開されています。ガイドではアプリケーションのデプロイに必要な情報はすべて説明されていますが、使用方法についてはあまり説明されていません。
このシステムの仕組みは、コードベースで報告されたバグの履歴を含むオープンソースのGitHubプロジェクトを検査することでバグ検出モデルを学習させるというものです。そして、ドキュメントにはやや漠然と「適合率と再現率が許容できる値に達したモデルが完成したら、選択されたモデルを新規コミットの予測にデプロイします」と書かれています。バグの可能性が高いコードは、さらなる調査とテストのためにフラグが付けられます。
Altranによると、「Code Defect AIは、ランダム決定フォレスト、サポートベクターマシン、多層パーセプトロン(MLP)、ロジスティック回帰など、様々な機械学習技術を活用しています。履歴データは抽出、前処理、ラベル付けされ、アルゴリズムのトレーニングと信頼性の高い意思決定モデルのキュレーションに活用されます。開発者には、コードが準拠しているか、バグのリスクがあるかを予測する信頼度スコアが提供されます。」
Code Defect AIはサードパーティの解析ツールとの統合をサポートしており、特定のプログラムコード内のバグの特定にも役立ちます。さらに、Code Defect AIツールを使用すると、開発者はバグ予測においてコード内のどの機能がより重要度が高いかを評価することができます。つまり、ソフトウェア内にバグの可能性を評価する上で重要な機能が2つある場合、どちらの機能が優先されるかを判断することができます。
「ソリューション」ページは華やかに見えますが、The Regはプレゼンテーションに驚くべき欠落があることに気づきました。通常、このような情報には満足したユーザーからの熱烈な証言がつきものです。しかし、Altranのソフトウェアエンジニアリングおよびサイバーセキュリティ担当副社長であるKhalid Sebti氏が「当社のコード欠陥ソリューション予測ツールを使用したお客様は、テストプロセス開始前に欠陥の20%以上を特定できます」と述べている動画を見つけました。
でもどうやって?
しかし、その証拠はどこにあるのでしょうか?Altranに問い合わせたところ、最初に「PowerPointプレゼンテーション」というタイトルの文書が送られてきて、「これはバグを特定するAI搭載ソリューションだ」と断言しましたが、その主張を裏付けるデータはありませんでした。再度問い合わせたところ、GitHub上のコード、特に「アーキテクチャのフローチャート」を参照するように言われました。このようなフローチャートはいくつかあり、そのうちの1つには「ストレージとデータレイクAzure」という単語が添えられています。前述のビデオから、これはまだプロジェクトの第1フェーズに過ぎないことが分かりました。第2フェーズでは、「ソリューションはML ServerやSQL Serverを含む他のMicrosoft AI/MLテクノロジに拡張されます」。このフローチャートには、SQL ServerとCosmos DBに加えて、Kubernetesという魔法の言葉も含まれています。
プロジェクトの第2フェーズでは、Azureサービスの利用が拡大されます。
おそらく疑問なのは、オープンソースのGitHubプロジェクトで見つかった欠陥を使って自社のAIモデルをトレーニングすることに意味があるのかどうか、ということだろう。むしろ、大規模なモデルトレーニングを独自に行っているサービスに加入する方が賢明な場合もある。マイクロソフトは先月、自社のセキュリティブログで、「2001年以来、マイクロソフトは1,300万件の作業項目とバグを収集してきました。そのデータを用いて、セキュリティ関連のバグとそれ以外のバグを99%の確率で正しく区別し、重大かつ優先度の高いセキュリティ関連のバグを97%の確率で正確に特定するプロセスと機械学習モデルを開発しました」と投稿した。
マイクロソフトでは、「4万7000人の開発者が毎月約3万件のバグを生み出している」と投稿で説明されており、これは良い傾向と言えるでしょう。この方法論は「今後数ヶ月以内に」GitHubでオープンソース化される予定ですが、Altranプロジェクトとは関係ないようです。
AWSは、CodeGuruプロファイラーを「数十万の社内プロジェクトと、GitHub上の1万以上のオープンソースプロジェクト」でトレーニングしました。これは、Microsoftのセキュリティプロジェクトと同様に、興味深い結果をもたらす可能性のある規模です。
これは、勢いを維持するために十分な協力コミュニティの支援を得ようとしているオープンソースプロジェクトなのでしょうか?可能性は低いでしょう。GitHubにコードがいくつか公開されていますが、まだコミュニティの存在は確認されていません。Azure上でAIプロジェクトのコードをホストする方法を示すサンプルと考えてください。その点では有用かもしれませんが、PowerPointで謳われている「Azure AIでより速く、より優れたコード」とはどういう意味でしょうか?私たちは懐疑的ですが、お客様からの報告を興味深く待っています。®
5月20日8時55分に更新しました
Altran社は、AIによる欠陥検出機能の仕組みについて、より詳しい情報を提供してくれました。同社によると、AIはソースコード自体ではなく、コミットメタデータ、つまり「チェックイン内のファイル数、コードの複雑さ、チェックインの密度、ファイルのバグ履歴、開発者の履歴、特定のモジュール/ファイルにおける開発者の経験など」に注目するとのことです。
モデルのトレーニングは調査対象のプロジェクトでのみ行われ、オープンソース プロジェクトへの参照は「公開されたソリューションが GitHub プロジェクト用であるため」にすぎないと同社は述べています。
私たちには実例があります。「このソリューションを導入したあるプロジェクトでは、火曜日に多くのコードコミットが高リスクとしてフラグ付けされるようになりました。当初は機械学習モデルに疑問を抱きました。しかし、開発チームが毎週火曜日にビルドを実行する習慣があることが分かりました。開発者は、毎週のビルド前に十分にテストされていないコードをコミットできたのです」と説明を受けました。
この例は、このソリューションが「従来のソースコード分析ツールやテスト自動化ツールでは解決できないソフトウェアの妥当性検証における問題を解決する」という主張を裏付けています。しかし、締め切りに追われテストを怠った開発者がコミットしたコードにはバグが多いと判断するのに、複雑なクラウドホスト型AIシステムが本当に必要なのでしょうか? とはいえ、欠陥の修正にはコストがかかるため、プロセスを改善するシステムには価値があります。このプロジェクトは、より広範なAltranテストシステム「ATLAS」の一部です。