VS Codeのエージェントモードを拡張するには、を試してください!

必要なのはコンテキストだけ: カスタムインストラクションで AI の結果を向上させる

2025年3月26日 Rob Conery (@robconery.com)、Burke Holland (@burkeholland) 著

今月初め、私たちは Visual Studio Code におけるカスタムインストラクションの一般提供を発表しました。カスタムインストラクションは、チームのワークフロー、特定のスタイル設定、モデルが知らない可能性のあるライブラリなど、特定のコンテキストを Copilot に与えるための方法です。

この記事では、カスタムインストラクションとは何か、今日から GitHub Copilot の結果を劇的に改善するためにそれらをどのように使用できるか、そして今日試すことができる「プロンプトファイル」と呼ばれる新しいプレビュー機能についても詳しく掘り下げていきます。

シンプルな Markdown ファイルで、より短いプロンプト、より良い結果を

GitHub Copilot を使用すると開発プロセスを大幅にスピードアップできますが、効果的なプロンプトの作成には学習曲線があります。望む答えを得るためには数回の試行が必要になることがあり、通常は質問やプロンプトを言い換えることになります。それでも、Copilot はあなたのワークフローを高速化します!

しかし、GitHub Copilot を自分のニーズに合わせて「調整」できることをご存知でしたか?シンプルな Markdown ファイルを使用することで、Copilot があなたのプロジェクトをよりよく理解するのに役立つ特定の指示を提供できます。この記事では、VS Code で新しくリリースされた機能であるカスタムインストラクションの作成と使用のプロセスを順を追って説明します。

これを試してみてください: プロジェクトに .github/copilot-instructions.md という名前のファイルを作成します。このファイルには、Copilot があなたのプロジェクトをよりよく理解するのに役立つ指示が含まれます。これは Copilot によって自動的に読み込まれるため、機能させるために特別な操作は必要ありません。

Screenshot showing the Explorer view in VS Code, highlighting the  file. The file is still empty.

ファイルにこれらの指示を追加する

# Copilot Instructions

This project is a web application that allows users to create and manage tasks. The application is built using React and Node.js, and it uses MongoDB as the database.

## Coding Standards

- Use camelCase for variable and function names.
- Use PascalCase for component names.
- Use single quotes for strings.
- Use 2 spaces for indentation.
- Use arrow functions for callbacks.
- Use async/await for asynchronous code.
- Use const for constants and let for variables that will be reassigned.
- Use destructuring for objects and arrays.
- Use template literals for strings that contain variables.
- Use the latest JavaScript features (ES6+) where possible.

タイトルは厳密には必要ではありませんが、ファイルの目的を明確にするのに役立ちます。残りの内容は、Copilot があなたのプロジェクトをよりよく理解するのに役立つ一連の指示です。これらの指示は、プロジェクトのニーズに合わせてカスタマイズできます。

次に、チャットビューを開き、「tail recursion」のような非常に簡潔なコマンドでプロンプトを入力します。「JavaScript で末尾再帰を行うにはどうすればいいですか」などと尋ねる必要はありません。ただ「tail recursion」と入力して Enter を押してください。Copilot がプロジェクトのコンテキストを理解し、関連性の高い回答を提供することに気づくでしょう。

Screenshot that shows the Copilot response for "tail recursion" in the Chat view.

Copilot が、はるかに短いプロンプトを使用したにもかかわらず、期待した形式(2つのスペース、キャメルケースなど)で、より詳細な回答を提供したことに注目してください。

これがカスタムインストラクションを使用する力です!しかし、できることはまだまだたくさんあります…

すべてをカスタマイズ!

GitHub Copilot は、コミットメッセージの生成、選択したコードのレビュー、さらにはテストの生成など、多くの素晴らしい機能を VS Code に追加します!

これらはすべて便利ですが、おそらくあなたはこれらのことを行う独自の方法を持っているでしょう。良いニュースは、ワークスペースのいくつかの設定を上書きすることで、それらをパーソナライズできることです。

これを試してみてください: コマンドパレット (⇧⌘P (Windows、Linux では Ctrl+Shift+P)) を開き、「workspace settings」と入力します。「Preferences: Open Workspace Settings (JSON)」というメニューオプションが表示されるはずです。そのオプションを選択し、ワークスペースに次の設定を追加します。

{
  "github.copilot.chat.commitMessageGeneration.instructions": [
    {
      "text": "Be extremely detailed with the file changes and the reason for the change. Use lots of emojis."
    }
  ]
}

settings.json ファイルを保存して閉じます。アクティビティバーのソース管理アイコンに、ファイルが変更されたことが示されるはずです。Git リポジトリのないテストディレクトリで作業している場合は、ソース管理ビューから直接作成できます。「リポジトリを初期化する」ボタンを選択し、指示に従ってください。

ここからが楽しいところです: ソース管理ビューを開き、コミットメッセージ入力フィールドのキラキラアイコンを選択します。これにより、Copilot にコミットメッセージを生成するように指示します。非常に詳細で絵文字を多用したコミットメッセージが生成されることに注目してください!

Screenshot that shows the Source Control view, showing a colorful commit message for the latest commit.

settings.json ファイルの指示をコメントアウトして、再度コミットメッセージを生成してみてください。絵文字を使用しない、はるかに詳細でないコミットメッセージが表示されるはずです。

優れた詳細なコミットメッセージを書くことは、習得に時間がかかるスキルです。しかし、Copilot を使えば、多くの時間を節約し、より良いメッセージを生み出すことができます。

カスタムインストラクションを最大限に活用する

