「IntelliCode」がさらに進化し、行全体を候補として提案。まるでAIとペアプロしているように

2019年11月7日

マイクロソフトは、AIによるコーディング支援機能の「IntelliCode」がさらに進化し、コーディング中の行全体を提案できる能力を備えるようになったことを明らかにしました

下記は「Re-imagining developer productivity with AI-assisted tools」から引用です。

IntelliCode now provides whole-line code completion suggestions mined from the collective intelligence of your trusted developer knowledge bases. This is like having an AI-developer pair-programming with you, providing meaningful, suggestions and whole-line code completions without disrupting your flow.

IntelliCodeは、信頼ある開発者のナレッジベースから抽出された情報を基に、行全体のコード補完を提案するようになりました。これはまるで、AIデベロッパーとペアプログラミングを行っているようなものであり、有益な提案や行全体のコード補完を、作業の流れを邪魔することなく行います。

これまでのIntelliSenseやIntelliCodeは、プログラマがいままさに入力しようとしている変数名やクラス名、メソッドといったものの候補を示すことで、入力の手間を減らすとともにスペルミスなどを減らしてくれるものでした(機能はそれだけではありませんが)。

今回進化されたIntelliCodeでは、ifと入力すると、次に入力すべき条件の全部を候補として示したり、下記のように左辺を入力した途端に右辺全体を候補として提案してくれる能力を備えるようになりました。

fig 525行目の「staff_ids」を入力すると、すぐさまイコール(=)と右辺全体が候補として提案された(候補のためグレーで表示されている)。「Re-imagining developer productivity with AI-assisted tools」から引用。動作の様子を示す動画を記事の最後に掲載

こうしたより高度な動作を実現するため、 自然言語を理解し文章を生成する能力を持つGPT-2 transformer言語モデルを採用し、GitHubのトップ3000以上のリポジトリを読み込ませて学習させたと説明されています。

これがどう作用するのか、再び引用します。

Our base model extracts statistical coding patterns and learns the intricacies of programming languages from GitHub repos to assist developers in their coding. Based on code context, as you type, IntelliCode uses that semantic information and sourced patterns to predict the most likely completion in-line with your code.

基本モデルは統計的なコーディングのパターンを抽出し、GitHubリポジトリからプログラミング言語の複雑さを学習して、開発者のコ​​ーディングを支援します。IntelliCodeは入力されたコードのコンテキストに基づき、そのセマンティック情報とソースパターンを用いて、コードのインラインで最も可能性の高い補完コードを予測します。

さらにIntelliCodeは機械学習機能が拡張され、プログラマのチーム自身でIntelliCodeを追加学習させることも可能。これによりあまりGitHubのオープンソースソフトウェアのリポジトリでは利用されていないようなチーム特有のフレームワークなどでの精度をあげることができるとのこと。

またこの学習の際にもコードの情報が外部に流出することはないと説明されています。

IntelliCodeは今後どう進化するのか、その方向性は次のように説明されています。

We’re particularly interested in making learning and retrieving typical code snippets whilst learning a new API or re-learning an old one, a lot easier.

私たちが特に興味を持っているのは、典型的なコードスニペットの学習と習得、と同時に、新しいAPIの学習もしくは古いAPIの再学習、これらをさらに容易にすることです。

下記が、「Re-imagining developer productivity with AI-assisted tools」でも紹介された、最新のIntelliCodeの動作の様子です。

fig

関連記事

あわせて読みたい

プログラミング言語 Microsoft Visual Studio




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

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

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

最新記事10本