本日はVisualStudioCodeの学習枠です。
VisualStudioCodeのGitHubCopilotのドキュメントを読みながら実際に操作を試してみました。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
Tips and tricks for Copilot in VS Code
以下のTips and tricks for Copilot in VS Codeドキュメントを日本語訳しながら実行時のキャプチャをしていきます。
code.visualstudio.com
適切なCopilotツールを選択する
タスクに応じて異なるCopilotツールから選択できます。
コード補完
開発の流れを妨げずにコーディングを効率化します。
エディターでコードを書く際にコードスニペット、変数名、関数名などのインライン提案を受け取ることができます。
チャット
デザインアイデアのブレインストーミングやコードの提案を受けるための継続的なチャット会話を実施します。
必要に応じてドメイン固有のチャット参加者を招集できます。コードベースに特定のコード提案を適用するかどうかを選択できます。
エージェントモード(Agent)
エージェント型のコーディングフローを開始することで高レベルの要件を実装します。
Copilotは必要なコードの変更とタスクを計画し実装するために複数のツールを自律的に呼び出します。
Copilotを命令ファイルでカスタマイズする
Copilotがコードを生成したり質問に回答したりする際、使用しているライブラリや変数の命名規則などコーディング習慣や好みに合わせて動作するようにします。
ただし常に十分な文脈を把握できていない場合もあります。例えば特定のフレームワークのバージョンを使用している場合、プロンプトに追加の文脈を提供する必要があります。
AIの応答を向上させるため、チームのコーディング習慣、ツールまたはプロジェクトの具体的な詳細に関する文脈情報を命令ファイルで提供できます。
これらの命令をチャットプロンプトに添付するか自動的に適用するように設定できます。
ワークスペースで命令ファイルを有効にするには以下の手順を実施します。
コマンドパレットから[Chat: New Instructions File]コマンドを実行します。

このコマンドは、.github/instructions フォルダー内に .instructions.md ファイルを作成します。
ファイルにMarkdown形式で例えば以下のようにインストラクションを追加します。
# Copilot用のカスタム設定 ## プロジェクトの背景 このプロジェクトはReactとNode.jsで構築されたウェブアプリケーションです。 ## インデント タブを使用し、スペースは使用しません。 ## コーディングスタイル 変数名にはcamelCaseを使用し、伝統的な関数式よりも矢印関数を優先します。 ## テスト ユニットテストにはJestを、エンドツーエンドテストにはPlaywrightを使用します。
オプションでapplyToメタデータフィールドにグロブパターンを追加して命令が適用されるファイルを指定できます。
--- applyTo: "**/*.ts" --- TypeScript ファイルのコーディングガイドライン。 ...
プロンプトエンジニアリング
効果的なプロンプトを使用することでCopilotの応答の品質を向上させることができます。
適切に作成されたプロンプトはCopilotが要件をより正確に理解し、より関連性の高いコードの提案を生成するのに役立ちます。
一般的な内容から始める
一般的な内容から始めてその後具体的な内容に絞ります。
計算機クラスを生成してください。 そこに加算、減算、乗算、除算、および階乗のメソッドを追加します。 外部ライブラリを使用せず、再帰も使用しないでください。
例を挙げる
あなたが望む一例を挙げてください。
文字列を受け取り、その中の母音の数を返す関数を生成してください。 例: findVowels(「hello」) は 2 を返します findVowels(「sky」) は 0 を返します
タスクを分割する
複雑なタスクをシンプルなタスクに分解します。
例えばCopilotに食事計画アプリを生成させる場合、タスクを小さなタスクに分解します。
材料のリストを受け取り、レシピのリストを返す関数を生成する。 レシピのリストを受け取り、買い物リストを返す関数を生成する。 レシピのリストを受け取り、週の食事計画を返す関数を生成する。
コンテキストを選択する
適切なコンテキストを提供してください。
例えばコードの選択部分、ファイル、ターミナルの出力などです。
例えば以下のように#codebase変数を使用して全体のコードベースを参照できます。
#codebase で使用されているデータベース接続文字列はどこにありますか?
繰り返して改善する
プロンプトを繰り返してください。
応答を精緻化または修正するためのフォローアップのプロンプトを提供してください。
「数値の階乗を計算する関数を作成してください。」 「再帰を使用せず、キャッシュを活用して最適化してください。」 「意味のある変数名を使用してください。」
チャット履歴を関連性のあるものに保つ
Copilotは会話の履歴を利用して文脈を提供します。関連性のない過去の質問や回答は履歴から削除してください。
または文脈を変更したい場合は新しいセッションを開始してください。