<本記事のターゲット層>
- VS Code ユーザー
- AI機能を開発ワークフローに統合したい開発者
- VS Codeの機能を拡張したい開発者やエンジニア
- 生産性向上や開発プロセスの標準化を目指すチームや個人
※VS Codeの高度な機能、特にAIとの連携や外部ツールとの統合を活用して、開発作業の効率性、品質、および一貫性を向上させたいと考えている技術者を主な対象としています。
1. はじめに:GitHub Copilotとそのカスタマイズの重要性
現代のソフトウェア開発において、GitHub CopilotのようなAIアシスタントは、コード生成、レビュー、デバッグなど、さまざまなタスクで開発者を強力にサポートします。しかし、AIの応答が常にあなたのチームの特定のコーディング規約、技術スタック、またはプロジェクト要件に完璧に合致するとは限りません。ここで、Visual Studio Code (VS Code) におけるGitHub Copilotのカスタマイズ機能が非常に重要になります。
VS Codeのチャット機能は、適切なコンテキストを与えることで、あなたのコーディングプラクティスやプロジェクト要件に合致する応答を生成し、コードを作成することができます。毎回チャットプロンプトにこの情報を追加する代わりに、コンテキストをファイルに保存し、すべてのチャットリクエストに自動的に含めることが可能です。
本記事では、VS Code内でGitHub CopilotのAI応答を、あなたのコーディングプラクティスやプロジェクト要件に合わせて調整し、より効果的に活用するための主要な方法について詳しく解説します。
2. なぜGitHub CopilotのAI応答をカスタマイズする必要があるのか?
AIが生成するコードや提案が、プロジェクトの既存のスタイルや品質基準から逸脱していると、修正に余分な時間と労力がかかります。毎回プロンプトにコンテキスト情報を手動で追加するのは非効率的です。
VS Codeのカスタマイズ機能は、この課題を解決し、以下のメリットを提供します。
- コーディング規約への準拠: 生成されるコードが、命名規則、エラー処理、技術スタックなどのチームの標準に自動的に従うようになります。
- コード品質とセキュリティの向上: コードレビューのルールを設定し、セキュリティ脆弱性やパフォーマンス問題のチェックをAIに実行させることができます。
- 効率的なタスク実行: コミットメッセージやプルリクエストの記述など、反復的なタスクの生成を標準化し、時間を節約できます。
- 一貫性のある開発プロセス: 特定のプロジェクトやタスクに特化したガイドラインを設定することで、開発プロセス全体の一貫性を保ちます。
3. VS CodeでGitHub CopilotのAI応答をカスタマイズする3つの主要な方法
VS Codeでは、主に以下の3つの方法でAI応答をカスタマイズできます。
3.1. カスタム指示 (Custom instructions)
カスタム指示は、コード生成、コードレビュー、コミットメッセージ生成などのタスクに関して、AIが「どのように」動作すべきかという一般的なガイドラインやルールを定義するために使用されます。これらの指示は、手動で毎回コンテキストを含める手間を省き、すべてのチャットリクエストに自動的に情報が組み込まれます。ただし、コード補完には適用されない点に注意が必要です。
活用例:
- コーディングプラクティス、推奨技術、プロジェクト要件の指定。
- セキュリティ脆弱性やパフォーマンス問題のチェックなど、コードレビューのルール設定。
- コミットメッセージやプルリクエストのタイトル・説明の生成指示。
カスタム指示の定義方法:
VS Codeでは、カスタム指示を定義するために複数の方法をサポートしています。
-
.github/copilot-instructions.md
ファイルの使用:- このファイルは、ワークスペースまたはリポジトリのルートにある
.github
ディレクトリ内に配置されます。 - マークダウン形式でコード生成指示を記述し、ワークスペース全体に適用される一般的なコーディングプラクティスや要件を定義するのに適しています。
- VS Codeは、このファイルからの指示をすべてのチャットリクエストに自動的に含め、コード生成に適用します。
-
github.copilot.chat.codeGeneration.useInstructionFiles
設定をtrue
にすることで、このファイルの自動使用を指示できます。 - Visual StudioやGitHub.comのGitHub Copilotもこのファイルを検出するため、複数のエディターで同じカスタム指示を使用できます。
- このファイルは、ワークスペースまたはリポジトリのルートにある
-
.instructions.md
ファイルの使用:- 一つまたは複数の
.instructions.md
ファイルをワークスペースまたはユーザープロファイルに作成できます。 - タスク固有のコード生成指示や、指示を含めるタイミングをより細かく制御したい場合に有用です。
- ファイル名に
.instructions.md
サフィックスを持つマークダウンファイルで構成され、オプションでメタデータを含むヘッダー(Front Matter構文)を持ちます。 -
applyTo
プロパティを使用して、指示を自動的に適用するファイルのglobパターンを指定できます(例:applyTo: "**/*.ts,**/*.tsx"
)。常に含める場合は**
パターンを使用します。 - 他の指示ファイルをマークダウンリンクで参照することで、指示を整理し、特定のトピックに集中させることができます。
- 作成方法: 「Chatビュー」の「Configure Chat」ボタンから「Instructions」を選択し、「New instruction file」を選択するか、「Chat: New Instructions File」コマンド(Ctrl+Shift+P)を使用します。
- 一つまたは複数の
-
VS Code 設定での指定:
- VS Codeのユーザーまたはワークスペース設定で、特定のシナリオに対するカスタム指示を指定できます。
- コードレビュー、コミットメッセージ生成、プルリクエストの説明生成、テスト生成などのタスクに対応します。
- これらは、設定値として直接テキストを定義するか、ワークスペース内の外部ファイルを
file
プロパティで参照することができます。 -
github.copilot.chat.codeGeneration.instructions
とgithub.copilot.chat.testGeneration.instructions
の設定はVS Code 1.102から非推奨となっており、代わりに指示ファイルの使用が推奨されています。
カスタム指示を生成する:
VS Codeは、あなたのワークスペースを分析し、コーディングプラクティスやプロジェクト要件に合致する.github/copilot-instructions.md
ファイルを自動生成することができます。
定義のヒント:
- 指示は短く、自己完結型に保ちます。
- 複数の情報が必要な場合は、複数の指示を使用します。
- 指示を複数のファイルに分割し、トピックやタスクタイプごとに整理します。
-
applyTo
プロパティを活用して、特定のファイルやフォルダに指示を自動適用します。 - プロンプトファイル内でカスタム指示を参照し、プロンプトを簡潔に保ちます。
3.2. プロンプトファイル (Prompt files) (実験的機能)
プロンプトファイルは、コード生成やコードレビューなどの共通タスクのための再利用可能なプロンプトを定義するために使用されます。これらは、タスクを「何を」すべきかを記述するスタンドアロンのプロンプトで、チャットで直接実行できます。
活用例:
- 新しいコンポーネント、APIルート、テストなどのスキャフォールディング。
- コード品質、セキュリティ脆弱性、パフォーマンス問題のチェックなど、コードレビューの実行。
- 複雑なプロセスやプロジェクト固有のパターンのステップバイステップガイド。
- 実装計画、アーキテクチャ設計、移行戦略の生成。
特徴:
- 指示ファイルと同様に、共通のガイドラインを再利用し、タスク固有の指示をプロンプトに含めることができます。
-
.prompt.md
サフィックスを持つマークダウンファイルで構成されます。 - オプションで、
mode
(ask
,edit
,agent
)、model
、tools
、description
などのメタデータを含むヘッダーを持つことができます。 - プロンプトファイルは、チャットでのプロンプト記述形式を模倣しており、自然言語の指示、追加のコンテキスト、他のプロンプトファイルへのリンクなどを組み合わせることができます。
- ワークスペース変数 (
${workspaceFolder}
), 選択変数 (${selection}
), ファイルコンテキスト変数 (${file}
), 入力変数 (${input:variableName}
)などを参照できます。 - ワークスペースまたはユーザープロファイルのどちらにも保存でき、ユーザープロンプトファイルはSettings Syncを使用して複数のデバイス間で同期できます。
作成方法: 「Chatビュー」の「Configure Chat」ボタンから「Prompt Files」を選択し、「New prompt file」を選択するか、「Chat: New Prompt File」コマンド(⇧⌘P / Ctrl+Shift+P)を使用します。
使用方法:
- コマンドパレットから「Chat: Run Prompt」コマンド(Ctrl+Shift+P)を実行し、プロンプトファイルを選択。
- Chatビューで
/
の後にプロンプトファイル名を入力し、追加情報も渡すことができます(例:/create-react-form: formName=MyForm
)。 - エディターでプロンプトファイルを開き、エディタータイトル領域の再生ボタンを押して実行することもできます。
3.3. カスタムチャットモード (Custom chat modes)
カスタムチャットモードは、チャットがどのように動作し、どのツールを使用でき、どのようにコードベースと対話するかを定義します。これにより、各チャットプロンプトでツールや指示を毎回設定する必要がなくなります。
活用例:
- 計画作成用のチャットモード(AIがコードベースへの読み取り専用アクセスを持ち、実装計画のみを生成)。
- 調査用のチャットモード(AIが外部リソースにアクセスして新しい技術や情報を収集)。
- フロントエンド開発者用のチャットモード(AIがフロントエンド開発に関連するコードのみを生成・変更)。
4. 指示ファイルとプロンプトファイルの一元管理と関連設定
これらのカスタマイズ機能は、chat.promptFiles
設定で有効または無効にできます。組織内で一元管理するために、デバイス管理によるVS Code設定の集中管理も可能です。
主な関連設定:
-
chat.promptFiles
(Experimental): 再利用可能なプロンプトファイルと指示ファイルを有効にします。 -
github.copilot.chat.codeGeneration.useInstructionFiles
:.github/copilot-instructions.md
からのコード指示をCopilotリクエストに追加するかどうかを制御します。 -
chat.instructionsFilesLocations
(Experimental): 指示ファイルが配置されているフォルダの辞書。ワークスペースのルートフォルダからの相対パスを解決し、globパターンもサポートします。- 例:
"chat.instructionsFilesLocations": { "src/frontend/instructions": true, "src/backend/instructions": false }
。
- 例:
-
chat.promptFilesLocations
(Experimental): プロンプトファイルが配置されているフォルダの辞書。- 例:
"chat.promptFilesLocations": { ".github/prompts": false, "setup/**/prompts": true }
。
- 例:
また、以下のGitHub Copilot固有の設定で、さまざまなタスクに対するカスタム指示を設定できます。
-
github.copilot.chat.reviewSelection.instructions
(Preview): コードレビューの指示。 -
github.copilot.chat.commitMessageGeneration.instructions
(Experimental): コミットメッセージ生成の指示。 -
github.copilot.chat.pullRequestDescriptionGeneration.instructions
(Experimental): プルリクエストのタイトルと説明生成の指示。 -
github.copilot.chat.codeGeneration.instructions
(Deprecated): コード生成の指示。 -
github.copilot.chat.testGeneration.instructions
(Deprecated): テスト生成の指示。
5. まとめ
VS CodeにおけるGitHub Copilotのカスタマイズ機能は、AIアシスタントをあなたの開発環境とワークフローに完全に統合するための強力な手段です。カスタム指示、プロンプトファイル、そしてカスタムチャットモードを組み合わせることで、AIはあなたの特定のコーディング規約、技術スタック、プロジェクト要件を理解し、それに合致した高品質なコードや提案を生成できるようになります。
これらのカスタマイズを積極的に活用することで、開発の効率化、コードの一貫性の向上、そして最終的にはよりスムーズで生産的なコーディング体験を実現できるでしょう。ぜひこれらの機能を試して、あなたのGitHub Copilotを最大限に活用してください。