GitHub Copilot インライン チャット、スマート アクション、クイック チャットを調べる

完了

チャット ビューに加えて、GitHub Copilot Chat には、AI ペア プログラマと対話するための他のいくつかの方法が用意されています。 これには、インライン チャット、スマート アクション、クイック チャットが含まれます。

インライン チャット

GitHub Copilot Chat の主な機能の 1 つは、コーディング中の質問にインラインで回答することです。 これにより、開発ワークフローの中断を最小限に抑えながら、コード エディター内で AI の機能を直接活用できます。

インライン チャット機能は、エディターでファイルが開かれている場合にのみアクセスできます。 インライン チャット セッションを開くにはいくつかの方法があります。

  • [Copilot Chat] メニューから [エディター インライン チャット] を選択します。
  • キーボード ショートカットCtrl + I を使用します。
  • コード エディター内を右クリックし、コンテキスト メニューから [Copilot ] を選択し、[ エディター インライン チャット] を選択します。

Visual Studio Code の [Copilot] メニューからインライン チャットにアクセスする方法を示すスクリーンショット。

インライン チャット セッションを使用して、コードの記述や反復処理を行う際に Copilot に質問できます。

インライン チャット セッションを開くと、エディターに次のインターフェイスが表示されます。

Visual Studio Code でホット キーを使用してインライン チャットにアクセスする方法を示すスクリーンショット。

次のシナリオを考えてみましょう。

  • 数値リストを処理する C# アプリケーションを開発しています。 データは 100 のバッチで処理されます。
  • 次のコード スニペットを使用して、テストに使用できる 1 から 1000 までの 100 個のランダムな整数の一覧を作成します。
// create a list of 100 random number between 1 and 1000
List<int> numbers = new List<int>();
Random random = new Random();
for (int i = 0; i < 100; i++)
{
    numbers.Add(random.Next(1, 1000));
}

コードは正常に動作しています。 ただし、要件が変更された場合はどうなるでしょうか。 重複する数値がリストに含まれていないことを確認する必要がある場合はどうすればよいでしょうか。

GitHub Copilot のオート コンプリートを使用してコードを更新するために、次の手順を行う必要があるかもしれません。

  1. 既存のコードを削除します。
  2. 更新された要件を反映する新しいコメントを作成します。
  3. GitHub Copilot を使用し、更新されたコメントから新しいコード スニペットを生成します。
  4. 候補を確認し、最適な選択肢を選択します。

幸いなことに、これは必要ありません。 より良い解決策は、GitHub Copilot Chat を使用して、必要なコードの更新を提案させることです。

インライン チャット セッションを使用して、次のようにコードの更新を提案できます。

  1. 更新するコード スニペットを強調表示します。
  2. Ctrl + I を押してインライン チャットを開きます。
  3. 更新を完了する方法を GitHub Copilot Chat に質問します。
  4. 候補を確認し、最適な選択肢を選択します。

この場合、次のように質問できます: Update this code to ensure that numbers doesn't include any duplicates

提案されたコード更新が気に入った場合は、[承諾する] を選択してコーディングを続けます。

Visual Studio Code でのインライン チャットによる更新候補を示すスクリーンショット。

提案された更新が気に入らない場合は、[再実行...] アイコンを選択して、Copilot Chat に別の 提案を生成するよう依頼できます。 [再実行] アイコンは、プロンプト テキスト ボックスの下に表示される円形の矢印として表示されます。

プロンプトを再実行しても必要な結果が得られない場合は、追加のコンテキストでプロンプトを更新してみてください。 Copilot Chat は、プロンプトが明確で簡潔、かつ正確な場合に、より優れた提案を生成します。 [破棄] を選択すると、変更を加えずにインライン チャットを閉じることができます。

スマート アクション

いくつかのタスクは非常によく使用されるため自動化できます。 GitHub Copilot Chat に含まれるスマート アクションを使用すると、プロンプトを記述しなくても特定のタスクを完了できます。 スマート アクションは定義済みのアクションであり、Visual Studio Code エディターから直接実行して、一般的なコーディング タスクをすばやく簡単に実行できます。

次のスマート アクションが使用可能です。

  • 説明:Explain アクションでは、選択したコードの自然言語の説明が生成されます。 これは、コード スニペットの目的と機能を理解するのに役立ちます。 Explain アクションは、慣れていないコードを扱っている場合や、コードを他のユーザーに説明する必要がある場合に特に便利です。
  • 修正:Fix アクションでは、選択したコードの修正が提案されます。 これが役立つのは、コードでエラーや問題が発生し、その解決方法に関するガイダンスが必要な場合です。 Copilot Chat は、問題を解決できる可能性がある、変数、制御構造または関数呼び出しの変更を提案できます。
  • レビューとコメント:Review and Comment アクションは、選択したコードのコード レビューを提供します。 これは、潜在的な問題を特定し、コードの品質を向上させ、ベスト プラクティスに従うのに役立ちます。 Review and Comment アクションは、コード内のバグ、パフォーマンスのボトルネック、およびセキュリティの脆弱性を特定するのに役立ちます。
  • ドキュメントを生成する:Generate Docs アクションでは、選択したコードのドキュメントが作成されます。 これは、コードベースを文書化する場合に役立ちます。特に、複数の共同作成者がいるプロジェクトに取り組んでいる場合や、コードを他のユーザーと共有する必要がある場合に便利です。
  • テストを生成する:Generate Tests アクションでは、選択したコードの単体テストが作成されます。 特に、取り組んでいるプロジェクトに複雑なロジックや重要な機能が含まれる場合に、コードの正確性と信頼性を確保するのに役立ちます。

