ニュース

AI技術ベースのコーディング支援機能「IntelliCode」、行単位でのコード補完も可能に

繰り返しの修正パターンを学習してリファクタリング案を提示する機能も

公式ブログ“Visual Studio Blog”

 米Microsoftは11月4日(現地時間)、「Visual Studio IntelliCode」の改善を発表した。「IntelliCode」は、AI技術ベースのコーディング支援機能。今年5月に一般公開され、「Visual Studio 2019」v16.1以降で標準搭載された。その後も機械学習技術の応用を進め、2つのエキサイティングな新機能を追加したという。

 1つ目は、行全体のコード補完だ。この機能は、OpenAIが開発した自然言語テキストを生成できる機械学習モデル「GPT-2」をプログラミング言語とコーディングパターンへ拡張し、“GitHub”の上位3,000以上ものリポジトリから学習することで実現されており、シンボルやメソッドの補完だけでなく、状況に応じてコードを一行まるごと提案することが可能。AIと一緒にプログラミングをしているかのように、作業の流れを妨げることなく有用な提案や行補完を受けることができる。

行全体のコード補完

 このコード補完モデルは開発者個人単位だけでなく、開発チーム単位でトレーニングすることも可能。オープンソースの“GitHub”リポジトリではあまり一般的ではない内部ユーティリティライブラリやドメイン固有のライブラリを使用する場合にも役立つ。

 2つ目は、AI支援のリファクタリング(ソースコードの整理)だ。統合開発環境(IDE)で行われている繰り返しの修正パターンを「IntelliCode」が学習し、同様の修正を行おうとする際に変更案を提示する。このリファクタリング機能には“プログラム合成”、とくに“programming-by-examples(PBE)”と呼ばれる手法が用いられている。例をたくさん与えて、それを導き出すプログラムを自動生成するこの手法は、「Excel」の“フラッシュフィル”や「PowerBI」でWebページのテーブル抽出を行う処理でもすでに応用されているが、「IntelliCode」ではよりノイズの多いデータからもパターンを学習できるようにしているという。

AI支援のリファクタリング

 こうした技術を利用する上で懸念されるのがプライバシーとコードのセキュリティだが、この点での配慮にも抜かりはない。開発チームでモデルを訓練する場合であっても、それを明示的に共有しない限り他のユーザーと共有されることはない。また、“プログラム合成”モデルは完全にローカルで動作するため、外部にコードが流出することはないとしている。