🧑‍✈️

Check![和訳]複数ファイル編集、コードレビュー、カスタムインストラクションなどVS Code GitHub Copilot 10月更新

2024/11/03に公開

こんにちは、@dz_ こと、大平かづみです。

GitHub Changelogの週刊キャッチアップのうち、この記事のボリュームがとても多かったので単独で記事にします。単に和訳したものですが、ご参考になればさいわいです。

https://github.blog/changelog/2024-10-29-multi-file-editing-code-review-custom-instructions-and-more-for-github-copilot-in-vs-code-october-release-v0-22

複数ファイルの編集、コードレビュー、カスタム インストラクション、他(VS CodeのGitHub Copilot 10月リリース(v0.22))

最新のVisual Studio Codeのリリースで、コーディングやデバッグ、テストの生成を合理化するよう設計されたGitHub Copilot Chatの一連の強化について見つけるでしょう。これらの機能は、Visual Studio Codeの最新バージョンでお試しいただけます。

multi-file editingでコードの編集セッションを開始する(プレビュー)

設定: github.copilot.chat.edits.enabled

multi-file editing(現在プレビュー)により、コードの変更における繰り返しの作業を素早くできるよう、AIによって強化されたコード編集セッションを開始できます。multi-file editingを使って、GitHub Copilotにワークスペースの複数のファイルにまたがってコードの変更を提案するよう指示を出します。これらの編集はエディタ内で直接適用され、周辺のコードの完全な文脈と共に、一ヶ所でそれらを素早くレビューできます。

multi-file editingは、複数ファイルにまたがる大きな変更の繰り返し作業にすごく向いています。1度の体験で、Copilot Chatとインライン チャットからの素早いフィードバックを一緒に一連の会話の流れとして実現されます。一方で複数ターンのチャットの会話をしながら、インラインのコードの提案も活用できます。

これらの手順でmulti-file editingを使い始められます:

  1. Chatのメニューから「Open Copilot Edits」を選択して編集セッションを開始する
  2. working set に関連するファイルを追加し、含めてほしいファイルをGitHub Copilotに指示する
  3. どう変更したいかをGitHub Copilotに指示するプロンプトを入力する。例えば、 Add a simple navigation bar to all pagesUse vitest instead of jestのように。

詳しくは、VS Codeのドキュメントのmulti-file editingをご参照ください。ぜひお試しいただき、issueでフィードバックをご提供ください!

新しいチャットの場所: Secondary Side Bar

GitHub Copilot Chatのビューの新しい既定の場所がSecondary Side Barになりました。Secondary Side Barを使うと、ファイル エクスプローラーやソース コントロールのような他のビューを表示したままで、いつでもチャットを開けます。これにより、VS Codeでより統合されたAIの体験を得られます。Command CenterのChatメニューを使って、チャットにすぐアクセスできます。

Command Centerの横にある新しいChatメニューの導入により、クリックするだけでSecondary Side Barでチャットが開きます。

Chatメニューでは、Copilot Chatの一般的なタスクへのアクセスが提供されます。新しい設定値 chat.commandCenter.enabled が追加され、このメニューを隠すこともできます。

注: もしすでにGitHub Copilotをインストールしている場合、Chatビューを古い位置に戻せるように、これまでのCopilot Chatの位置にビューが表示されます。

コード レビュー(Preview)

Visual Studio CodeのCopilotにより強化されたコード レビューで、AIにより強化されたフィードバックをすばやく得られ、コードを書いているときやプッシュ前のすべての変更に対してレビューを要求できます。Visual Studio Codeのコード レビューは現在プレビュー版です。ぜひお試しいただき、issueでフィードバックをご共有ください。

VS Codeでコード レビューを利用する方法は2通りあります:

  • 選択範囲をレビューさせる: すばやくレビューをさせるには、エディタのコードを選択し、コンテキスト メニューからCopilot > Review and Commentを選択するか、コマンド パレットからGitHub Copilot: Review and Commentコマンドを使用する。 (この機能はプレビュー。)
  • 変更をレビューさせる: コミットしてない変更のすべてを深くレビューさせるには、Source ControlビューのCopilot Code Reviewボタンを選択する。また、GitHub上のプルリクエストでも同様。(Copilotの利用者はウェイトリストに参加できる)

