VS Code でのチャットの使用
Visual Studio Code でチャットを使用すると、自然言語を使ってコードベースについて質問したり、プロジェクト全体で編集したりできます。チャットは、質問から複数ファイルの編集、自律的なコーディングワークフローの開始まで、ユースケースに合わせて最適化されたさまざまなモードで動作できます。
VS Code のチャットは、次のような場合に役立ちます:
- コードを理解する - 「この認証ミドルウェアがどのように機能するか説明してください」
- 問題をデバッグする - 「このループで Null 参照が発生するのはなぜですか?」
- コードの提案を得る - 「Python で二分探索木を実装する方法を教えてください」
- パフォーマンスを最適化する - 「このデータベースクエリの効率を改善するのを手伝ってください」
- ベストプラクティスを学ぶ - 「非同期関数でエラーを処理する推奨方法は何ですか?」
- VS Code のヒントを得る - 「キーボードショートカットをカスタマイズするにはどうすればよいですか?」
前提条件
- Visual Studio Code の最新バージョンをインストールします
- Copilotへのアクセス。Copilot無料プランでは、月ごとの補完とチャットインタラクションの制限が適用されます。
VS Code のチャットにアクセスする
VS Code では、特定のユースケースとタスクに最適化されたさまざまな方法で自然言語チャットを使用できます。
エクスペリエンス | ユースケース | ユーザーエクスペリエンス |
---|---|---|
チャットビュー ⌃⌘I (Windows、Linux Ctrl+Alt+I) |
サイドの専用ビューで、継続的なマルチターンチャット会話を行います。異なるチャットモードを切り替えて、質問したり、ファイル間でコード編集を行ったり、自律的なコーディングワークフローを開始したりできます。 | ![]() |
インラインチャット ⌘I (Windows、Linux Ctrl+I) |
エディター (エディターインラインチャット) または統合ターミナル (ターミナルインラインチャット) から直接チャット会話を開始し、その場で提案を得ます。 | ![]() |
クイックチャット ⇧⌥⌘L (Windows、Linux Ctrl+Shift+Alt+L) |
簡単な質問をして、すぐに作業に戻ります。 | ![]() |
各チャットエクスペリエンスには、対応するキーボードショートカットを使用するか、VS Code のタイトルバーにある Copilot メニューからアクセスできます。
チャットモードを選択する
チャットモードは、VS Code のチャットを特定のタスク (質問、コード編集、自律的なコーディングタスクの実行など) に合わせてカスタマイズするための事前定義された構成です。VS Code には、Ask (質問)、Edit (編集)、Agent (エージェント) の 3 つの組み込みチャットモードが付属しています。新しい機能の計画や実装オプションの調査など、特定のシナリオに合わせて独自のチャットモードを定義することもできます。
チャットモードを切り替えるには、チャットビューを開き (⌃⌘I (Windows、Linux Ctrl+Alt+I))、チャットモードのドロップダウンリストから目的のモードを選択します。
VS Code のチャットモードについて詳しくはこちらをご覧ください。
言語モデルを変更する
VS Code は、選択できるさまざまな組み込み言語モデルを提供しています。一部のモデルは高速なコーディングタスクに最適化されており、他のモデルはより遅い計画や推論タスクに適しています。チャット入力フィールドのモデルピッカーを使用して、Copilot が応答を生成するために使用するモデルを変更します。
他のモデルプロバイダーからモデルを追加し (プレビュー)、チャットで使用することもできます。他のプロバイダーのモデルを使用する方法の詳細をご覧ください。
利用可能なモデルのリストは、Copilot サブスクリプションによって異なり、時間とともに変更される場合があります。利用可能な言語モデルの詳細については、GitHub Copilot のドキュメントを参照してください。
チャットプロンプトを送信する
VS Code でチャットリクエストを行うには、チャット入力ボックスに自然言語のプロンプトを入力します。チャットモードに応じて、コードベースに関する質問をしたり、コードの提案を得たり、プロジェクト内の複数のファイルにわたってコード編集を行ったり、特殊なツールを呼び出したりできます。
チャットの応答には、Markdown テキスト、コードブロック、ボタン、ファイルツリーなどのリッチコンテンツの組み合わせが含まれる場合があります。
より関連性の高い応答を得たり、ワークスペース内の特定のファイルやアーティファクト (テストの失敗やターミナル出力など) を参照するには、関連するコンテキストアイテムに #-メンションしてプロンプトにコンテキストを追加します。
chat.math.enabled 設定 (プレビュー) を使用して、チャット応答で数式のレンダリングを有効にします。
チャットコンテキストを追加する
VS Code は、自然言語プロンプトに基づいてチャットリクエストの意図と範囲を判断しようとします。より関連性の高い応答を得るために、ファイル、テスト結果、ターミナル出力など、追加のコンテキストをチャットプロンプトに提供します。
チャットビューの [コンテキストを追加] ボタンを使用するか、#-メンションを入力してチャットプロンプトにコンテキストを追加します。たとえば、#codebase
と入力してコードベース全体を検索したり、#<ファイル | フォルダー | シンボル>
と入力してワークスペース内の特定のファイル、フォルダー、またはシンボルを参照したりします。チャット入力フィールドに #
と入力すると、コンテキストアイテムのリストが表示されます。
ツールを提供する MCP サーバーまたは拡張機能をインストールしている場合は、チャットプロンプトで #-メンションすることでこれらのツールを直接参照することもできます。たとえば、
#fetch code.visualstudio.com/updates を要約
:fetch
組み込みツールを使用して Web ページの内容を取得します。terminal suggest とは #githubRepo microsoft/code
:githubRepo
組み込みツールを使用して GitHub リポジトリでコード検索を実行します。
また、#
の後にツール名を入力することで、プロンプトでエージェントモードツールを直接参照することもできます。これはすべてのチャットモード (ask、edit、agent モード) で実行できます。たとえば、#fetch
ツールを使用して Web ページの内容をチャットプロンプトのコンテキストとして追加したり、#githubRepo
を使用して GitHub リポジトリでコード検索を実行したりします。
チャットプロンプトにコンテキストを追加する方法の詳細については、こちらをご覧ください。
プロンプトの例
一般的な技術トピックについて質問する
「連結リストとは何ですか?」
「人気の Web フレームワーク トップ 10」
コードベースを理解する
「#codebase で認証がどのように機能するか説明してください」
「データベースの接続文字列はどこで設定されていますか? #codebase」
「この #codebase をビルドするにはどうすればよいですか?」
「#getUser はどこで使用されていますか? #usages」
アプリに新しい機能を追加する
「概要ページを作成し、ナビゲーションバーに含めてください #codebase」
「住所情報を更新するための新しい API ルートを追加してください #codebase」
「ログインボタンを追加し、#styles.css に基づいてスタイルを設定してください」
ワークスペースの問題を修正する
「#problems の問題を修正してください」
「失敗しているテストを修正してください #testFailure」
Web からのコンテンツを参照する
「React 18 で 'useState' フックを使用するにはどうすればよいですか? #fetch https://ja.react.dev/reference/react/useState#usage」
「住所情報を取得するための API エンドポイントを構築し、#githubRepo contoso/api-templates のテンプレートを使用してください」
その他のプロンプトの例については、GitHub ドキュメントの Copilot Chat Cookbook を参照してください。
Copilot およびチャットとの対話方法に関するヘルプを表示するには、チャット入力フィールドに /help
と入力します。
Vision
チャットは Vision 機能をサポートしており、画像をチャットプロンプトにコンテキストとして添付し、それについて質問できます。たとえば、コードブロックのスクリーンショットを添付して説明を求めたり、UI のスケッチを添付してエージェントモードに実装を依頼したりできます。
Web ブラウザーからチャットビューに画像をドラッグアンドドロップして、コンテキストとして追加できます。
チャット履歴
チャットセッションで複数のチャットプロンプトを繰り返し送信すると、VS Code はチャットプロンプトと応答の履歴を現在のチャットプロンプトのコンテキストとして使用します。これにより、コンテキストを繰り返すことなく、フォローアップの質問をしたり、前の質問を明確にしたりできます。たとえば、「これは...とどう違いますか?」、「テストケースを追加してください」、「もっと詳しく説明してください」などと尋ねることができます。
いつでも、チャットビューの新しいチャット (+
) ボタン (⌘N (Windows、Linux Ctrl+N)) を使用して新しいチャットセッションを作成できます。これは、別のトピックに移動し、以前のコンテキストと履歴を避けたい場合に便利です。
チャットセッションの履歴を表示するには、チャットビューの [チャットを表示...] ボタンを選択するか、コマンドパレットで [Chat: Show Chats...] (チャット: チャットを表示...) コマンドを使用します。履歴エントリを選択すると、そのチャットセッションがチャットビューで開き、会話を続けることができます。
コマンドパレットの [Chat: Export Chat...] (チャット: チャットをエクスポート...) コマンドを使用して、チャットセッションのすべてのプロンプトと応答を JSON ファイルにエクスポートできます。
以前のチャットリクエストを編集する (試験的)
チャットリクエストを編集する機能は、VS Code バージョン 1.102 から利用可能で、現在は試験的な機能です。
アクティブなチャットセッションで以前のチャットリクエストを編集できます。これは、プロンプトを洗練させたり、間違いを修正したりする場合に便利です。チャットリクエストの編集は、リクエストを元に戻し、編集されたプロンプトで新しいリクエストを送信するのと同じです。
以前のチャットリクエストを編集すると、次の手順が実行されます:
- 編集されたリクエストと、それ以降のすべてのリクエストおよび応答が会話履歴から削除されます。
- これらのリクエストによって行われたすべての編集は、リクエストが行われる前の状態に戻されます。
- 編集されたリクエストは会話履歴に追加され、新しい応答のために言語モデルに送信されます。
chat.editRequests 設定で、以前のチャットリクエストの編集を設定できます:
inline
: チャットビューでリクエストを選択すると、その場で編集可能になります。編集モードを終了するには Escape を使用します。hover
: チャットリクエストにカーソルを合わせ、編集アイコン (鉛筆) を選択すると、その場で編集可能になります。編集モードを終了するには Escape を使用します。input
: チャットリクエストにカーソルを合わせ、編集アイコン (鉛筆) を選択すると、チャット入力フィールドでリクエストを編集できます。none
: チャットビューでのチャットリクエストの編集を無効にします。
チェックポイントでチャットリクエストを元に戻す (プレビュー)
チェックポイントは VS Code リリース 1.103 から利用可能で、現在はプレビュー段階です。
チャットチェックポイントは、ワークスペースの状態を過去のある時点に戻す方法を提供し、チャットの対話によって複数のファイルに変更が生じた場合に特に役立ちます。
チェックポイントが有効な場合、VS Code はチャットの対話中の重要な時点でファイルの snapshots を自動的に作成し、チャットリクエストによって行われた変更が期待どおりでなかった場合や、別のアプローチを試したい場合に、既知の良好な状態に戻ることができます。
チェックポイントを有効にするには、chat.checkpoints.enabled 設定を構成します。
チェックポイントを復元する
チェックポイントを復元すると、VS Code はワークスペースをそのチェックポイントの時点の状態に戻します。これは、そのチェックポイントの後に行われたファイルへの変更がすべて元に戻されることを意味します。
ワークスペースを以前のチェックポイントに復元するには:
-
チャットビューで、チャットセッション内の以前のチャットリクエストに移動します。
-
チャットリクエストにカーソルを合わせ、[チェックポイントを復元] を選択します。
-
チェックポイントを復元し、その時点以降に行われたファイルの変更を元に戻すことを確認します。
チャットリクエストが会話履歴から削除され、ワークスペースファイルがチェックポイント時点の状態に復元されることに注意してください。
復元後にやり直す
以前のチェックポイントに復元した後、元に戻された変更をやり直すことができます。これは、誤ってチェックポイントに復元してしまった場合に役立つことがあります。
チェックポイントを復元した後に変更をやり直すには、チャットビューで [やり直し] を選択します。
チェックポイントでのファイルの変更を表示する
各チャットリクエストの影響を理解し、どのチェックポイントに復元するかを決定しやすくするために、chat.checkpoints.showFileChanges 設定を有効にします。これにより、各チャットリクエストの最後に変更されたファイルのリストと、各ファイルで追加および削除された行数が表示されます。
エディタータブまたは別のウィンドウでチャットを開く
チャットセッションを別のエディタータブとして、あるいは別のフローティングウィンドウとして開くことができます。この機能により、複数のチャットセッションを同時に開くことができます。
チャットビューの右上隅にある ...
アイコンを選択し、[エディターでチャットを開く] または [新しいウィンドウでチャットを開く] を選択します。次のスクリーンショットは、フローティングウィンドウで実行されているチャットビューを示しています:
デフォルトでは、チャットセッションはコンパクトモードで開かれ、タイトルバーやその他の UI 要素が非表示になります。フローティングウィンドウのタイトルバーにあるコンパクトモードアイコンを選択して、コンパクトモードと通常モードを切り替えます。
オプションで、[常に手前に表示] モードを有効にして、チャットビューを常に他のウィンドウの上に表示させることができます。
VS Code のフローティングウィンドウについて詳しくはこちらをご覧ください。
音声対話を使用する
VS Code Speech 拡張機能によって提供される VS Code の音声制御機能を使用すると、音声でチャット会話を開始できます:
- 音声を使用してチャットプロンプトを口述する
- 「Hey Code」音声コマンドを使用して、Copilot Chat との音声セッションを開始する
- 「hold to speak (押して話す)」モードを使用して、チャットの音声入力を高速化する
VS Code で音声対話を使用する方法について詳しくはこちらをご覧ください。
チャットデバッグビュー
チャットデバッグビューは、AI のリクエストとレスポンスの詳細を確認できる専用のビューです。各チャットリクエストについて、システムプロンプト、ユーザープロンプト、および言語モデルに送信されるコンテキストに関する詳細を確認できます。言語モデルからの詳細なレスポンスや、チャットリクエストの一部として呼び出されるツールからのレスポンスを表示できます。
チャットデバッグビューを開くには、コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) から [Developer: Show Chat Debug View] (開発者: チャットデバッグビューを表示) コマンドを実行します。
コマンドラインからチャットを開始する
VS Code CLI の chat
サブコマンドを使用して、コマンドラインから直接チャットセッションを開始できます。これにより、現在の作業ディレクトリで、指定したプロンプトとともにチャットセッションを開くことができます。
たとえば、次のコマンドは現在のディレクトリでチャットを開き、「型指定されていないすべての変数を見つけて修正する」と尋ねます。
code chat Find and fix all untyped variables
chat
サブコマンドには、次のコマンドラインオプションがあります:
-m
,--mode <mode>
: チャットセッションで使用するチャットモード。利用可能なオプション:ask
、edit
、agent
、またはカスタムモードの識別子。デフォルトはagent
です。-a
,--add-file <path>
: チャットセッションにファイルをコンテキストとして追加します。--maximize
: チャットセッションビューを最大化します。-r
,--reuse-window
: チャットセッションに最後にアクティブだったウィンドウを使用します。-n
,--new-window
: チャットセッション用に空のウィンドウを開きます。
chat
サブコマンドは、コマンドの最後に -
を渡すことで stdin
からの入力パイプもサポートします。たとえば、
python app.py | code chat why does it fail -
プライバシーと透明性
プライベートリポジトリでより多くのワークスペース検索機能を有効にするには、追加の権限が必要です。これらの権限がまだないことを検出した場合、起動時に権限を要求します。許可されると、将来のためにセッションを安全に保存します。
GitHub Copilot Trust Center で、セキュリティ、プライバシー、透明性について詳しくはこちらをご覧ください。
よくある質問
異なるチャットモードはどのように使い分ければよいですか?
異なるチャットモードは、さまざまなユースケースに合わせて最適化されています:
-
アクティブなエディターで直接質問したり編集したりするには、エディターインラインチャットを使用します。これは、コードの変更を行ったり、アクティブなファイルにスコープが限定された質問をするのに便利です。
-
コードベースや技術的な概念について質問するには、ask モードを使用します。応答にはコードの提案が含まれる場合があり、それらをコードベースに手動で個別に適用できます。変更はコードベースに自動的に適用されません。
-
チャットプロンプトに基づいてコードベース内の複数のファイルにまたがる編集を直接適用するには、edit モードを使用します。プロンプトに関連するコンテキストとファイルを提供します。
-
自律的なコーディングワークフローを開始するには、agent モードを使用します。AI が関連するコンテキストとファイルを自律的に判断し、リクエストを完了するために実行する必要のあるタスクを決定します。その後、目的の結果を達成するために独立して反復し、発生した問題を修正します。エージェントモードは、拡張機能や MCP サーバーからツールを呼び出して、ターミナルコマンドの実行、テストケースの検証、API へのアクセスなどの特殊なタスクを実行できます。
追加リソース
GitHub Copilot の詳細と、VS Code での使用方法については、GitHub Copilot ドキュメントを参照してください。
または、YouTube の VS Code Copilot シリーズをご覧ください。ここでは、Copilot を Python、C#、Java、PowerShell、C++ などで使用するための、より多くの入門コンテンツやプログラミング言語別のビデオを見つけることができます。