GitHub Copilot をより効果的に活用するためのヒントを整理
内容は以下公式ドキュメントから、特に重要と思った部分を抜粋:
- Prompt engineering for Copilot Chat
- Tips and tricks for Copilot in VS Code
- Best practices for using GitHub Copilot
活用ヒント
1. Copilotの得意・不得意を理解する
得意なこと
- テストコードと繰り返し処理の実装
- デバッグと構文エラーの修正
- コードの説明とコメント作成
- 正規表現の生成
不得意なこと
- コーディング・技術以外のトピックへの対応
- 完全に専門知識の代替となること(最終的な判断はユーザーが行う)
2. 効果的なプロンプトの作成
プロンプト作成のコツ
- 段階的に詳細化: 最初は一般的に、その後具体的に
- 複雑なタスクを分割: 大きなタスクを小さなタスクに分けて依頼
- 具体例を提供: 期待する入力・出力の例を示す
-
適切なコンテキストを提供:
#codebase
、#<ファイル名>
などの変数を活用
例
// 悪い例
電卓アプリを作って
// 良い例
Calculator クラスを生成してください。
加算、減算、乗算、除算、階乗のメソッドを追加してください。
外部ライブラリは使用せず、再帰処理も使わないでください。
3. コンテキストの最適化
コードインライン補完を改善する方法
- 関連ファイルを開く: Copilotは開いているファイルからコンテキストを読み取る
- トップレベルコメント: ファイルの目的を明確にするコメントを記述
- 適切なimport文: 使用したいライブラリ・フレームワークを明示
-
意味のある関数名:
fetchData()
よりfetchUserProfileData()
のような具体的な名前 - サンプルコード: 期待するコードスタイルの例を一時的に配置
チャットでのコンテキスト活用
-
チャット参加者:
@workspace
、@vscode
などを使用 -
スラッシュコマンド:
/explain
、/fix
、/tests
などで意図を明確化 -
チャット変数:
#<ファイル名>
、#<フォルダ名>
でファイル参照 - コンテキストの添付: ファイル、フォルダ、選択範囲をドラッグ&ドロップ
4. コードの品質管理
一貫性の維持
- 高い品質基準を保つ: Copilotは既存コードのパターンに影響される
- 「ガベージイン、ガベージアウト」: 低品質なコードは低品質な提案を生む
- 必要に応じて無効化: プロトタイピング時などは一時的に補完を無効にする
提案の検証
- コードを理解してから実装: 提案されたコードの動作を確認
- セキュリティと保守性を考慮: 機能だけでなく、長期的な視点で評価
- 自動テストとツール: リンティング、コードスキャンなどで品質をチェック
5. カスタマイズとパーソナライゼーション
Instructions ファイル
-
.github/instructions/.instructions.md
でコーディング規約を定義 - プロジェクト固有の要件やスタイルガイドを記述
- チーム全体で共有可能
再利用可能なプロンプト
-
.github/prompts/
フォルダに.prompt.md
ファイルを作成 - 特定のタスク向けの定型プロンプトを保存
-
/プロンプト名
で呼び出し可能
上記ヒントを押さえた活用イメージ
1. プロジェクト準備フェーズ
カスタマイズ設定
-
.github/instructions/.instructions.md
でコーディング規約を定義 -
.github/prompts/
フォルダに頻用プロンプトを準備 - チーム共通の開発標準を確立
コンテキスト整備
- 関連するファイル(設計書、既存コード)を配置
- プロジェクトのimport文やライブラリ構成を明確化
2. 機能開発フェーズ
段階的な実装アプローチ
- 複雑な要求は小さなタスクに分割して再依頼
// ステップ1: 高レベルな設計をChatで相談
@workspace この機能の実装方針について相談したいです。
UserServiceクラスにログイン機能を追加したいのですが、
既存のコードと整合性を保ちながら実装する方法を教えてください。
// ステップ2: 具体的な実装をプロンプトで依頼
UserServiceクラスにloginメソッドを追加してください。
- 引数: email(string), password(string)
- 戻り値: Promise<{success: boolean, token?: string, error?: string}>
- バリデーション: メール形式チェック、パスワード長チェック
- 既存のauthenticateメソッドを内部で使用
コード品質の確保
- インライン補完で基本構造を生成
- 意味のある関数名・変数名を使用(
fetchUserProfileData
など) - トップレベルコメントでファイルの目的を明記
- プロジェクト固有のパターンが蓄積されるよう意識的に品質を維持
3. テスト・デバッグフェーズ
テスト作成
/tests #UserService.js
上記ファイルのloginメソッドに対する単体テストを作成してください。
正常系、異常系(不正なメール、短いパスワード)のテストケースを含めてください。
デバッグ支援
/fix
このエラーの原因と修正方法を教えてください:
TypeError: Cannot read property 'token' of undefined
4. コードレビュー・リファクタリングフェーズ
コード改善
- 提案されたコードの動作を理解してから採用
- セキュリティと保守性の観点で評価
- 必要に応じてリンティングツールで品質チェック
ドキュメント作成
/explain #UserService.js
このクラスの役割と主要メソッドについて、
新しいチームメンバー向けのドキュメントを作成してください。