GitHub Copilot Chat に依頼して、コードの提案、コードの説明、単体テストの生成、コード修正の提案を行うことができます。 Visual Studio でのチャットでは、適切なコンテキストを提供すれば、応答を提供し、コーディングのプラクティスとプロジェクトの要件に一致するコードを生成できます。 この情報をすべてのチャット プロンプトに繰り返し追加する代わりに、このコンテキストをファイルに格納し、すべてのチャット要求に自動的に含めることができます。
この記事では、Copilot Chat に詳細情報を提供することで、より良い回答を得る方法について説明します。
-
スラッシュ コマンドを使用して、コードの説明を取得する
/explainなどの一般的なタスクをすばやく指定する - ガイド付きチャット エクスペリエンスを使用してコンテキストを調整する
- カスタム命令とプロンプト ファイルを使用して応答をカスタマイズする
Visual Studio での AI 補助開発についてさらに知り、Visual Studio で Copilot Chat を使用する方法を学びましょう。
前提 条件
Visual Studio で GitHub Copilot Chat の使用を開始するには、次のものが必要です。
- Visual Studio 2022 バージョン 17.10 以降
-
Copilot にアクセスできる GitHub アカウントを使って Visual Studio にサインインします
** GitHub Copilot に無料でサインアップできます。
GitHub Copilot Chat のサポートは GitHub によって提供され、 https://support.github.comで入手できます。
プロンプト ガイダンス
Visual Studio 17.12 以降のガイド付きチャット エクスペリエンスは、より良い回答を得るためにコンテキストを明確にするためにプロンプトを調整するのに役立ちます。 GitHub Copilot Chat では、コンテキストが不明な場合に明確な質問が表示されるようになりました。
カスタム指示を使用する
カスタム命令機能を使用すると、チャットの質問に、事前に指定されたコンテキストの詳細を自動的に追加できます。 Copilot Chat では、応答の生成時に、チームの作業方法、使用するツール、プロジェクトの詳細など、特定のコンテキストに合わせて調整された手順が使用されます。
.github/copilot-instructions.md ファイルを使用する
.github/copilot-instructions.md ファイルを使用するには:
-
リポジトリ ルートに
.github/copilot-instructions.mdカスタム命令ファイルを作成または追加します。
- [ツール>オプション] ウィンドウから Visual Studio で機能を有効にします。 [>>>] セクションを展開し、[.github/copilot-instructions.md ファイルからカスタム命令を読み込んで要求に追加する] チェック ボックスをオンにします。
- [ツール>オプション] ダイアログから Visual Studio で機能を有効にします。 GitHub>Copilot セクションを展開し、[カスタム命令を有効にして .github/copilot-instructions.md ファイルから読み込み、Copilot チャット グループの要求に追加する] チェック ボックスをオンにします。
カスタム手順は、チャット ビューまたはインライン チャットには表示されません。 ただし、Copilot によって使用される場合、.github/copilot-instructions.md ファイルは応答の参照リストに一覧表示されます。
.instructions.md ファイルを使用する
すべてのチャット要求に適用される 1 つの命令ファイルを使用する代わりに、特定のファイルの種類またはタスクに適用される複数の *.instructions.md ファイルを作成できます。 たとえば、さまざまなプログラミング言語、フレームワーク、またはプロジェクトの種類の命令ファイルを作成できます。
.github/instructions/*.instructions.md ファイルを使用するには:
.github/instructionsディレクトリがまだ存在しない場合は作成します。1 つ以上の
.github/instructions/*.instructions.mdファイルを追加します。命令ファイルの frontmatter セクションに
applyToプロパティを追加します。 glob 構文を使用して、命令が適用されるファイルまたはフォルダーを指定します。Visual Studio でこの機能を有効にします。
[ツール>オプション] ウィンドウで、[>>>] セクションを展開し、[カスタム命令を .github/copilot-instructions.md ファイルから読み込んで要求に追加する] チェック ボックスをオンにします。
[ツール>オプション] ダイアログで、GitHub>Copilot セクションを展開します。 [Copilot チャット] グループで、[カスタム命令を有効にして .github/copilot-instructions.md ファイルから読み込み、要求に追加する] チェック ボックスをオンにします。
命令ファイルの形式
ターゲット命令ファイルは、 .instructions.md 拡張子を使用し、次の構造を持ちます。
-
ヘッダー (省略可能): YAML frontmatter
-
description: チャット ビューでホバーすると表示される説明 -
applyTo: 命令を適用するファイルまたはフォルダーに一致する Glob パターン
-
- 本文: マークダウン形式の命令
Example
C# カスタム命令の例を次に示します。
## C# Instructions
---
applyTo: `**/*.cs`
---
- Write clear and concise comments for each function.
- Use PascalCase for component names, method names, and public members.
- Use camelCase for private fields and local variables.
- Add a newline before the opening curly brace of any code block
(such as after `if`, `for`, `while`, `foreach`, `using`, `try`, etc.).
- Ensure that the final `return` statement of a method is on its own line.
これらの手順を .github/instructions/*.instructions.md ファイルにコピーして使用し、自動的に Copilot の動作に適用します。
カスタム命令のその他の例については、 GitHub の命令サンプルの一覧を参照してください。
命令ファイルのしくみ
Copilot の使用を開始すると、現在のコンテキストに関連する命令ファイルが自動的に検出され、参照として添付されます。 これにより、コードベースで作業している場所に関係なく、Copilot の提案は常にプロジェクトのルールに合わせて調整されます。
Copilot によって使用される命令ファイルは、応答の参照リストに一覧表示されます。
プロンプト ファイルを使用する
リポジトリに再利用可能なプロンプト ファイルを作成して、頻繁に使用されるプロンプトを実行または共有できるようになりました。
プロンプト ファイルを作成するには:
-
#参照を使用して、メソッド、クラス、ファイルなどのソリューションからの特定の情報を含めるために、プロンプト ボックスで通常と同じようにプロンプトを記述します。 他のプロンプト ファイルを参照して、共有の手順を確認することもできます。 - プロンプトをマークダウン ファイルにコピーし、リポジトリのルートにある
.prompt.mdフォルダーに.github/prompts拡張子を付けて保存します。
プロンプト ファイルを使用するには:
- チャット入力欄に
#prompt:を入力して、.github/promptsフォルダーからプロンプトファイルを参照するか、チャット入力欄の➕アイコンをクリックしてコンテキストとして追加します。 - 追加の詳細を追加するか、プロンプトをそのまま入力します。
スラッシュ コマンドを使用して一般的なタスクのコンテキストを設定する
Copilot Chat のスラッシュ コマンドは、一般的な開発タスクの意図をすばやく設定するのに役立ちます。 特定のスラッシュ コマンドを使用して質問を作成することで、長い質問を書き出すことなくより良い回答を得ることができます。
チャット ウィンドウのでスラッシュ コマンドを使用したり、変更しようとしているコード内で直接インラインで使用したり、インライン コード アシスタンス 使用したりできます。 エディターで開いているコード ファイルを変更または追加するのに役立つコマンドは、インライン コード アシスタントとチャット ウィンドウの両方で機能しますが、一般的なコーディングの質問のコマンドはチャット ウィンドウでのみ機能します。
| コマンド | 使用方法 | チャットウィンドウ | インライン チャット |
|---|---|---|---|
| /doc | 指定したコードまたは選択したコードのコメントを追加します。 例: - /doc DeleteBasketAsync method in BasketService.cs
- 目的のコードを選択し、「 /doc」と入力します |
はい | はい |
| /説明する | コードの説明を取得します。 例: - /explain the AddItemToBasket method in BasketService.cs
- 目的のコードを選択し、「 /explain」と入力します |
はい | はい |
| /修理する | 選択したコードの問題の修正プログラムを提案します。 例: - /fix the SetQuantities method in BasketService.cs
- 目的のコードを選択し、「 /fix」と入力します |
はい | はい |
| /生成する | 指定された質問に回答するコードを生成します。 例: /generate code to add two numbers in Calculator.cs |
はい | はい |
| /ヘルプ | Copilot Chat の使用に関するヘルプを表示します。 例: /help |
はい | はい |
| /最適化 | 選択したコードの実行時間を分析して改善します。 例: - /optimize the AddItemToBasket method in BasketService.cs
- 目的のコードを選択し、「 /optimize」と入力します |
はい | はい |
| /テスト | 選択したコードの単体テストを作成します。 例: 目的のコードを選択し、「 /tests using XUnit Framework」と入力します.NET の場合は、GitHub Copilot Testing for .NET をお勧めします |
はい | はい |
Visual Studio 2022 バージョン 17.13 では、ユーザーがスラッシュ コマンドを入力すると、コマンドは自然言語でプロンプトを展開し、コマンドのコンテキストを表示します。
Copilot アクションを使用する
コンテキスト メニューから Copilot アクションを使用すると、一般的な開発タスクの構成済みのプロンプトとスラッシュ コマンドにすばやくアクセスできます。
各アクションの動作は、コンテキスト メニューを開いたときにコードが選択されているかどうかによって異なります。
| アクション | コードを選択した状態 | コードが選択されていない |
|---|---|---|
| 説明する | 選択したコードについて説明します | カーソル位置の近くのコードについて説明します |
| 選択の最適化 | 選択したコードをパフォーマンス、保守容易性、信頼性、アーキテクチャ用に最適化します | 適用なし |
| コメントの生成 | 選択したコードのコメントを生成します | カーソル位置付近のコードのコメントを生成する |
| テストの生成 | 選択したコードのテストを生成します | カーソル位置付近のコードのテストを生成する |
| チャットに追加 | 選択したコードを参照として Chat に追加します | ファイル全体を参照として Chat に追加する |
[選択の最適化] 以外のアクションを選択すると、チャット ウィンドウが自動的に開き、適切なスコープ付きコンテキストでスラッシュ コマンドが Copilot に送信されます。 その後、チャット ウィンドウで Copilot の応答を確認して操作できます。
最適化選択オプションを使用してコードを改善する
コードの特定のセクションを選択し、[ 選択の最適化] を選択して、ファイル全体ではなく、そのセクションだけを Copilot で分析して改善させます。
Copilot は、選択したコードとその周囲のコンテキストを調べて、意味のあるコンテキストに対応した提案を提供します。 最適化により、既存のコード スタイル、構造、および機能が保持され、コードベースが整理され、一貫性が保たれます。 チャット パネルを使用する他のアクションとは異なり、 選択の最適化 では、直接確認、承認、または拒否できるインライン差分として提案が表示されます。
Copilot では、次の領域で最適化の提案が提供されます。
- パフォーマンス: アルゴリズムの高速化、メモリ使用量の削減、非同期パターン
- 保守性: 簡略化されたロジック、より明確な構造、より優れた名前付け
- 確実: エラー処理、リソースのクリーンアップ、スレッド セーフ
- 建築: 依存関係の注入、より優れたインターフェイス、モジュール設計