Contents
Copilot プロンプトとは何か – 基本概念と従来のコード補完との違い
Copilot が提供する 「プロンプト」 機能は、自然言語でタスクを指示するだけで高度なコード生成が可能になる新しいインターフェイスです。従来のシンタックス補完と比べて、目的・条件・期待出力 を明示できる点が最大の特徴です。本セクションではプロンプトの基本概念と、従来のコード補完との違いを整理します。
プロンプトの特徴
自然言語で「何をしたいか」を記述すると、背後にある大規模言語モデルが文脈全体を理解し、数行だけでなく複数ファイルに跨るロジックやテストコードまで を生成します。
従来のコード補完との比較
| 項目 | 伝統的な補完 | Copilot プロンプト |
|---|---|---|
| 入力情報 | 直前数行のコードのみ | 自然言語で記述したタスク全体 |
| 出力範囲 | 行単位・文法的続き | 関数全体、クラス、テスト、ドキュメントまで |
| カスタマイズ性 | キー入力に依存 | 条件や制約を自由に追加可能 |
実例紹介
Qiita に掲載された「いまさら聞けない GitHub Copilot」では、以下のようなコメントだけで二次元配列の転置関数が自動生成される様子が紹介されています。
|
1 2 |
// TODO: 2次元配列の転置を実装して |
この例は「目的だけを書けばコード全体が出てくる」ことを端的に示しています。
効果的なプロンプト作成の黄金ルール
短く・一文で目的を伝えるだけで、Copilot の生成精度は格段に向上します。本章では具体的な文字数指標とチェックリストを交えて、初心者が陥りやすい落とし穴とその回避策を解説します。
短く一文で伝える重要性
プロンプトは 60 文字以内・1 文 にまとめることが推奨されています。長文になるほどモデルの解釈幅が広がり、期待外れのコードが出やすくなるためです。
文字数と構造の目安
| 要素 | 推奨記述例 |
|---|---|
| タスク概要 | Python で CSV を読み込み DataFrame に変換してください。 |
| 入力・出力 | 必要最小限の型情報やファイル名を付記 |
| 制約条件 | 処理時間は O(n) に抑えてください。(必要な場合のみ) |
具体例とチェックリスト
以下の表は NG例 とそれに対する 改善ポイント を示しています。表の前には目的が何であるかを簡潔に述べています。
NG 例と改善ポイント – プロンプトの書き方を比較
| NG例 | 改善ポイント |
|---|---|
| 「Python でデータフレームを操作したいので、まずは CSV を読み込んで前処理し、次に集計してグラフ化するコードを書いてください。」 | タスクが多すぎる → 目的だけ(例:CSV を DataFrame に変換してください。) |
| 「関数を書いて」 | 何の関数か不明確 → 対象と機能を明示(例:文字列配列を逆順にソートする JavaScript 関数を作成してください。) |
プロンプト作成チェックリスト
- 目的は 1 文にまとめたか
- 必須の入力・出力だけを書いたか
- 曖昧な表現(「できるだけ」等)は除外したか
このチェックリストをプロンプト作成時に毎回確認すれば、失敗確率は大幅に低減します。
Custom Agent の概要と設定・スキル追加手順
Custom Agent は Copilot の Agent モード を組織やプロジェクト単位でカスタマイズできる機能です。プロンプトだけでなく、外部ツール(Skills)を組み合わせて社内開発フローに最適化できます。本節ではエージェントの基本概念と実装手順を具体的に示します。
Custom Agent とは
Custom Agent は「タスク固有のプロンプト + 補助ツール」という構成で、例えばコードレビューやデータ整形といった定型作業を自動化できます。公式ドキュメントは GitHub Docs – Custom Agents に詳述されています。
エージェント作成フロー
- エージェント定義ファイル(
copilot-agent.yaml) を用意し、名前・説明・デフォルトプロンプトを記述。 - VS Code の設定に
github.copilot.agent.enabled: trueを追加してエージェントを有効化。 - Copilot Chat で
@my-agentと呼び出し、期待通りに動作するかテスト。
|
1 2 3 4 5 6 |
# copilot-agent.yaml の例 name: code-review-agent description: プルリクエストの変更点要約と潜在バグ指摘を行うエージェント default_prompt: | 以下の差分を分析し、レビューコメントを作成してください。 |
スキル(ツール)追加方法
| 手順 | コマンド・設定例 |
|---|---|
| Skill 定義 JSON 作成 | format-json.json に下記を保存json{ "name": "format-json", "description": "JSON を整形して返す", "input_schema": { "type":"object","properties":{"raw":{"type":"string"}}}, "command": "jq '.'" } |
| Skill デプロイ | copilot agent skill add ./format-json.json |
| エージェント設定へ組込 | agent.yaml の skills: 配列に "format-json" を追記 |
| 動作確認 | VS Code で @code-review-agent format-json {"raw":"{\\\"a\\\":1}"} と入力し、整形結果が返るかチェック |
実践例 – コードレビューエージェント
2024 年に MoneyForward が公開した記事 Copilot でコードレビュー自動化を実現する では、上記手順で「コードレビュー」スキルを組み込んだエージェントがプルリクエストコメントを自動生成する様子が紹介されています。
実践的なプロンプト例集 – 5〜7 パターン
以下では 「目的・具体指示・期待出力」 の3要素を必ず含めた実用的なプロンプトを提示します。各例はすぐに自分の開発タスクへ置き換えて利用できます。
1. 関数生成(入出力仕様指定)
目的とシグネチャだけを書けば、関数本体が自動で完成します。
|
1 2 |
Python で、整数リストを受け取り合計と平均を返す関数 `calc_stats` を作成してください。引数は List[int]、戻り値は Tuple[float, float]。 |
生成コード(抜粋)
|
1 2 3 4 5 6 7 |
from typing import List, Tuple def calc_stats(nums: List[int]) -> Tuple[float, float]: total = sum(nums) avg = total / len(nums) if nums else 0.0 return total, avg |
2. リファクタリング指示
古い構文を最新の ES6 スタイルへ変換する例です。
|
1 2 3 |
以下の JavaScript 関数を ES6 のアロー関数と const/let に置き換えてください。 function add(a, b) { return a + b; } |
生成コード
|
1 2 |
const add = (a, b) => a + b; |
3. テストコード自動生成
既存関数に対する pytest のテストケースを作ります。
|
1 2 |
上記の `calc_stats` 関数に対する pytest のテストケースを 3 パターン作成してください。正常系と空リストの境界条件を含めること。 |
生成コード抜粋
|
1 2 3 4 5 6 7 8 9 |
import pytest from mymodule import calc_stats def test_calc_stats_normal(): assert calc_stats([1, 2, 3]) == (6, 2.0) def test_calc_stats_empty(): assert calc_stats([]) == (0, 0.0) |
4. コメント・ドキュメンテーション自動作成
関数に日本語の docstring を付与します。
|
1 2 3 |
次の関数に docstring を追加してください。説明は日本語で、引数と戻り値を `:param` と `:return:` 形式で記述。 def fetch_user(id): ... |
5. エラーハンドリングテンプレート
例外処理の雛形を自動生成します。
|
1 2 3 |
以下の Python コードに try/except を追加し、FileNotFoundError の場合はログに警告を出すようにしてください。 with open('data.csv') as f: ... |
6. データ変換スクリプト作成
CSV の日付列を ISO8601 に変換するバッチ処理です。
|
1 2 |
CSV ファイルの `date` 列を ISO8601 形式 (YYYY-MM-DD) に変換し、結果を新しい CSV として保存する Python スクリプトを書いてください。 |
7. カスタム Agent 活用例
エージェント経由でコードレビューコメントを生成します。
|
1 2 |
@code-review-agent 「この Pull Request の変更点を要約し、潜在的なバグを指摘してください」 |
期待結果は差分解析とリスク抽出が自動で行われたレビューコメントです。
失敗例と改善ポイント、VS Code/CLI での入力方法、効果測定チェックリスト
典型的な失敗パターン
プロンプト作成時に陥りやすい問題を整理し、具体的な改善策を示します。
| パターン | 問題点 | 改善策 |
|---|---|---|
| 長すぎる:複数タスクを一文に詰め込む | モデルがどこから手を付ければ良いか分散し、生成品質が低下する | タスクは 1 つずつ別プロンプトで指示 |
| 曖昧:「できるだけ高速に」など具体性欠如 | 出力が最適化方向でブレる | 数値目標や計算量制約(例:O(n))を明記 |
| コンテキスト不足:型情報・変数名が省略 | 生成コードが型エラーになる | 必要なシグネチャやサンプルデータを添える |
VS Code でのインラインプロンプト入力手順
- コマンドパレット (
Ctrl+Shift+P) → 「Copilot: Ask Copilot」 - 表示された入力欄に短いプロンプトを書き込む(例:
Python で CSV を DataFrame に変換してください。) Enterキーで実行し、生成結果がインラインに挿入される
設定をカスタマイズすれば提案速度や表示形式を調整できます(公式ガイドは GitHub Docs – Copilot settings に掲載)。
|
1 2 3 4 5 6 7 |
// .vscode/settings.json の例 { "github.copilot.enable": true, "github.copilot.inlineSuggest.enabled": true, "github.copilot.suggestionsDelay": 200 } |
CLI(copilot-cli)での利用方法と設定項目
| 手順 | コマンド例 |
|---|---|
| インストール | npm install -g @github/copilot-cli |
| 認証 | copilot auth login |
| プロンプト実行 | copilot chat "Python でリストの重複を除去する関数を書いて" |
| エージェント有効化 | ~/.config/copilot/config.json に以下追記{ "agent": { "enabled": true, "default": "my-agent" }, "skills": ["format-json"] } |
CLI では VS Code が利用できない環境でも同様のプロンプト生成が可能です(詳細は GitHub Docs – copilot-cli)。
生成結果を検証するチェックリスト
| 項目 | 確認ポイント |
|---|---|
| 正確性 | 要件通りのロジックか、テストでカバレッジは十分か |
| 可読性 | 命名規則・インデントがプロジェクト基準に合致しているか |
| パフォーマンス | 計算量やメモリ使用が期待範囲内か |
| セキュリティ | 入力バリデーション・例外処理が抜けていないか |
検証後は 「不足した点」 をプロンプトに付加して再生成し、フィードバックループを回すことで精度が向上します。
まとめと次のアクション
- Copilot プロンプト は自然言語だけで高度なコード生成を実現する新しい開発支援手段です。
- 効果的なプロンプトは 「短く・一文で・具体的」 にまとめ、チェックリストで品質を担保します。
- Custom Agent とスキル追加 により、組織固有のワークフロー(コードレビュー自動化やデータ整形など)へ深く統合できます。
- 本稿で紹介した 5〜7 の実践例 と失敗パターンを踏まえ、まずは VS Code か CLI で 1 つのタスクに対してプロンプトを書き出すことから始めてください。
- 生成結果は 正確性・可読性・パフォーマンス・セキュリティ の観点で検証し、改善ポイントを次回のプロンプトに反映させるサイクルを習慣化すれば、開発速度とコード品質が同時に向上します。
今すぐできること
1. VS Code の設定ファイルに Copilot 用オプションを追加
2.copilot-agent.yamlを作成し、シンプルな「TODO コメント」プロンプトで動作確認
3. 本稿の 関数生成例(calc_stats)を自分のリポジトリで実行し、テストを書いてみる
これらを順にこなすことで、Copilot の潜在能力を最大限に引き出す環境が整います。さあ、今日から 「自然言語でコードを書く」 新しい開発体験を始めましょう。