GitHub Copilotのコード補完機能を調べる

完了

GitHub Copilotでは、2 種類のインライン候補が提供されます。 ゴースト テキストの候補は、 入力時に現在のカーソル位置に淡色表示のテキストとして表示されます。 次の編集候補 (NES) は、最近行った変更に基づいて、次のコード編集の場所とコンテンツの両方を予測します。

次のアクションを実行すると、ゴースト テキストの候補が表示されます。

  • エディターで部分的または完全なコード行を入力します。
  • エディターで部分的または完全なコード コメントを入力します。
  • エディターに空白のコード行を入力します。

次の編集候補は、コードの編集時に自動的に表示されます。 最近の編集内容に基づいて次に行う可能性のある変更が予測され、推奨される編集場所を示す特別なインジケーターが表示されます。

次の一般的な編集候補のシナリオ

次の編集候補は、次の 3 つのコーディング シナリオで特に役立ちます。

  • ミスのキャッチ: NES は、入力ミス (conts x = 5const x = 5)、逆三項式、正しくない比較演算子などの問題を検出し、正しい修正を提案します。
  • 連鎖的な意図の変更: 型または変数の名前を変更すると、NES は依存するすべてのコードでその変更を反映することを提案します。 たとえば、クラスの名前を Point から Point3D に変更すると、コードで必要な場所に z 座標を追加する提案がトリガーされます。
  • リファクタリング: 変数の名前を 1 回変更すると、NES は他のすべての出現箇所を更新することを提案します。 コードを貼り付けた後、NES は、それを周囲のコードのスタイルに合わせて調整することを提案します。

ゴースト テキストの提案を生成する

GitHub Copilotは、作成しているコードに基づいてコード補完を提案することで、アプリ開発を高速化します。

たとえば、2 つの整数の合計を返す addInt という名前の C# メソッドを作成するとします。 メソッドシグネチャの入力を開始すると、GitHub Copilotが作成すると思われるコードを提案します。

Visual Studio Code エディターのスクリーンショットで、addInt メソッドの本体に対するゴースト テキストの提案を表示している場面です。

ゴースト テキストの提案は、色付きの構文の強調表示なしで表示されます。 これにより、提案を既存のコードと区別できます。 Tab キーを押すと、推奨されるコードをそのまま使用できます。

Esc キーを押すと、提案を閉じます。

addIntの例は少し単純なので、GitHub Copilotがより複雑なことをどうするのか疑問に思うかもしれません。

数値のリストを受け取り、リストに含まれる素数の合計を返すメソッドを作成するとします。 メソッドに addPrimeNumbersInNumericList名前を付けることができました。 メソッドシグネチャの入力を開始すると、GitHub Copilotが提案を生成します。 例えば次が挙げられます。

Visual Studio Code エディターのスクリーンショットには、addPrimeNumbersInNumericList メソッドの本体に対するゴースト テキスト テンプレートが示されています。

提案を受け入れる前に確認することが重要です。 このゴースト テキストの提案は適切に見えるので、Tab キーを押して提案を受け入れることができました。

もう少し先にシナリオを続けてみましょう。

提案がコードにマージされると、 isPrime メソッドに赤の下線が引かれます。 これは、 isPrime メソッドがまだコードに存在しないためです。

GitHub Copilotは、複雑な問題をより小さく管理しやすい部分に分割するなどのベスト プラクティスに従ってトレーニングされています。 この場合、GitHub Copilotは、数値が素数であるかどうかを確認するために、別の isPrime メソッドを作成することをお勧めします。

GitHub Copilot準備ができたら、isPrime メソッドのコード スニペットを提案します。 addPrimeNumbersInNumericList メソッドの下に空白行を入力すると、GitHub Copilot は使用可能な isPrime メソッドを提案します。

Visual Studio Code エディターのスクリーンショットで、addPrimeNumbersInNumericList メソッドの後に表示される isPrime ヘルパーメソッドに対するゴーストテキストの提案が示されています。

ゴースト テキストの提案は、コード スニペットを提供することで開発プロセスを高速化します。 しかし、提案が必要なものでない場合はどうでしょうか? GitHub Copilotは、ゴースト テキストの提案を管理するためのインターフェイスを提供します。

ゴースト テキストの提案を管理する

GitHub Copilotがゴースト テキストの補完を提案すると、提案を管理するためのインターフェイスも提供されます。 提案を受け入れるか、他の提案を確認するか、提案を無視することができます。

提案されたオートコンプリートの上にマウス ポインターを置くと、候補を管理するためのいくつかのオプションが表示されます。

Visual Studio Code エディターのスクリーンショットで、ゴーストテキストの候補管理ツールバーに「受け入れ」、「単語を受け入れる」、「ナビゲーション」、および追加オプションが表示されています。

