Contents
1. Prompt Files が提供する価値
| 項目 | 内容 |
|---|---|
| 目的 | プロジェクト固有の指示(Goal・Context・Expectation・Sources)をテンプレート化し、チーム全体で統一したコード生成を実現 |
| 対応 IDE | Visual Studio Code、Visual Studio 2022、JetBrains 系 (IntelliJ IDEA、PyCharm、WebStorm 等) |
| 導入ハードル | .copilot 拡張子のファイルをプロジェクト直下に置くだけで自動的に読み込まれる。拡張機能は「GitHub Copilot」の最新版が必要 |
| 現行ステータス | パブリックプレビュー(正式リリースではありません)。主要 IDE が公式にサポートしているため、実務への影響は最小限です |
ポイント:プレビュー版であることを踏まえ、まずは VS Code など導入コストの低い環境で試し、必要に応じて他 IDE に拡張してください。
2. 公式ドキュメント『初めての Prompt File』の主要ポイント
2‑1. ファイル構造と必須キー
Prompt File は JSON5 互換(コメント・シングルクオート許容)で記述します。必須キーは以下の4つです。
| キー | 説明 |
|---|---|
goal |
「何を達成したいか」を一文で示す |
context |
プロジェクトの環境・依存関係など、生成コードが参照すべき情報 |
expectation |
出力形式や品質基準(例:テスト有無、コメント付与) |
sources |
参考にしたい外部ドキュメントやリポジトリの URL (任意・上限は公式未定) |
注意:
sourcesの件数制限は現在公式には明記されていません。実装時は必要なだけ列挙可能です。
2‑2. 推奨記法
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ // Goal: 目的を簡潔に(50文字程度が目安) goal: "REST API の GET エンドポイントを作成し、ステータスコード200 と JSON を返す", // Context: 環境情報は箇条書きで整理 context: ` - Node.js 18, Express 4.18 使用 - routes/api.js に router が定義済み - テストフレームワークは Jest `, // Expectation: 必須条件とオプションを分けて記述 expectation: ` - エラーハンドリングは try/catch で実装 - JSDoc コメント付き - コードスタイルは .editorconfig に準拠 `, // Sources: 必要に応じて URL を列挙(HTTPS 推奨) sources: [ "https://expressjs.com/en/guide/routing.html", "https://developer.mozilla.org/ja/docs/Web/HTTP/Status/200" ] } |
- インデントは スペース2個 が推奨です。
- コメント (
//) は JSON5 のみで利用可能です。
3. 4 要素の書き方と実装例
| 要素 | 書くべきポイント | 実装サンプル |
|---|---|---|
| Goal | アクション動詞(「実装」「生成」)で始め、対象と期待結果を続ける。50 文字前後が読みやすい。 | goal: "指定した配列から重複要素を除去し、ソートされた新しい配列を返す関数を実装する" |
| Context | 使用言語・バージョン・フレームワーク・既存コードへの依存関係を箇条書きで示す。 | context: "- Python 3.11, FastAPI 0.109\n- models.py に Pydantic モデルがある" |
| Expectation | 必須条件と任意の追加要件を分け、出力形式・品質基準を具体的に指示する。 | expectation: "- async/await を使用\n- XML ドキュメントコメント付与\n- .editorconfig に沿ったフォーマット" |
| Sources | 参照したい公式ドキュメントや信頼できるリポジトリの URL(HTTPS)を列挙。件数制限は未公表なので必要分だけ記載可。 | sources: ["https://reactjs.org/docs/hooks-intro.html"] |
4. 良い Prompt と悪い Prompt の比較
| 項目 | 良い例(具体的・簡潔) | 悪い例(抽象的・過剰) |
|---|---|---|
| Goal | goal: "REST API の GET エンドポイントを実装し、ステータスコード200 と JSON ボディを返す" |
goal: "API を作る" |
| Context | context: "- Node.js 18, Express 4.18 使用\n- router ファイルに追記" |
context: "Node.js で開発" |
| Expectation | expectation: "- try/catch によるエラーハンドリング\n- JSDoc コメント付き" |
expectation: "きれいなコードを書いて" |
| Sources | sources:\n - https://expressjs.com/en/guide/routing.html |
sources:(空) |
要点
具体性:何を、どうやって、どこから参照するかを明示。
簡潔さ:重要情報は2 行以内に収め、余計な指示は省く。
5. 業務別・言語別「すぐ使える」Prompt File テンプレート集
ダウンロードは以下のリポジトリから取得できます(実装時に正しい URL に差し替えてください)。
https://github.com/your-org/copilot-prompt-templates/releases/latest/download/templates.zip
5‑1. コード生成テンプレート
| テンプレート | 言語・フレームワーク | Goal の例 |
|---|---|---|
js-react-component.copilot |
JavaScript / React 18 | "React 関数コンポーネントを作成し、Props に型定義(PropTypes)を付与する" |
py-fastapi-endpoint.copilot |
Python / FastAPI | "POST エンドポイントでリクエストボディをバリデーションし、200/400 を返す" |
go-cli-tool.copilot |
Go / Cobra+Viper | "CLI ツールの雛形(cobra)を生成し、initサブコマンドを実装する" |
カスタマイズ手順
- Goal の文言だけ置き換えて目的に合わせる。
- 必要なら Context にプロジェクト固有の依存関係(例:使用パッケージ)を追記。
- Expectation でコードスタイルやテストフレームワークを指定。
5‑2. テスト作成テンプレート
| テンプレート | 言語・テストフレームワーク |
|---|---|
ts-jest-unit.copilot |
TypeScript / Jest |
java-junit5-integration.copilot |
Java / JUnit 5 |
ruby-rspec-model.copilot |
Ruby / RSpec |
例(TypeScript)
|
1 2 3 4 5 6 7 8 |
goal: "関数 `calculateTax` のユニットテストを Jest で作成する" context: "- src/utils/tax.ts に実装がある\n- tsconfig.json がプロジェクトに含まれる" expectation: | - describe/it 構造で記述 - 境界値テストと例外ケースを網羅 sources: - https://jestjs.io/docs/api |
5‑3. リファクタリングテンプレート
| テンプレート | 言語 |
|---|---|
cs-async-refactor.copilot |
C# |
php-psr12-format.copilot |
PHP |
js-eslint-fix.copilot |
JavaScript |
例(C#)
|
1 2 3 4 5 6 7 8 |
goal: "同期メソッドを async/await に書き換える" context: "- .NET 7, C# 11 使用\n- メソッドは DataService.GetItems()" expectation: | - 戻り値型は Task<T> に変更 - 呼び出し側も await を付与 sources: - https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/ |
5‑4. ドキュメント自動化テンプレート
| テンプレート | 対象ツール |
|---|---|
md-api-doc.copilot |
Markdown |
rst-sphinx-index.copilot |
reStructuredText (Sphinx) |
openapi-yaml-gen.copilot |
OpenAPI 3.0 |
例(Markdown)
|
1 2 3 4 5 6 7 8 |
goal: "REST API のエンドポイント一覧を markdown テーブルで生成する" context: "- routes ディレクトリに各エンドポイント定義あり\n- OpenAPI スキーマは openapi.yaml に格納" expectation: | - 列は HTTP メソッド、パス、概要の3列 - テーブル上部に自動生成日時(ISO8601)をコメントで付与 sources: - https://swagger.io/specification/ |
6. Prompt File の作成手順と IDE への適用方法
6‑1. ファイルの基本設定
| 設定項目 | 推奨値 |
|---|---|
| 保存場所 | プロジェクトルート(例: ./my-prompt.copilot) |
| 拡張子 | .copilot (必須) |
| 文字コード | UTF‑8(BOM なし) |
| インデント | スペース2個 |
6‑2. 各 IDE での登録手順
| IDE | 手順 |
|---|---|
| VS Code | 1️⃣ Ctrl+Shift+P → “Copilot: Reload Prompt Files” 2️⃣ ファイルが自動的に読み込まれ、補完に反映されます |
| Visual Studio 2022 | 「ツール」→「オプション」→「GitHub Copilot」→「Prompt Files」タブでフォルダーを追加 |
| JetBrains 系 (IntelliJ, PyCharm …) | Settings > Tools > GitHub Copilot → “Add Prompt File Directory” にプロジェクトパスを入力 |
ヒント:ファイルを編集したら必ず「Reload Prompt Files」か IDE の再起動で反映させましょう。
6‑3. よくある失敗と対処法
| 失敗例 | 原因 | 修正策 |
|---|---|---|
context が空 |
必要情報が記載されていないため、Copilot が適切なインポートや型推論できない | 環境・依存関係は必ず箇条書きで列挙 |
expectation に 20 行以上の細かい指示を書いた |
プロンプトが長大化し、重要度が分散して出力が曖昧になる | 期待は「主要要件」だけに絞り、詳細はコードレビューで補完 |
拡張子を .prompt や .yaml にした |
IDE が Prompt File と認識せず、指示が無視される | 常に .copilot を使用し、保存後に Reload を実行 |
| 公式ドキュメントの変更に未対応 | 新しいキー(例: metadata)が追加されたが既存ファイルが古いまま |
GitHub Docs のリリースノートを定期的に確認し、テンプレートを更新 |
7. コミュニティ活用とベストプラクティス
- Awesome GitHub Copilot Customizations
GitHub →https://github.com/awesome-copilot/customizations(※実装時に正しい URL を設定) - カテゴリ別に整理された Prompt File が多数掲載。
-
フォークして自社向けに改良し、Pull Request を送ることでコミュニティ全体の品質向上に貢献できます。
-
定期的な情報収集
-
GitHub Docs の「Prompt Files」ページは月1回程度更新されます。Watch 機能で通知を受け取り、最新の構文や推奨設定を把握しましょう。
-
社内ナレッジベース化
- 自社で作成したテンプレートは内部 Wiki に保存し、リンクとバージョン管理(例:
v2024.10)を徹底すると、プロジェクト間での統一が容易になります。
8. Q&A(よくある質問)
| 質問 | 回答 |
|---|---|
| Prompt File は本番環境でも使用できますか? | 現在はプレビュー版なので、本番導入前にテスト環境で十分な検証を推奨します。 |
sources に機密情報の URL を記載しても安全ですか? |
Copilot は提示された URL を参照するだけで、実際に外部へリクエストは行いません。ただし、社内限定情報は公開リポジトリに置かないよう注意してください。 |
| IDE が Prompt File を認識しないときの対処法は? | 1. 拡張子が .copilot か確認2. ファイルを UTF‑8 に保存 3. 「Reload Prompt Files」または IDE 再起動 |
| 複数の Prompt File を同時に使うと競合しますか? | 同一キー(例: goal)が重複すると後から読み込まれた方が優先されます。役割別にファイルを分け、名前で管理すると安全です。 |
| プレビュー版の制限はどこで確認できますか? | GitHub Docs の「Prompt Files」セクションと、リポジトリの CHANGELOG.md に記載されています。 |
9. まとめ
- 導入ハードルは低い –
.copilotファイルをプロジェクト直下に置くだけで、主要 IDE が自動的に指示を反映します。 - 4 要素(Goal・Context・Expectation・Sources)を正確に記述 することが成功の鍵です。公式ドキュメントは構造とシンタックスだけなので、実務では「具体性」と「簡潔さ」を意識してください。
- テンプレート活用で効率化 – 本稿で紹介した 10 〜 15 件のテンプレートはコード生成・テスト作成・リファクタリング・ドキュメント自動化に対応しています。ダウンロード後は
goalとcontextをプロジェクト固有に置き換えるだけで即使用可能です。 - 失敗パターンを事前に把握 – コンテキスト不足、過剰指示、拡張子ミスなどはよくある落とし穴です。上表の対処法を参考にトラブルを最小化しましょう。
- コミュニティで最新情報を取得 – 「Awesome GitHub Copilot Customizations」や公式リリースノートを Watch して、常にベストプラクティスを取り入れ続けることが重要です。
これらの手順とテンプレートを活用すれば、GitHub Copilot をチーム全体で統一的かつ効果的に運用でき、コード品質向上と開発速度の両立が実現します。ぜひ本稿を参考に、早速 Prompt Files の導入・カスタマイズに挑戦してみてください。