Tips - カスタムインストラクションの使い方
GitHub Copilotに、プロジェクト固有の知識や組織のコーディング規約を教え込める機能をご存知でしょうか。カスタム指示機能を使えば、Copilotの応答を自分たちの開発スタイルに合わせて調整できます。
この記事では、リポジトリ、個人、組織という3つのレベルでCopilotをカスタマイズする方法を解説します。
1. カスタム指示の優先順位
複数のカスタム指示が同時に適用される場合、以下の優先順位で処理されます。
最も優先度が高いのは個人カスタム指示で、次にリポジトリ、最後に組織の指示が適用されます。ただし、すべての関連する指示は組み合わされてCopilotに提供されるため、矛盾する指示を設定しないよう注意が必要です。
2. リポジトリカスタム指示
リポジトリカスタム指示は、プロジェクト固有のコンテキストをCopilotに伝えるための機能です。
2.1. 対応環境
- VS Code
- JetBrains IDEs
- Visual Studio
- Webブラウザ
- Eclipse
2.2. 前提条件
- カスタム指示ファイルの作成(後述)
- カスタム指示機能の有効化(デフォルトで有効)
2.3. 3つのタイプ
リポジトリカスタム指示には、3つのタイプがあります。
2.3.1. リポジトリ全体の指示
リポジトリ全体に適用される指示です。
ファイルの配置場所:
your-repository/
└── .github/
└── copilot-instructions.md
記述例:
このプロジェクトではクリーンアーキテクチャを採用しています。
レイヤー間の依存関係は必ず内側から外側に向けてください。
エラーハンドリングには必ずResult型を使用してください。
例外を直接投げることは避けてください。
テストはテーブル駆動テストの形式で記述してください。
指示は自然言語で記述し、Markdown形式で整形します。空白行で区切っても、改行のみでも構いません。
2.3.2. パス固有の指示
特定のパスにマッチするファイルに対してのみ適用される指示です。リポジトリ全体の指示と併用される場合、両方の指示が組み合わされます。
ファイルの配置場所:
your-repository/
└── .github/
└── instructions/
├── models.instructions.md
├── controllers.instructions.md
└── api.instructions.md
記述例:
---
applyTo: "app/models/**/*.rb"
---
モデルクラスには必ずバリデーションを定義してください。
データベースの制約とアプリケーション層のバリデーションの両方が必要です。
関連の定義には適切な dependent オプションを指定してください。
フロントマター部分の詳細:
frontmatterブロックにはapplyToキーワードでglob パターンを指定します。
---
applyTo: "**/*.ts,**/*.tsx"
---
複数のパターンを指定する場合は、カンマで区切ります。
globパターンの例:
| パターン | 説明 | マッチ例 |
|---|---|---|
* |
カレントディレクトリのすべてのファイル | file.py |
** または **/*
|
すべてのディレクトリのすべてのファイル | すべてのファイル |
*.py |
カレントディレクトリの.pyファイル |
main.py |
**/*.py |
すべてのディレクトリの.pyファイル(再帰的) |
src/main.py, tests/test_main.py
|
src/*.py |
srcディレクトリ直下の.pyファイル |
src/foo.py(src/foo/bar.pyは除外) |
src/**/*.py |
srcディレクトリ以下の.pyファイル(再帰的) |
src/foo.py, src/foo/bar.py
|
**/subdir/**/*.py |
任意の深さのsubdirディレクトリ以下の.pyファイル |
subdir/foo.py, parent/subdir/baz.py
|
特定のエージェントから除外する:
excludeAgentキーワードを使用して、コードレビューまたはコーディングエージェントのどちらかから除外できます。
---
applyTo: "**"
excludeAgent: "code-review"
---
この例では、コーディングエージェントのみがこのファイルを読み取ります。excludeAgentを指定しない場合、両方のエージェントが指示を使用します。
2.3.3. エージェント指示
AIエージェントが使用する指示です。
ファイルの配置場所:
your-repository/
├── src/
│ ├── AGENTS.md
│ └── components/
│ └── AGENTS.md
└── tests/
└── AGENTS.md
リポジトリ内の任意の場所にAGENTS.mdファイルを配置できます。Copilotは、作業中のファイルに最も近いディレクトリツリー内のAGENTS.mdファイルを優先的に使用します。
詳細はopenai/agents.mdリポジトリを参照してください。
注意: ワークスペースルート外のAGENTS.mdファイルのサポートは、現在デフォルトでオフになっています。
2.4. カスタム指示の確認方法
カスタム指示は、ファイルを保存するとすぐに利用可能になります。Chat viewやインラインチャットには表示されませんが、使用されているかどうかは以下の方法で確認できます。
- Chat viewで応答の「References」リストを確認
-
.github/copilot-instructions.mdファイルがリファレンスとして表示されていれば、カスタム指示が使用されています - リファレンスをクリックすると、ファイルの内容を確認できます
2.5. カスタム指示の有効化・無効化
2.5.1. Copilot Chatでの設定
- キーボードショートカットでSettingsエディタを開く
- Mac:
Command + , - Linux/Windows:
Ctrl + ,
- Mac:
- 検索ボックスに「instruction file」と入力
- 「Code Generation: Use Instruction Files」のチェックボックスを選択または解除
この設定は個人の使用にのみ影響し、他のユーザーには影響しません。
2.5.2. Copilot code reviewでの設定
- GitHubでリポジトリのメインページに移動
- リポジトリ名の下にある「Settings」タブをクリック
- サイドバーの「Code & automation」セクションで「Copilot」→「Code review」をクリック
- 「Use custom instructions when reviewing pull requests」オプションを切り替え
この設定は、リポジトリ内のすべてのコードレビューに適用されます。
3. プロンプトファイル機能
プロンプトファイルは、再利用可能なプロンプト指示を構築・共有するための機能です。
注意: プロンプトファイルは現在パブリックプレビュー中で、変更される可能性があります。VS Code、Visual Studio、JetBrains IDEsでのみ利用可能です。
3.1. プロンプトファイルの有効化
- コマンドパレットを開く
- Windows/Linux:
Ctrl + Shift + P - Mac:
Command + Shift + P
- Windows/Linux:
- 「Open Workspace Settings (JSON)」と入力して選択
-
settings.jsonファイルに以下を追加:
{
"chat.promptFiles": true
}
これにより、.github/promptsフォルダがプロンプトファイルの配置場所として設定されます。フォルダが存在しない場合は自動的に作成されます。
3.2. プロンプトファイルの作成
- コマンドパレットを開く(
Ctrl + Shift + PまたはCommand + Shift + P) - 「prompt」と入力し、「Chat: Create Prompt」を選択
- プロンプトファイルの名前を入力(
.prompt.md拡張子は不要)- 名前には英数字とスペースを使用可能
- ファイルの目的を説明する名前にする
- Markdown形式でプロンプト指示を記述
他のファイルを参照する方法:
- Markdownリンク:
[index](../../web/index.ts) - Copilot構文:
#file:../../web/index.ts
パスはプロンプトファイルからの相対パスで指定します。他のファイルを参照することで、API仕様書や製品ドキュメントなどの追加コンテキストを提供できます。
記述例:
このプロジェクトのAPIエンドポイントを実装してください。
仕様書: #file:../../docs/api-spec.yaml
既存の実装例: [ユーザーAPI](../../api/users.ts)
以下のルールに従ってください:
- エラーレスポンスは必ず RFC 7807 形式で返す
- 認証にはJWTトークンを使用する
- レート制限は 1分あたり60リクエスト
3.3. プロンプトファイルの使用
- Copilot Chat viewの下部にある「Attach context」アイコン(📎)をクリック
- ドロップダウンメニューから「Prompt...」を選択
- 使用したいプロンプトファイルを選択
- (オプション)追加のファイルやプロンプトファイルをアタッチしてコンテキストを追加
- (オプション)チャットプロンプトボックスに追加情報を入力
- チャットプロンプトを送信
4. 個人カスタム指示
個人カスタム指示は、GitHub.com上のすべての会話で個人の好みに合わせた応答を得るための機能です。
注意: 現在はGitHub上のGitHub Copilot Chatでのみサポートされています。
4.1. 使用例
常に日本語で応答してください。
コードの説明は簡潔にし、必要最小限のコンテキストのみを提供してください。
あなたのスタイルは親切な同僚です。
常にTypeScriptで例を提供してください。
4.2. 個人カスタム指示の追加手順
- GitHub上でCopilot Chatを開く
- 左下隅のプロフィール写真をクリック
- 「Personal instructions」を選択
- テキストボックスに自然言語で指示を追加
- 任意の形式で記述可能(1ブロック、各行、または空白行で区切る)
- (オプション)テンプレートを表示するには📋アイコンをクリック
- 「Communication」などのボックスをクリックすると、プレースホルダー付きの指示がテキストボックスに追加されます
- 例:
{format}を自分の好みに置き換える
- 「Save」をクリック
保存後、指示はすぐに有効になり、変更または削除するまで有効です。
4.3. テンプレートの活用
個人カスタム指示では、よく使われる指示のテンプレートが用意されています。例えば「Communication」テンプレートを選択すると、以下のようなプレースホルダー付きの指示が追加されます。
応答形式: {format}
詳細レベル: {level}
技術スタック: {stack}
これらのプレースホルダーを自分の好みに置き換えて使用します。
5. 組織カスタム指示
組織カスタム指示は、組織のメンバー全体に対してCopilotの応答をカスタマイズする機能です。
注意: この機能は現在パブリックプレビュー中で、変更される可能性があります。
5.1. 利用条件
- 組織オーナーの権限が必要
- GitHub Copilot BusinessまたはGitHub Copilot Enterpriseプランが必要
5.2. 対応環境
現在、以下の環境でのみサポートされています:
- GitHub.com上のCopilot Chat
- GitHub.com上のCopilot code review
- GitHub.com上のCopilot coding agent
5.3. 組織カスタム指示の追加手順
- GitHubの右上隅にあるプロフィール写真をクリック
- 「Organizations」を選択
- 組織名の横にある「Settings」をクリック
- 左サイドバーで「Copilot」→「Custom instructions」をクリック
- 「Preferences and instructions」の下のテキストボックスに自然言語で指示を追加
- 任意の形式で記述可能(1ブロック、各行、または空白行で区切る)
- 「Save changes」をクリック
保存後、指示はすぐに有効になり、変更または削除するまで有効です。
5.4. 動作確認
設定した指示の動作を確認するには、github.com/copilotにアクセスして会話を開始してください。
5.5. 組織での活用例
当社のコーディング規約に従ってください:
- インデントは2スペース
- 変数名はキャメルケース、定数はアッパースネークケース
- 関数には必ずJSDocコメントを付ける
セキュリティ要件:
- ユーザー入力は必ずサニタイズする
- SQLクエリにはプリペアドステートメントを使用
- 機密情報をログに出力しない
テストカバレッジは80%以上を維持してください。
6. カスタム指示の実践的な使い方
6.1. レイヤー構造での使い分け
カスタム指示は、レイヤーごとに役割を分けて設定すると効果的です:
- 個人: 言語、詳細レベル、応答スタイルなどの個人的な好み
- リポジトリ: プロジェクトのアーキテクチャ、使用技術、テスト方針
- 組織: コーディング規約、セキュリティ要件、全社的な標準
6.2. 矛盾を避けるためのポイント
複数のカスタム指示を設定する際は、以下の点に注意してください:
- スコープを明確にする: 各レベルで異なる側面をカバーする
- 具体的に記述する: 曖昧な表現は解釈の違いを生む可能性がある
- 定期的に見直す: プロジェクトの進化に合わせて更新する
- 一時的な無効化: 応答品質に問題がある場合は、リポジトリ指示を一時的に無効化して確認
7. まとめ
GitHub Copilotのカスタム指示機能を使うことで、AIアシスタントをプロジェクトや組織の文脈に合わせて調整できます。
| 機能 | スコープ | 優先度 | 主な用途 |
|---|---|---|---|
| 個人カスタム指示 | 個人 | 最高 | 言語、スタイル、詳細レベルの好み |
| リポジトリカスタム指示 | リポジトリ | 中 | プロジェクト固有の規則、アーキテクチャ |
| 組織カスタム指示 | 組織 | 最低 | コーディング規約、セキュリティ要件 |
これらの機能を適切に組み合わせることで、Copilotをより実用的なツールにできます。特にチーム開発では、リポジトリと組織レベルの指示を設定することで、一貫性のあるコード生成が期待できます。
実際に試してみて、自分たちの開発スタイルに合った設定を見つけてください。