提案を管理するための既定のインターフェイスには、次のオプションが含まれています。

  • [同意する] を選択して、提案を (完全に) 承諾します。 Tab キーを押して提案を受け入れることもできます。
  • Accept Word を選択して、提案を部分的に受け入れます。 Ctrl + (右矢印) キーを押して、提案を部分的に受け入れることもできます。
  • >または<を選択して、代替候補を表示します。 Alt + ]キーまたはAlt + [キーを押して、代替候補を表示することもできます。

Accept Word オプションを選択すると、提案の次のwordが受け入れられます。 これは、提案の一部を受け入れてから、独自のコードを入力し続ける場合に便利です。 たとえば、 isPrime メソッドの候補の最初の単語を受け入れることもできます。

提案を希望するだけAccept Word を選択し続けます。

[Accept Word] ボタンの右側にある省略記号 (...) アイコンを選択すると、Accept LineAlways Show Toolbar

[ ツール バーを常に表示 ] オプションを選択すると、ショートカット キーを使用してゴースト テキストの候補を管理するときに、ツール バーが表示されたままになります。 Open Completions Panel オプションを選択すると、GitHub Copilot完了パネルが開きます。

提案の行全体を受け入れるには、 editor.action.inlineSuggest.acceptNextLine コマンドのカスタム キーボード ショートカットを構成する必要があります。 このオプションは、ツール バーでは既定では使用できません。

コメントからコード候補を生成する

GitHub Copilotは、コードに基づいてオートコンプリートを提案するだけでなく、コードコメントを使用してコードスニペットを提案することもできます。 自然言語のフレーズを使用して、作成するコードを記述します。 これにより、GitHub Copilotは特定の要件を満たすオートコンプリート候補を提案できます。 たとえば、計算で使用するアルゴリズムの種類や、クラスに追加するメソッドとプロパティを指定できます。

素数の例に戻りましょう。 この時点で、次のコードがあります。

int addPrimeNumbersInNumericList(List<int> numbers)
{
    int sum = 0;
    foreach (int number in numbers)
    {
        if (IsPrime(number))
        {
            sum += number;
        }
    }
    return sum;
}

private bool IsPrime(int number)
{
    if (number <= 1)
    {
        return false;
    }
    for (int i = 2; i <= Math.Sqrt(number); i++)
    {
        if (number % i == 0) return false;
    }
    return true;
}

addPrimeNumbersInNumericListメソッドとisPrime メソッドは完了しているように見えます。 ただし、 addPrimeNumbersInNumericList メソッドを呼び出すときに引数として使用できる数値のリストが必要です。 必要な数値の一覧を説明するコメントを記述できます。 たとえば、1 から 1000 の範囲の 100 個の乱数のリストです。

コメントの入力を開始すると、GitHub Copilotはコメントを完了するオートコンプリートを提案します。 GitHub Copilotは、周囲のコードを使用してその提案を改善します。 たとえば、コメント // create の入力を開始した場合、GitHub Copilotは周囲のコードを使用して作成する内容を予測します。 この場合、GitHub Copilotは addPrimeNumbersInNumericList メソッドを使用して、a list of numbers を作成することを予測します。

『Visual Studio Code エディターのスクリーンショットには、「// 数字のリストを作成する」というコメントを完成するゴーストテキスト候補が表示されています』。

コメントを書き続けるにつれて、GitHub Copilotがオートコンプリート候補を更新します。 提案を受け入れる準備ができたら、[ 同意 する] を選択するか、Tab キーを押します。

コメントの後に新しいコード行を作成すると、GitHub Copilotはコメントと既存のコードに基づいてコード スニペットの生成を開始します。

上のコメントに基づいて、最初のコード行のゴースト テキスト候補を示すVisual Studio Code エディターのスクリーンショット。

表示される各候補を受け入れます。 GitHub Copilotが完了していない場合は、受け入れるための別の提案が生成されます。

コード スニペットの完了後に新しいコード行を入力すると、GitHub Copilotはコード プロジェクトの要件に基づいて、別のオートコンプリート候補を生成します。

概要

ゴースト テキストの提案と次の編集候補は、コードをより効率的かつ正確に記述するのに役立ちます。 ゴースト テキストの候補は、入力時にカーソル位置に淡色表示のテキストとして表示されます。次の編集候補は、最近の変更に基づいて、次の編集の場所とコンテンツを予測します。 部分的または完全なコード行、部分的または完全なコード コメント、または空白のコード行を入力することで、ゴースト テキスト候補を生成できます。 Tab キーを押して提案を受け入れるか、Esc キーを押して閉じます。 提案にカーソルを合わせると表示されるツール バーを使用して、提案を管理できます。 ツールバーを使用すると、代替候補を確認したり、提案を受け入れたり、提案の一部の単語を受け入れたりできます。また、GitHub Copilot補完パネルを開いて、さらに多くの候補を表示することが可能です。