コーディング標準が Markdown 以外の異なるフォーマットの別々のファイルにあるかもしれません。JavaScript 用、Python 用、Go 用のファイルがあるかもしれません。また、データベースの操作方法に関する標準(使用するデータ型、命名規則、接続文字列の処理など)もあるかもしれません。

これらすべてを1つのファイルにまとめる必要はありません。それらを別々に保ちながら、Copilot を使ってそれらすべてを支援させることができます!

試してみましょう!.vscode/settings.json ファイル(ワークスペース設定)を開き、次の設定を追加します。

{
  "github.copilot.chat.codeGeneration.instructions": [
    {
      "file": "./docs/javascript-styles.md"
    },
    {
      "file": "./docs/database-styles.md"
    }
  ]
}

これは、Copilot に docs ディレクトリにある javascript-styles.mddatabase-styles.md の2つのファイルを探すように指示しています。好きなだけファイルを追加でき、Copilot は指定した順序でそれらを探します。

Screenshot that shows the Explorer view, highlighting the two files in the  folder and showing the custom instructions in the  file that reference these docs files.

ここには、現在取り組んでいるスプリントの仕様など、好きなファイルを追加できます。カスタムインストラクションとして Gherkin スペックを追加している人さえ見かけました!

試してみてください!

モデルのトーンを変更する

モデルは過度に丁寧になりがちです。頻繁に謝罪し、何かが間違っていると指摘されても、自分自身や下した決定をほとんど擁護しません。仕事を進めようとしているとき、これは煩わしいことがあります。モデルの過度に親切なトーンは、どのように応答してほしいかについてのいくつかの指示で上書きできます。

- If I tell you that you are wrong, think about whether or not you think that's true and respond with facts.
- Avoid apologizing or making conciliatory statements.
- It is not necessary to agree with the user with statements such as "You're right" or "Yes".
- Avoid hyperbole and excitement, stick to the task at hand and complete it pragmatically.

モデルには何をしないかではなく、何をするべきかを知る必要があるため、常に肯定的な指示を与えることが重要です。「〜しないで」と言う代わりに、「〜を避けて」と言うことができます。

実験して楽しんでください!あるプログラマーは、俳句でテストを生成することでテストスイートを活気づけるのが好きだと報告しました。これは少し極端に思えるかもしれませんが、趣味のプロジェクトで作業しているなら、なぜダメなのでしょうか?次のような指示を追加できます。

- Generate tests in haiku format.
- Use 5-7-5 syllable structure.
- Use nature themes and imagery.

もう一つ…

GitHub Copilot はコードファイルをカスタムインストラクションとして理解することもできます!例えば、SQL ファイルがある場合、それを設定に追加すると、Copilot はデータアクセスコードの生成を支援するためにそれを使用します。

お気に入りの特定のデータアクセスツールがある場合、プロジェクトにサンプルを追加すれば、Copilot はデータアクセスコードを生成する際にそれを使用します。

試してみてください!これは、私たちのチームメンバーの1人が PostgreSQL データベース用の Sequelize モデル (Node.js ORM) を生成するために使用した例です。

//Template for a Sequelize model
const { DataTypes, Model } = require('sequelize');
class User extends Model {
  //static or factory methods
  //instance methods
}
const init = function(sequelize){
  User.init({
    //schema goes here
  }, {
    hooks: {},
    tableName: "users"
    underscored: true,
    sequelize
  })
}

exports.createUser = function(sequelize){
  init(sequelize);
  return User;
}

このファイルを設定で参照すると、GitHub Copilot はこのテンプレートを SQL ファイルとともに使用して、プロジェクトのモデルを自動的に生成します。これは編集モードまたは質問モードのどちらでも実行できます。単に「プロジェクトのデータアクセスを生成して」というプロンプトを使用するだけで、あっという間に!魔法のようです!

プロンプトファイルの紹介

プロンプトファイルを使用すると、自分自身やチームのために再利用可能なプロンプトを作成できます。これにより、一貫性を強制しつつ、面倒になりがちなプロンプト入力を減らすことができます。

たとえば、データベーススキーマに基づいてインターフェースを作成する再利用可能なプロンプトを作成したいとします。データベーススキーマを含むプロンプトファイルを作成できます。Copilot は喜んでそのための SQL スクリプトを生成します。

プロンプトファイルは .github/prompts ディレクトリに配置され、*.prompt.md という形式の名前を持つ単なる Markdown ファイルです。

例えば、データベースの説明を含む .github/prompts/database_users.prompt.md があるかもしれません。

# User Authentication

Our application will have `users` with the following information:

- The standard user information, including: `name`, `email` (unique).
- A link for a "magic" login, which will be a `GUID` as well as the expiration date for the link.
- Social login account IDs for Microsoft, GitHub, and Google.
- The timestamp of the last login.
- The timestamp for when the user was created.

次に、インターフェースを生成するための指示を含む generate-interface.prompt.md という別のプロンプトファイルを作成できます。プロンプトファイルは互いに参照できるため、データベーススキーマを単純な Markdown リンクとしてこのプロンプトファイルに渡すことができます。

Generate a TypeScript interface for the table specified by the user. Refer to the [user schema](database_users.prompt.md).

チャットでこれらのプロンプトファイルを使用するには、添付ボタン(ペーパークリップ)を使用するか、 を使用します。メニューから Prompts を選択し、使用したいプロンプトファイルを選択します。generate-interface.prompt.md ファイルを使用すると、自動的に database_users.prompt.md ファイルが取り込まれることに注目してください。

Animated gif showing how to use prompt files in chat.

まとめ

VS Code はカスタマイズ可能なアシスタントであり、適切に設定すれば、チームのワークフローの不可欠な部分になることができます。カスタムインストラクションにより、制御は開発者の手に委ねられます。

ハッピーコーディング!