Copilotのフィードバックはエディタ内でコメントとしてコード行に付随して表示されます。コメントに操作可能なコードの提案が含まれる場合、適用できます。

詳細は、コード レビューのドキュメントをご参照ください。

GitHub Copilotの選択したコードのクイック レビューは、適切な文脈を与えることで、チームやプロジェクトの特定のプラクティスに一致するフィードバックを提供できます。カスタム レビュー インストラクションで洗濯範囲をレビューさせるには、それらの特定の要件をgithub.copilot.chat.reviewSelection.instructions設定から定義できます。コード生成やテスト生成のインストラクションと同じように、設定内に直接指示を定義するか、個別のファイルに書き出しそれを参照させられます。

次のコード スニペットはレビュー インストラクションの例です:

"github.copilot.chat.reviewSelection.instructions": [
  {
    "text": "Logging should be done with the Log4j ."
  },
  {
    "text": "Always use the Polly library for fault-handling."
  },
  {
    "file": "code-style.md" // import instructions from file `code-style.md`
  }
],

こちらはcode-style.mdファイルの内容の例です:

Private fields should start with an underscore.

A file can only contain one class declaration.

セマンティック検索で関連性による並び替え(実験的)

設定: github.copilot.chat.search.semanticTextResults

前回のマイルストーンとして、クエリに対して意味的に関連のある検索結果を得られるように、GitHub Copilotを使ったセマンティック検索が実行できる機能を導入しました。そして今、検索結果を関連性によって並び替えるよう改善しました。より関連性の高いスニペットから一致したキーワードが、全体的により関連性が高いとみなされます。

ファイルベースのカスタム インストラクションが既定で有効に(プレビュー)

設定: github.copilot.chat.codeGeneration.useInstructionFiles

新しく導入された.github/copilot-instructions.mdファイルで、ワークスペースやリポジトリに、GitHub Copilotに対するコードに特化した規則を記述しておけます。このリリースにより、VS Codeで設定が既定で有効になり、このファイルがワークスペースにあれば、チャットの会話は自動的に含んで会話します。_Used references_一覧でどのインストラクションがチャットの要求に追加されたか検証できます。詳しくは、インストラクションでCopilotをカスタマイズするをご参照ください。

Copilot Chatにおけるインテント検出

設定: chat.experimental.detectParticipant.enabled

GitHub Copilotは@workspaceのような組込みのチャット参加者をいくつか持っていて、Chatビューにコマンドも提供しています。以前は、明示的にチャット参加者やコマンドをチャット プロンプトで指定しなければなりませんでした。これを自然言語で簡単にするために、Copilot Chatが質問を適切な参加者やチャットコマンドに誘導できるようにしました。

自動的に選択された参加者が質問に対して適切でない場合、チャットの応答の上部にあるrerun withoutリンクを選択して、GitHub Copilotに質問を再送できます。

現在のエディタの文脈を制御する

Copilot Chatは、現在の選択箇所や現在見えているコードを自動的にコンテキストとしてチャットの要求に含めます。大規模言語モデル(LLMs)は、関連する文脈の一部かどうかを理解することが一般的に得意です。しかし、ときどき、現在のエディタに関してではない質問を問うとき、このコンテキストを含むことがモデルがどう質問を処理するかに影響するかもしれません。

チャットの入力欄に特別なアタッチメント制御を表示し、エディタのコンテキストに関するヒントを提示するようにしました。すなわち、エディタのコンテキストを含めるか否かを切替えられうようになりました。

エディタのコンテキストの挙動については変更はありません。アクティブなエディタで(コードが)選択されている場合、その選択範囲が含まれます。もしくは、スクロールされて表示されているコードが含まれます。また、クリップボタンを使ったりチャット プロンプトに#を入力したりして他のファイルやファイル全体を添付させることもできます。

対話式のワークスペース シンボル リンク

