はじめに
これまでに引き続き、Github Copilotの機能について見ていきます。
今回は、Copilot custom instructionsについてまとめました。
なお、この記事ではJetBrainsのIDEを対象としているため、VS Codeやブラウザでは異なる場合があります。
Copilot custom instructionsとは
Copilot custom instructionsでは、Github Copilotの応答を自分やチームなどに合わせてカスタマイズすることができます。
使っているツールや要件などのコンテキストをCopilotに伝えることにより、Copilot ChatやCode reviewなどで与えた情報を踏まえて応答してくれます。
Copilotの応答をカスタマイズする
リポジトリ内にCustom instructionsファイルを配置することで、Copilotとやり取りする際にプロンプトに毎回コンテキストを渡す必要がなくなり、自動的にこの情報が追加されます。
このファイルには以下の2種類が存在します。
- Repository custom instructions
- Prompt files
Repository custom instructionsは、Copilotがリポジトリのコンテキストで作業する際に考慮する指示や設定などを記述できます。
Prompt filesは、共通のプロンプト指示や関連するコンテキストなどをMarkdown形式で保存し、Chatで再利用できます。
このファイルは、
*.prompt.md
の形式で名前を付ける必要があります。
これらの使い分けとしては、AIワークフローにコードベース全体のコンテキストを追加したい場合はRepository custom instructionsを用い、特定のチャットに指示を追加したい場合はPrompt filesを用います。
この2つの方法についてもっと詳しく見ていきます。
Repository custom instructionsについて
Repository custom instructionsでは、リポジトリ内に
.github/copilot-instructions.md
を追加し、そこに記述します。
このファイルに記述する内容は、プロンプトを補完するコンテキストや関連する情報を端的かつ完結した内容で記述することが望ましいようです。
ちなみに、Copilot code reviewでは、このファイルの最初から4000文字のみを読み取ります。これを超えた分についてはレビューに影響を与えません。
Custom instrucsionsでは、以下のようなユースケースが想定されます。
- テストコードの生成
- コードレビュー
- コミットメッセージの生成
テストコードの生成では、特定のテストフレームワークを指定するなどを記述します。
コードレビューでは、レビュー担当者にコード内の特定のエラーを探すようなどの指示を記述します。
コミットメッセージの生成では、フォーマットや含めるべき情報の種類などを記述します。
Prompt filesについて
Prompt filesでは、追加のコンテキストを含む再利用可能なプロンプト指示を作成し、それを共有できます。
Prompt filesはMarkdown形式で保存されます。
Prompt filesでは、以下のようなユースケースが想定されます。
- コード生成
- ドメインエキスパート
- チームコラボレーション
- オンボーディング
コード生成では、コンポーネント、テスト、移行用の再利用可能なプロンプトなどを作成します。
ドメインエキスパートでは、セキュリティ対策やコンプライアンスチェックなどの専門知識をプロンプトを通して共有します。
チームコラボレーションでは、仕様書、ドキュメントを参照したパターンやガイドラインなどを文書化します。
オンボーディングでは、複雑なプロセスやプロジェクト固有のパターン向けに段階的なガイドを作成します。
これらのファイルはワークスペースに複数配置することができます。
有効なcustom instructionsを書くには
custom instructionsを書くうえでの注意点としては、custom instructionsはすべてのチャットメッセージといっしょに送信されるので、リポジトリのコンテキストで行われるほとんどのリクエストに対して適用できる汎用的な指示である必要があります。
プロジェクトの性質などによって有効な内容は変わってきますが、一般的には以下のような内容を意識すると良いようです。
- プロジェクトの目的、目標、背景情報などの概要を説明する
- リポジトリ内のフォルダ構成や重要なディレクトリやファイルについて記載する
- コーディング規約、命名規則やベストプラクティスなどを明記する
- プロジェクトで使用されるツール、ライブラリ、フレームワーク等を記載する
さいごに
Copilot custom instructionsについてとまとめました。
実際にどのような記述をすればよいのか試行錯誤して行きたいと思います。