スマート アクションにアクセスするには、エディターでコード スニペットを右クリックし、Copilot コンテキスト メニューから目的のアクションを選択します。

Visual Studio Code でスマート アクションにアクセスする方法を示すスクリーンショット。

もう一度、素数アプリについて考えてみましょう。

前のセクションでは、numbers に重複が含まれていないことを確認するための次のコードがインライン チャットで提案されました。

// create a list of 100 random numbers between 1 and 1000
List<int> numbers = new List<int>();
Random random = new Random();
while (numbers.Count < 100)
{
    int randomNumber = random.Next(1, 1000);
    if (!numbers.Contains(randomNumber))
    {
        numbers.Add(randomNumber);
    }
}

このコードを使用すると一意の要素のコレクションになりますが、改良の余地がある可能性があります。

[Review This] (これをレビューする) スマート アクションを使用して、コードの選択肢を確認できます。 [Review This] (これをレビューする) スマート アクションを使用するには、次のようにします。

  1. レビューが必要なコード スニペットを選びます。 この場合、乱数のリストを生成するコードです。

  2. Copilot コンテキスト メニューから [Review This] (これをレビューする) を選びます。

  3. 提案された更新内容を確認し、変更を適用するには [承諾する] を選びます。

乱数を生成するコード スニペットに対して、[Review This] (これをレビューする) スマート アクションは、次のことを提案します。

  • データの設定中の複数のサイズ変更を回避するために、List<int> numbers の容量で 100 を初期化すること。
  • 重複をチェックするときに、HashSet<int> ではなく List<int> を使用して検索を高速化すること。

この場合、[Review This] (これをレビューする) スマート アクションは、パフォーマンスを向上させるために HashSet<int> ではなく List<int> を使用するように案内します。

// create a list of 100 random numbers between 1 and 1000
HashSet<int> numbers = new HashSet<int>();
Random random = new Random();
while (numbers.Count < 100)
{
    int randomNumber = random.Next(1, 1000);
    if (!numbers.Contains(randomNumber))
    {
        numbers.Add(randomNumber);
    }
}

int sum = addPrimeNumbersInNumericList(numbers);
Console.WriteLine(sum);

HashSet を使用すると、効率的に一意の要素のコレクションになりますが、更新によって新しい問題が発生します。 addPrimeNumbersInNumericList メソッドは、入力として List<int> を予期していますが、更新されたコードは HashSet<int> を作成します。 これにより、次のコンパイル エラーが発生します。

Visual Studio Code のコンパイル エラーを示すスクリーンショット。

幸いなことに、[修正] スマート アクションを使用してエラーを修正できます。 [修正] スマート アクションを使用するには:

  1. 修正する必要があるコード スニペットを右クリックします。 このケースでは、赤色の下線があるコードです。

  2. Copilot のコンテキスト メニューから [修正] を選択します。

  3. 提案された修正を確認し、[承諾する] を選択して変更を適用します。

Fix スマート アクションが、エラーを修正するための提案を 1 つ以上生成します。 この場合、提案の 1 つは、ToList() の呼び出し内で HashSet メソッドを使用して ListaddPrimeNumbersInNumericListに変換することです。 結果のコードは次のコード スニペットのようになります。

// create a list of 100 random numbers between 1 and 1000
HashSet<int> numbers = new HashSet<int>();
Random random = new Random();
while (numbers.Count < 100)
{
    int randomNumber = random.Next(1, 1000);
    if (!numbers.Contains(randomNumber))
    {
        numbers.Add(randomNumber);
    }
}

int sum = addPrimeNumbersInNumericList(numbers.ToList());
Console.WriteLine(sum);

常に、Copilot Chat によって提供される提案を確認してください。 より良い解決策があるかもしれません。 [承諾する] を選択すると、提案された修正でコードを更新できます。

クイック チャット

GitHub Copilot Chat がチャット対話式操作のために用意している 3 番目のオプションは、クイック チャットです。

AI とすばやく対話形式で会話したい場合は、GitHub Copilot Chat のクイック チャット機能を使用できます。 これが役立つのは、問題を解決しようとしている場合、コードの一部を理解するためにヘルプが必要な場合、またはアイデアをブレーンストーミングする場合です。 これは、同僚の開発者とおしゃべりする感覚を得られるように設計されており、共同作業の問題解決に最適なツールです。

クイック チャット ウィンドウを開くには、Visual Studio Code エディターで Ctrl + Shift + Alt + L キーを押すか、[Copilot Chat] メニューからクイック チャットを開くことができます。

Visual Studio Code でクイック チャットにアクセスする方法を示すスクリーンショット。

概要

GitHub Copilot Chat には、インライン チャット、スマート アクション、クイック チャットなど、AI ペア プログラマとやり取りするいくつかの方法が用意されています。 これらの機能を使用すると、質問をしたり、コードの提案を取得したり、一般的なコーディング タスクをすばやく簡単に実行したりできます。