【初心者向け】はじめての ASP.NET Core 作りながら学習(3)- IntelliCode

オウルです。
前回のプロジェクト作成編の続きです。

ある日、スマホを何気に見ていると Google が「人工知能はアプリ開発をどう変えるか」という記事を推していたので、どれどれと読んでいくと、IntelliCode という見聞きしたことのないキーワードがありました。どうやら、オープンソースの GitHub リポジトリから学習した IntelliCodeモデル を使用して入力に基づいて、次のコード候補を予測してくれる、すばらしい機能みたいです。

ログ編を予定していましたが、これは!?と思い急遽変更です。IntelliCode を「はじめての ASP.NET Core 作りながら学習」で使わない手はないと思った次第です。

IntelliCode を使ってみる

まずは、IntelliCode がどんなモノかイメージしてもらうために、サンプルから紹介したいと思います。

SignInManager のサンプル

ASP.NET Core Identity を使ってログイン機能を実装するときに SignInManager を使うのですが、SignInManager. とした時に次のコードを予測して入力候補に★を付けて表示してくれます。では次に先頭を if から始めるとどうなるのでしょうか?!

おぉ、すばらしい。

先頭を if から始めると、何かを判定するという予測からサインイン中かどうかを確認するメソッドである ★IsSignedIn が入力候補一覧の最上位に表示されています。

HttpClient のサンプル

続いてのサンプルは HttpClient です。HttpClient は例えば Web API などのリソースに HTTP 要求を送信し、そのリソースから HTTP 応答を受信するための基本クラスです。

Client. とすると次は、GetAsyncPostAsync だよねと言わんばかりに予測した候補を★で表示しれくれています。先ほどの SignInManager と同様に if から始めてみると?!

IsSuccessStatusCode が入力候補の最上位で表示されていますね。IsSuccessStatusCode は、status code が200-299 の場合は true 、それ以外は false となる、よく使うメソッドです。下のWeb API のサンプルを例にすると、BadRequest(status code 400)の場合は IsSuccessStatusCode : false、OK(status code 200)の場合は、IsSuccessStatusCode : true となります。

IntelliCode を有効化

それでは、Visual Studio で IntelliCode を有効にしてみます。

IntelliCode インストール

Visual Studio のメニュー / 拡張機能 / 拡張機能の管理をクリックします。右上の検索欄に「IntelliCode」を入力すると下の検索結果が表示されます。

マイコードでトレーニング

Visual Studio のメニュー / 表示 / その他のウインドウ / の管理をクリックします。表示された画面の [マイコードでトレーニング] ボタンをクリックすると学習が開始されます。

データとプライバシー

To train a model based on your code, the IntelliCode extension extracts only those elements of the code that are needed to create a model for recommending completion values. For example, it extracts the names of classes and methods and how often they’re called in different circumstances. IntelliCode doesn’t track your keystrokes or extract whole expressions, statements, or literal values (such as strings) from your code.

The extracted data is transmitted, over HTTPS, to the IntelliCode service. The service then uses machine learning algorithms to train a model for your code. It returns the model to your computer where it’s merged with the base model.

翻訳

自分のコードに基づいてモデルをトレーニングするため、IntelliCode 拡張機能では、入力候補の値を推奨するためのモデルの作成に必要なコードの要素のみが抽出されます。 たとえば、クラスやメソッドの名前、およびさまざまな状況でそれらが呼び出される頻度が抽出されます。 IntelliCode では、キーストロークの追跡や、式、ステートメント、またはリテラル値 (文字列など) 全体のコードからの抽出は行われません。
抽出されたデータは、HTTPS 経由で IntelliCode サービスに送信されます。 その後、サービスでは、機械学習アルゴリズムを使って自分のコードに対するモデルのトレーニングが行われます。 コンピューターにモデルが返されて、そこで基本モデルと結合されます。

IntelliCode のメリット

  1. 使用する可能性が高いものを入力候補一覧の最上位に配置することによって効率化
  2. 初心者には候補一覧が表示されるため、調べるべきメソッドやプロパティを限定できる
  3. 人によるコードの違いを抑える効果が望める(コードの共通化)

また、IntelliCode の推奨は、星の獲得数が 100 を上回る、GitHub 上の何千ものオープンソース プロジェクトに基づいているため、公式では次のメリットがあると強調されています。

  1. コードに基づいた、型の推奨 (C#)
  2. コード スタイルと書式の規則の推測

いかがでしたか?僕は驚きです。流行りの機械学習や深層学習を上手く使うとこんなことも出来てしまうのですね。個人的には、今回紹介した IntelliCode のような拡張機能や便利ツール・サービスを使いこなす能力が今後、技術者にはもっと求められるような気がしています。いやはや、日々勉強ですね。

「はじめての ASP.NET Core」シリーズ
  1. 作りながら学習
  2. プロジェクト作成
  3. AI 支援 IntelliCode
  4. NLog
  5. MVC(1)
  6. MVC(2)レイアウト
「【初心者向け】ASP.NET Core Identity」シリーズ
  1. ASP.NET Core Identity の2要素認証と Identity を使わない Cookie 認証 – 概要編
  2. ASP.NET Core Identity 構成編
流行りの機械学習に、↓ 親指だけ少し突っ込んでみました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA