はじめに
GitHub Copilotを使っていて、「プロジェクトのコーディング規約に沿った提案をしてほしい」「特定のフレームワークの書き方に統一したい」と感じたことはないでしょうか。デフォルトのCopilotは汎用的な提案を行いますが、Instructionsファイルを活用することで、プロジェクト固有のルールやガイドラインをAIに伝え、より適切なコード提案を得られるようになります。
本記事では、GitHub CopilotのInstructionsファイル機能について、公式ドキュメントに基づいて詳しく解説します。この記事を読むことで、以下のことができるようになります:
- Instructionsファイルの種類と役割を理解する
.github/copilot-instructions.mdを作成してリポジトリ全体に適用する- パス別のInstructionsファイルで言語やフレームワークごとにルールを設定する
- 実践的な記述例を参考に、自分のプロジェクトに適した設定を行う
Instructionsファイルとは
Instructionsファイルは、GitHub Copilotに対してプロジェクト固有のガイドラインやルールを伝えるためのMarkdownファイルです。チャットでプロンプトを入力するたびに同じ指示を繰り返す必要がなくなり、一貫性のあるAI応答を得られるようになります。
Instructionsファイルが解決する課題
通常のCopilot利用では、以下のような課題が発生しがちです:
- 毎回「Pythonで書いて」「TypeScriptのベストプラクティスに従って」などの指示を繰り返す必要がある
- プロジェクトのコーディング規約を知らないため、スタイルが統一されない
- フレームワーク固有の書き方(例:React Hooksのルール)を都度伝える手間がかかる
- チームメンバー間でCopilotの活用方法にばらつきが生じる
Instructionsファイルを導入することで、これらの指示を一度書いておけば自動的に適用されるようになります。
Instructionsファイルの種類
GitHub Copilotは複数の種類のInstructionsファイルをサポートしています。それぞれの特徴を理解して、適切に使い分けましょう。
| ファイル種別 | 配置場所 | 適用範囲 | 主な用途 |
|---|---|---|---|
copilot-instructions.md |
.github/ |
リポジトリ全体 | プロジェクト共通のコーディング規約 |
*.instructions.md |
.github/instructions/ |
特定のパス・ファイル種別 | 言語やフレームワークごとのルール |
AGENTS.md |
リポジトリルート | AIエージェント向け | 複数のAIツールで共有する指示 |
| 個人カスタム指示 | GitHub設定 | 個人のすべての会話 | 応答言語や好みのスタイル |
リポジトリ全体のInstructionsファイル
最も基本的なInstructionsファイルは、.github/copilot-instructions.mdです。このファイルに記述した内容は、リポジトリ内でのすべてのCopilot Chat会話に自動的に適用されます。
作成手順
- リポジトリのルートに
.githubディレクトリを作成する(既に存在する場合は不要) .github/copilot-instructions.mdファイルを作成する- 自然言語でガイドラインを記述する
|
|
記述例:基本的なプロジェクトガイドライン
以下は、一般的なWebアプリケーションプロジェクトでの記述例です:
|
|
VS Codeでの設定
VS Codeで.github/copilot-instructions.mdを使用するには、設定で機能を有効にする必要があります:
- VS Codeの設定を開く(
Ctrl + ,またはCmd + ,) - 「github.copilot.chat.codeGeneration.useInstructionFiles」を検索
- チェックボックスをオンにする
または、settings.jsonに以下を追加します:
|
|
Instructionsファイルの自動生成
VS Codeでは、ワークスペースを分析して適切なInstructionsファイルを自動生成する機能があります:
- Chatビューを開く
- 歯車アイコン(Configure Chat)をクリック
- 「Generate Chat Instructions」を選択
- 生成された内容を確認し、必要に応じて編集する
この機能を使うと、プロジェクトの構造やpackage.json、既存のコードから自動的にガイドラインを抽出してくれます。
パス別のInstructionsファイル
プロジェクト内で異なる言語やフレームワークを使用している場合、パス別のInstructionsファイルが有効です。.github/instructions/ディレクトリ内に*.instructions.md形式のファイルを作成し、applyToプロパティでどのファイルに適用するかを指定します。
作成手順
|
|
ファイル形式
パス別Instructionsファイルは、YAMLフロントマターとMarkdown本文で構成されます:
|
|
applyToパターンの書き方
applyToプロパティには、globパターンを使用してファイルを指定します:
| パターン | 説明 |
|---|---|
* |
カレントディレクトリのすべてのファイル |
** または **/* |
すべてのディレクトリのすべてのファイル |
*.py |
カレントディレクトリの.pyファイル |
**/*.py |
すべてのディレクトリの.pyファイル |
src/**/*.ts |
srcディレクトリ以下のすべての.tsファイル |
**/*.ts,**/*.tsx |
すべての.tsと.tsxファイル(カンマ区切りで複数指定) |
記述例:言語別の設定
Pythonファイル向け(python.instructions.md):
|
|
Reactコンポーネント向け(react.instructions.md):
|
|
テストファイル向け(testing.instructions.md):
|
|
VS Code固有の設定
VS Codeでは、Instructionsファイル以外にも、設定(settings.json)を通じて特定のシナリオ向けの指示を設定できます。
コードレビュー用の指示
|
|
コミットメッセージ生成用の指示
|
|
プルリクエスト説明生成用の指示
|
|
優先順位と組み合わせ
複数のInstructionsファイルが存在する場合、GitHub Copilotはそれらを組み合わせて使用します。優先順位は以下の通りです:
- 個人カスタム指示(最優先)
- リポジトリ指示(
.github/copilot-instructions.md) - 組織指示
また、パス別Instructionsファイルとリポジトリ全体のInstructionsファイルが両方存在する場合、両方の指示が組み合わされて適用されます。
競合の回避
異なるInstructionsファイル間で矛盾する指示を書かないように注意しましょう。例えば:
悪い例:
- copilot-instructions.md:「インデントは2スペースを使用してください」
- python.instructions.md:「インデントは4スペースを使用してください」
このような競合がある場合、Copilotの応答品質が低下する可能性があります。
良い例:
- copilot-instructions.md:一般的なプロジェクト情報のみを記述
- python.instructions.md:Python固有のルール(インデント4スペースなど)を記述
実践的な活用パターン
パターン1:マルチ言語プロジェクト
フロントエンドとバックエンドで異なる言語を使用するプロジェクトでの設定例:
|
|
パターン2:テスト駆動開発
テストファイルとプロダクションコードで異なる規約を適用:
|
|
パターン3:ドキュメント生成
ドキュメントファイル向けの特別な指示:
|
|
Instructionsファイル記述のベストプラクティス
効果的な記述のコツ
-
簡潔かつ具体的に書く
- 抽象的な表現よりも具体的なルールを記述する
- 「良いコードを書いてください」→「関数は20行以内に収めてください」
-
優先度の高い指示を最初に書く
- 重要なルールから順に記述する
- Copilotはファイル全体を読みますが、最初の内容をより重視する傾向があります
-
例を含める
- 「こう書いてください」という指示だけでなく、具体例を示す
- 良い例と悪い例の両方を示すとより効果的
-
定期的に更新する
- プロジェクトの進化に合わせてInstructionsも更新する
- 新しいライブラリを導入した際は、その使い方も追記する
避けるべきパターン
-
長すぎる指示
- Instructionsファイルは2ページ程度に収める
- 詳細すぎる指示はかえって混乱を招く
-
タスク固有の指示
- 「この機能を実装して」のような具体的なタスクは書かない
- Instructionsは汎用的なガイドラインに留める
-
矛盾する指示
- 複数のファイル間で矛盾しないよう注意する
- 定期的にレビューして一貫性を確認する
注意点と制限事項
インライン補完には適用されない
Instructionsファイルの内容は、Copilot Chatには適用されますが、エディタ上でのインライン補完(グレーのゴーストテキスト)には適用されません。インライン補完の動作をカスタマイズするには、別のアプローチが必要です。
ファイルサイズの制限
Instructionsファイルが大きすぎると、コンテキストウィンドウを圧迫し、Copilotの応答品質に影響を与える可能性があります。目安として2ページ(約2000語)以内に収めることが推奨されています。
セキュリティ上の考慮
Instructionsファイルはリポジトリにコミットされるため、以下の点に注意してください:
- 機密情報(APIキー、パスワードなど)を含めない
- 社外秘のビジネスロジックの詳細を書かない
- 公開リポジトリでは特に注意する
まとめ
GitHub CopilotのInstructionsファイルは、プロジェクト固有のコーディング規約やガイドラインをAIに伝えるための機能です。適切に設定することで、以下のメリットが得られます:
- チャットで毎回同じ指示を繰り返す手間が省ける
- プロジェクト全体で一貫性のあるコード提案を得られる
- チームメンバー間でCopilotの活用方法を統一できる
- 言語やフレームワークごとに適切なルールを適用できる
まずは.github/copilot-instructions.mdにプロジェクトの基本情報を記述することから始め、必要に応じてパス別のInstructionsファイルを追加していくことをおすすめします。Copilotの提案品質が向上し、開発効率がさらに高まるはずです。