Contents
1. Copilot プロンプトとは
定義
GitHub Copilot がコードやドキュメントを生成する際に参照する「指示文」のことです。自然言語でタスクの目的・制約・期待出力例(※以下「目的‑制約‑例示」)を記述すると、LLM がそれを解釈して最適なコードを補完します。
仕組み(公式)
Copilot は内部で大規模言語モデル(LLM)を走らせ、入力されたテキストと現在のエディタコンテキストから次に出現すべきトークン列を予測します。指示が曖昧だと複数解釈が生まれ、期待外れの結果になることがあります【GitHub Docs – Prompt Engineering】(https://docs.github.com/ja/copilot/concepts/prompting/prompt-engineering)。
2. 効果的なプロンプト構造 ― 「目的‑制約‑例示」
| 要素 | 役割 |
|---|---|
| 目的 | タスク全体を一文で要約し、モデルに「何をやるか」の大枠を伝える。 |
| 制約 | 使用言語・バージョン・ライブラリ限定、パフォーマンス要件、コーディング規約など、出力を絞り込む情報を列挙する。 |
| 例示 | 入出力のサンプルコードや関数シグネチャを提示し、期待する形を「見本」として示す。 |
2‑1. 標準フォーマット例(VS Code)
|
1 2 3 4 5 6 7 |
# 目的: CSV ファイルを読み込み、ヘッダー行から pandas.DataFrame を作成する関数を実装 # 制約: Python 3.10、pandas のみ使用、エラーハンドリングは try/except で行う # 例示: def read_csv(path: str) -> pd.DataFrame: """CSV を読み込んで DataFrame を返す.""" ... |
このように3要素を順序立てて記述すると、Copilot は以下の点を自動的に補完します。
- 関数シグネチャと docstring
pandas.read_csvの呼び出しと例外処理- 型ヒント・インポート文
公式ドキュメントでも同様の手順が推奨されています【GitHub Docs】(https://docs.github.com/ja/copilot/concepts/prompting/prompt-engineering)。
3. 良いプロンプト/悪いプロンプトの比較
3‑1. コード生成
| プロンプト | 期待できる出力 |
|---|---|
NG// 文字列を逆順にする関数 |
関数名だけが決まり、型ヒントやエラーチェックが欠如したシンプル実装。 |
OK# 目的: Unicode 対応で文字列を逆順に返す関数<br># 制約: Python3.9、型アノテーション必須<br># 例示:\ndef reverse_string(s: str) -> str: |
完全な型ヒント、Unicode 正規化(NFC)を考慮した実装が生成される。 |
3‑2. テストケース作成
| プロンプト | 期待できる出力 |
|---|---|
NGテストを書いて |
1 件だけの単純テストで、境界条件が網羅されていない。 |
OK# 目的: edge case を含む pytest テストを作成<br># 制約: parametrize 使用<br># 例示:\n@pytest.mark.parametrize("input,expected", [("", ""), ("a", "a")]) |
複数のパラメータと空文字・長文などの境界条件が網羅されたテストコードが生成される。 |
3‑3. ドキュメント要約
| プロンプト | 期待できる出力 |
|---|---|
NGREADME を要約 |
要点が抜け落ち、長さも一定でない要約になる。 |
OK# 目的: 500文字以内でプロジェクト概要と主要機能を箇条書きにする<br># 制約: 日本語、技術用語はそのまま残す |
重要項目が抜けず、字数制限も守られた要約が得られる。 |
4. 業務別テンプレート集
4‑1. VS Code(コード生成)
|
1 2 3 4 5 |
# 目的: {タスク概要} # 制約: {使用言語・バージョン}, {ライブラリ制限} # 例示: {関数シグネチャとコメント例} |
活用例
タスク: Express.js のエラーハンドリングミドルウェア作成
プロンプト
|
1 2 3 4 5 6 7 |
# 目的: エラー情報を統一フォーマットでレスポンスするミドルウェアを実装 # 制約: Node.js 18、express@4.x、外部パッケージは使用しない # 例示: function errorHandler(err, req, res, next) { // ... } |
4‑2. Excel(Office Script)
|
1 2 3 4 5 6 7 |
# 目的: {セル範囲} のデータを {変換内容} に変換する関数を作成 # 制約: VBA は使用しない、Office Script (TypeScript) のみ # 例示: function transformData(inputRange: Range): string[] { // ... } |
4‑3. PowerPoint(スライド要約)
|
1 2 3 4 5 6 7 |
# 目的: 指定スライドの本文を 3 行以内で要点抽出し箇条書きにまとめる # 制約: 日本語、専門用語は省略せずそのまま使用 # 例示: - ビジネスインパクト - 主な課題 - 推奨アクション |
4‑4. Word(技術文書)
|
1 2 3 4 5 6 7 8 |
# 目的: {機能名} の設計仕様書(概要・入出力・例外処理)を作成 # 制約: Markdown 書式、コードブロックは triple backticks 使用 # 例示: ## 概要 ... ## 入力 ... |
これらのテンプレートはすべて「目的‑制約‑例示」構造に基づき、Copilot が期待通りの出力を行いやすく設計されています。
5. ChatGPT と Copilot の使い分け
| 項目 | ChatGPT | GitHub Copilot |
|---|---|---|
| 対話形式 | 任意の長文・多段階議論が得意 | エディタ内で即時補完に特化 |
| 適用シーン | 要件整理、設計ドキュメント作成、非構造化データ分析 | コードスニペット生成、テストコード自動作成、インラインコメント付与 |
| セキュリティ | プロンプト履歴が外部サーバーに残る可能性あり(設定で制御) | 組織向け GitHub Enterprise ではデータ保持ポリシーを個別設定可 |
実践例
1. 要件定義は ChatGPT に「新規ユーザー登録フローのステップを書いて」と依頼し、テキストベースでアウトプット取得。
2. その要件文を Copilot のプロンプト(目的‑制約‑例示)に貼り付けて、実装コードを生成する。
参考: GitHub が提供する「Prompt Engineering」ガイドライン【GitHub Docs】(https://docs.github.com/ja/copilot/concepts/prompting/prompt-engineering)。
6. セキュリティ対策と運用ルール
| リスク | 推奨対策 |
|---|---|
| プロンプトに機密情報(API キー・社内シークレット)が混入 | 除外ポリシーを制定し、必ず <TOKEN> などのプレースホルダーで置換。 |
| 生成コードに第三者ライセンスが混在する可能性 | 出力は必ず コードレビュー + 自動ライセンススキャン(FOSSA・ScanCode 等) を実施。 |
| プロンプト履歴の外部保存 | GitHub Enterprise Cloud の データ保持ポリシーを有効化し、ログ削除スケジュールを設定。 |
公式ドキュメントでも「機密情報はプロンプトに含めない」ことが明記されています【GitHub Docs】(https://docs.github.com/ja/copilot/concepts/prompting/prompt-engineering)。
7. チーム導入ステップと成果測定
- パイロット案件の選定
-
UI コンポーネントやユーティリティ関数など、頻繁にコード補完が必要な低リスク領域を対象。
-
標準テンプレート配布
-
4章で示した業務別テンプレートを Git リポジトリで管理し、VS Code の Prompt Files 機能で共有。
-
ハンズオン研修実施
-
「目的‑制約‑例示」の書き方とセキュリティガイドラインを実践的に学ぶ 2 時間のワークショップ。
-
KPI の設定
- コードレビュー時間削減率(導入前後で比較)
-
自動生成コードの受容率(PR 承認率)
-
フィードバックループ
- 月次でプロンプト改善例を社内 Wiki に掲載し、テンプレートはバージョン管理下で更新。
参考事例
ある国内 IT ベンダーでは、上記フローに沿った導入後 1 カ月で平均 10 % 前後の開発工数削減が報告されています(公開情報:GitHub Blog の「Copilot adoption」記事)【GitHub Blog】(https://github.blog/2023-09-21-how-teams-use-copilot/)。
8. まとめ
- 目的‑制約‑例示というシンプルな構造が、Copilot に対する最も効果的な指示となります。
- 冗長な「Point」表記は削除し、要点は見出しや箇条書きで整理しました。
- 公式ドキュメントへのリンクは Markdown の標準形式に統一し、出典不明の数値情報は削除または一般的な事例紹介に置き換えました。
- セキュリティ・運用ガイドラインと導入手順を追加することで、実務で即活用できる内容に仕上げています。
ぜひ本稿のテンプレートとベストプラクティスを社内に展開し、Copilot の効果的な活用を加速させてください。