GitHub Copilotコード補完候補を使用してコードを生成する
GitHub Copilotは、多数のプログラミング言語とさまざまなフレームワークに対してコード補完候補を提供できますが、Python、JavaScript、TypeScript、Ruby、Go、C#、C++ では特に適しています。 コード行の補完は、入力時のコードのコンテキストに基づいて生成されます。 GitHub Copilotによって提供される提案を受け入れる、拒否する、または部分的に受け入れることが可能です。
GitHub Copilotには、コード行補完を生成する 2 つの方法があります。
コメントから: 生成するコードを記述するコメントを記述することで、コード行補完を生成できます。 GitHub Copilotは、記述したコメントに基づいてコード補完候補を提供します。
コードから: コード行の補完を生成することができます。コード行を開始するか、完了したコード行の後に Enter キーを押します。 GitHub Copilotでは、記述したコードに基づいてコード補完候補が提供されます。
GitHub Copilotを使用してコメントからコード行補完を生成する
GitHub Copilotは、コメントとアプリの既存のコンテキストに基づいてコード補完候補を生成します。
コメントを使用して、コード スニペット、メソッド、データ構造、およびその他のコード要素を記述できます。
次のコード スニペットがあるとします。
namespace ReportGenerator;
class QuarterlyIncomeReport
{
static void Main(string[] args)
{
// create a new instance of the class
QuarterlyIncomeReport report = new QuarterlyIncomeReport();
// call the GenerateSalesData method
// call the QuarterlySalesReport method
}
public void QuarterlySalesReport()
{
Console.WriteLine("Quarterly Sales Report");
}
}
たとえば、次のコメントを使用してデータ構造を作成できます。
/* public struct SalesData. Include the following fields: date sold, department name, product ID, quantity sold, unit price */
GitHub Copilotは、コード コメントとエディターで開いているコード ファイルに基づいて、1 つ以上のコード補完候補を生成します。
データ構造のフィールドを宣言するために使用されるデータ型に注目してください。 GitHub Copilotは、既存のコードとコード コメントに基づいてデータ型と変数名を選択します。 GitHub Copilotは、アプリケーションが変数を使用する方法を決定し、それに応じてデータ型を定義しようとします。
GitHub Copilotが複数の提案を生成する場合は、> ボタンの左側にある左矢印または右矢印 (< または ) を選択して、提案を順番に切り抜けることができます。 これにより、ニーズに最も適した提案を確認して選択できます。
目的のコードと完全に一致しないコードの入力候補の提案を受け入れても問題ありません。 ただし、提案を "修正" するために必要な変更を明確にする必要があります。 この場合、データ型の一部が目的の型ではありませんが、オートコンプリートの提案を受け入れた後にそれらを調整することができます。
提案されたオプションが必要なオプションと似ていない場合、次の 2 つの方法を試すことができます。 その他の候補の一覧を含む新しいエディター タブを開くには、 Ctrl キー + Enter キーを押します。 このホットキーの組み合わせにより、最大 10 個の他の提案を含む新しいタブが開きます。 各提案の後に、その提案を受け入れるために使用できるボタンが表示されます。 提案を受け入れると、タブは自動的に閉じます。 もう 1 つのオプションは、 Esc キーを押して提案を閉じ、もう一度やり直す方法です。 コード コメントを調整して、GitHub Copilotを操作するためのコンテキストを増やすことができます。
注
GitHub Copilotは、段階的に提案を提案することがあります。 このような場合、Tab キーを押した後に Enter キーを押すと、次の段階の提案を表示できます。
推奨されるデータ構造を受け入れるには、Tab キーを押すか、[ 承諾] を選択します。
フィールドのデータ型を変更するには、次のようにコードを更新します。
public struct SalesData
{
public DateOnly dateSold;
public string departmentName;
public int productID;
public int quantitySold;
public double unitPrice;
}
コード補完候補をすばやく調整することは、望むコードを確実に作成するのに役立ちます。 コードベースの大部分をまだ開発する必要がある場合、開発プロセスの早い段階で修正を行うことが特に重要です。 以降のコード補完は、既に記述したコードに基づいているため、コードができるだけ正確であることを確認することが重要です。
次の編集候補を使用してコードの変更を追跡する
ゴーストテキスト補完は、新しいコードを記述するときに非常に便利です。 しかし、ほとんどの日常的なコーディングには、 既存 のコードの編集 (変数の名前変更、データ型の更新、ロジック エラーの修正) が含まれます。 GitHub Copilotの次の編集候補 (NES) は、まさにこのシナリオ向けに設計されています。
編集を行うと、NES は変更を分析し、 次 の編集が行われる必要がある場所と編集する必要がある内容の両方を予測します (別の行またはファイルの別の部分にある場合でも)。 これにより、更新を必要とするすべての場所を手動で検索しなくても、フローを維持できます。
次の編集候補を有効にするには、Visual Studio Codeで github.copilot.nextEditSuggestions.enabled 設定を true に設定します。
有効にすると、次の方法で NES を使用できます。
エディターで編集を行います。たとえば、変数の名前を変更したり、メソッドシグネチャを変更したりします。
エディターの左側に表示される余白の矢印を探します。 矢印は、次に推奨される編集の位置を指し示します。
Tab キーを押して、推奨される編集場所に移動します。
もう一度 Tab キーを押して提案を受け入れるか、 Esc キーを押して閉じます。
NES が特に役立つ一般的なシナリオを次に示します。
- 名前の変更伝達: 変数の名前を 1 回変更すると、NES はファイル内の変数への他のすべての参照を更新することを提案します。
- 型の変更: フィールドのデータ型を変更し、NES はフィールドを使用するダウンストリーム コードの更新を提案します。
- ロジックの修正: キーワードの反転条件または入力ミスを修正し、NES は更新を必要とする関連コード セクションにフラグを設定します。
- リファクタリング: コード ブロックをコピーして貼り付けた後、NES は、それを周囲のコード スタイルに合わせて調整する方法を提案します。
注
次の編集候補は、現在の編集内容に基づいて 、最も可能性の高い 次の変更を予測します。 特定のシナリオに対する適切な修正プログラムが異なる場合があるため、受け入れる前に必ず各提案を確認してください。
概要
コード行補完は、コードを迅速かつ効率的に生成するのに役立つGitHub Copilotの強力な機能です。 コメントを使用して生成するコードを記述することで、最小限の労力でデータ構造、メソッド、およびその他のコード要素を作成できます。 さらに、GitHub Copilotは、入力したコードに基づいてコード行補完を生成できるため、複雑なアプリケーションを簡単にビルドできます。