バグのないコードを作るにはオープンソースツールが役立つ、Microsoft Researchが紹介:バグ検出やREST APIファジング、数学的証明、AI言語モデル
Microsoft Researchはバグのないコードの迅速な作成を支援する目的で取り組んでいる4つのオープンソースプロジェクトの概要を紹介した。並列プログラムのバグを検出したり、クラウド向けにREST APIのファジングを助けたりするプロジェクトだ。
Microsoft Researchは2021年5月26日(米国時間)、開発者がバグのないコードを迅速に作成できるよう支援する4つのオープンソースプロジェクトを公式ブログで紹介した。開発者向けカンファレンス「Microsoft Build」(2021年5月25〜27日に開催)で発表したプロジェクトだ。
Microsoft Researchは「開発者にとって、エラーのないコードを迅速に書かなければならないというプレッシャーが、これまで以上に高まっている。われわれが使用する技術や、構築するソリューションはますます複雑になっており、バグは見つけにくくなり、修正に長い時間がかかるようになっている」との認識を示す。
今回発表したプロジェクトは、「さまざまな方法によって開発者の作業を自動化することで、バグの発見と修正を容易にし、コードの正確性を高め、エラーの発生を防止する」と述べている。
「Project Coyote」 並列プログラムのバグ検出を高速化
「Project Coyote」は、並列プログラムのユニットテストを進めるオープンソースの.NETライブラリとツールからなる。
Project Coyoteを使うと、コードの並列性を確保するための強力なテストを作成できる。Project Coyoteはテスト時にタスクに加えて、コードの非決定性の原因(メッセージの順序や障害、タイマなど)を制御し、さまざまな実行パスをインテリジェントかつ高速に探索し、バグを検出できる。
「Microsoft Azure」の幾つかの担当チームはProject Coyoteを、サービスのテストに使っており、本番コードのバグの大幅な削減や高速化を実現している。
「RESTler」 REST APIのファジングによってクラウドをバグフリーに保つ
「RESTler」は、ステートフルREST APIのファジングを行うためのオープンソースツールだ。
クラウド/Webサービスを、これらが備えるREST APIによって自動的にテストし、セキュリティや信頼性のバグを検出する。
ファジングとはソースコードを直接解析する代わりに、極端に長い文字列などの予測不可能なデータを送り込み、ソフトウェアの挙動を観察し、脆弱(ぜいじゃく)性を発見する手法だ。REST APIは非常に複雑でバグに弱い場合があり、重要なクラウドシステムでREST APIを使用する際は、ファジングによるテストが不可欠だという。
Azureや「Microsoft 365」「Bing」といったクラウドサービスを手掛けるMicrosoftのエンジニアチームは、RESTlerによるファジングを採用しており、これらのシステムのバグ検出に役立てている。
「Project Everest」 数学的証明による保証を実現
「Project Everest」は、Microsoft Researchやカーネギーメロン大学、フランスのINRIA(Institut National de Recherche en Informatique et en Automatique)、MSR-INRIAジョイントセンターといった組織の研究者、エンジニアのチームが複数年にわたって取り組んでいるプロジェクトだ。
数学的証明の導入によって、ソフトウェアに関する保証、例えば正確に結果を計算し、機密を決して流出させず、決してクラッシュしないといった保証を提供することを目的としている。
Project Everestは本番環境に対応し、強力な正確性とセキュリティが保証され、優れたパフォーマンスを発揮する検証済みの暗号化ルーティンやパーサー、プロトコルを開発している。これらの開発では、「F*」という新しいプログラミング言語が使われており、開発者はこの言語によって、プログラムと証明の両方を作成できる。
Project Everestのコードベースは60万行を上回るが、研究者はプッシュのたびに、この膨大なコードの正確性と安全性を検証している。
「CodeBERT」 AIでバグを根本的に削減
「CodeBERT」はプログラミング言語の事前学習モデルであり、テキストとコードの類似性を捉える。開発者がバグのないコードを作成できるよう支援することがプロジェクトの目的だ。
自然言語と6つのプログラミング言語(Python、Java、JavaScript、PHP、Ruby、Go)のペアでトレーニングされており、この6つのプログラミング言語でのコード/コード、コード/テキスト、テキスト/コード、テキスト/テキストの変換をサポートしている。
CodeBERTを使うと、開発者はコード補完システムを利用してコードを作成できる。見慣れないコードを見掛けたら、コードの要約にアクセスし、コードの動作に関する自然言語での説明を読むことができる。さらにCodeBERTのコード検索システムで自然言語を用いた検索を行い、他人が自分と同じ意図で書いたコードを探すこともできる。
CodeBERTは、技術ドキュメントを10以上の言語に自動的に翻訳することも可能だ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- MITとIBMの研究者、自動プログラミングツールの弱点を発見し修正する方法を提案
MITとIBMの研究者はディープラーニングに基づくコード処理モデルの弱点を発見し、モデルを再トレーニングして、攻撃に対する回復力を高める自動的な方法を発表した。 - 機械学習でMicrosoftがセキュリティバグを判定、高い精度が特徴
Microsoftは、教師あり機械学習を活用することにより、セキュリティバグの特定と分類の精度を大幅に向上させたと発表した。開発時、さらには運用後の改善にはセキュリティ専門家の協力を仰ぐことが不可欠なのだという。 - Microsoft、セキュリティプロセッサ「Microsoft Pluton」を発表
MicrosoftはAMD、Intel、Qualcomm Technologiesとともに、セキュリティプロセッサ「Microsoft Pluton」と、これに基づくWindowsセキュリティの新たなビジョンを発表した。TPMチップとCPUのやりとりを傍受するといった攻撃に対応する。