IntelliCodeがプログラマのリファクタリング作業を自動的に学習。学習内容からリファクタリング箇所を提案するように

2019年9月10日

マイクロソフトは、機械学習を用いてプログラミングを支援するVisual Studioの拡張機能「IntelliCode」の新機能として、リファクタリング作業の支援が可能になったことを発表しました

IntellCodeはGitHubなどに公開されているコードを機械学習し、その学習内容を基にコード入力や補完の適切なレコメンデーション、コードレビュー時のアドバイス、問題がありそうな部分の指摘などをしてくれるツールです。

今回の新機能では、プログラマが行うリファクタリング作業をIntelliCodeが自動的に学習し、コードのほかの部分でも同様のリファクタリングが適用可能な場所があればそれを提案してくれるようになります。

これによりプログラマはリファクタリング可能なコードの探索を効率よく行えるようになります。

プログラマのリファクタリング作業を自動的に学習する

下記の図は、今回のIntelliCodeの新機能で可能になるリファクタリング支援の概要を示しています。

fig

まずプログラマはコード中の華氏を摂氏に変換する計算式をFtoC関数に置き換えるリファクタリング作業「refactoring 1」行いました。次に同様のリファクタリング作業をコードの別の場所で「refactoring 2」として行いました。

このそれぞれのリファクタリング作業はコンテキストやコード中の変数などが異なっていますが、IntelliCodeはリファクタリングの共通性を認識します。

そのうえでコードの別の場所にある同様の数式もリファクタリング対象ではないかと、「Suggested refactoring example」のリファクタリングを提案するわけです。

具体的には下記のようにVisual Studioのコードエディタ上にリファクタリング候補の行がIntelliCodeによって表示され、リファクタリング内容が提示されることになります。

fig

このようなリファクタリング作業の共通部分を認識し学習する機能はマイクロソフトのPROSE(Program Synthesis using Examples)と呼ばれる技術で構築されており、これはExcelでセルの入力内容から自動的にパターンを認識し、そのパターンに従って別のセルの内容を補完する「フラッシュフィル」機能でも使われていると説明されています。

このIntelliCodeのリファクタリング支援機能はVisual Studio 2019 version 16.3 Preview 3から利用可能になっていますが、デフォルトではオフになっているため、利用するにはオプションで「Enabled」にする必要があります。まずはC#言語での対応からとなっています。

fig
このエントリーをはてなブックマークに追加
follow us in feedly




カテゴリ

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本