Copilot Chatの一般的な使い方は、ワークスペースでコードについて質問することで、例えば、/testsを使って選択したコードに対するユニットテストを生成したり、プロジェクトの特定のクラスや関数を探すよう@workspaceに尋ねたりです。このマイルストーンで、GitHub Copilotがチャットの応答で言及するworkspaceのシンボルに対する拡張リンクを追加しました。これらのシンボル リンクにより、Copilotの応答をより理解でき、そこで使われるシンボルからより多く知ることができます。

シンボルリンクは応答の中で小さなピルとして表示され、前回のマイルストーンで追加されたファイル リンクに似ています。シンボルについて詳しく確認するには、そのシンボルリンクを選択し、シンボルが定義された場所にジャンプします:

また、シンボルリンクにポインタをホバーすると、そのシンボルが定義されているファイルがどれか確認できます:

シンボルについてより詳しく確認したい場合は、シンボルリンクの上で右クリックすると、Go to ImplementationsGo to Referencesのようなコンテキストメニューを利用できます:

基本的なシンボルリンクは「Goto Definition」をサポートするどの言語でも動作します。「Go to Implementations」のようなより高度なIntelliSenseオプションは、対応した言語で利用できます。GitHub Copilotの応答でどのプログラミング限度でもしんぼるがサポートされるように、言語の拡張機能がインストールされているか確認してください。

ワークスペースのインデックス化

@workspaceは、現在のプロジェクトのコードについて質問できます。これはGitHubのコード検索やVS Codeが構築したローカルのインデックスを利用して実装されています。このマイルストーンで、いくつかのUI要素が追加され、このワークスペースのインデックスがどのように使われているかを理解できるようになりました。

まずは、新しいGitHub Copilot: Build Local Workspace indexコマンドにより、現在のワークスペースのインデックス化を明示的に行えます。通常、このインデックス化は、初めて@workspaceに質問したときに自動的に実行されます。新しいコマンドで、いつでもインデックス化を実行できます。このコマンドは現在は2000ファイル以上のより大きなワークスペースもインデックス化できます(node_modulesoutディレクトリのような無視したファイルは含みません)。

インデックスが構築されている途中は、ステータスバーに進捗を示す項目を表示します:

数百のファイルを含むワークスペースをインデックス化するには少し時間がかかります。もしインデックスが構築されている最中に@workspaceに質問したい場合、待つ代わりに、GitHub Copilotは、構築にそれほど時間がかからないよりシンプルなローカルのインデックスを利用してすぐに返答を返します。そのときは、応答に警告が表示されます:

よりシンプルなローカルのインデックスを使うことになったとしても、Copilotはこの場合において質問に答えられることにご留意ください。これはしばしば起こることであり、より複雑なインデックスが構築されれば、不明確だったり複雑な質問に対しても回答できるようになります。ワークスペースがGitHubリポジトリに保存荒れている場合、質問に答えるために代わりにGitHubのコード検索を使う場合があります。この場合、GitHub Copilotはローカルのインデックスではなく、コード検索を利用します。

Problem hoverにおけるCopilotを用いた修正アクション

Problem hoverに、GitHub Copilotを用いて問題を解決するアクションが含まれるようになりました。修正可能で、Copilotにより生成された修正がある問題に対してこのアクションを修正できます。

Chatの設定の更新

GitHub Copilotに新しい機能を追加し続けるために、何が新しくて利用できる準備が整っているかを確認しやすくしたいです。そのため、設定を再構築し、previewとexperimentalである設定のタグ付けのサポートを追加しました。

新しい機能は、設定エディタで次のように表示される、早期アクセス段階を経る場合があります:

Experimental: この設定は、開発中で不安定な新しい機能を制御します。変更されたり削除される場合があります。

Preview: この設定は、改良中だが利用できる準備が整った新しい機能を制御します。フィードバックを歓迎します。

設定エディタで@tag:previewを使ってGitHub Copilotのプレビュー機能のすべてを、@tag:experimentalを使って実験的な機能のすべてを確認できます。

専用のコミュニティ ディスカッションで、これらについてディスカッションしましょう

Discussion