AI Agent の活用
注意: このページは、2025/04/21 時点の情報に基づいて、GitHub Copilot の AI エージェント機能に関する情報を記載しています。
Visual Studio Code では、自然言語でプロジェクト全体のコードについて質問したり、編集を依頼したりできます。チャットは用途に応じて最適化された複数のモードで動作し、質問、複数ファイルの編集、エージェント型のコーディングワークフローまで対応します。
VS Code のチャットは、次のような場面で役立ちます。
- コードの理解:「この認証ミドルウェアの仕組みを説明して」
- デバッグ:「このループで null 参照が発生する理由は?」
- コード提案:「Python で二分探索木を実装する方法を教えて」
- パフォーマンス最適化:「このデータベースクエリの効率を改善したい」
- ベストプラクティスの学習:「非同期関数でエラーを処理する推奨方法は?」
- VS Code のヒント:「キーボードショートカットをカスタマイズする方法は?」
チャットモード
用途に応じて、次のチャットモードから選択できます。
モード | 説明 | シナリオ |
---|---|---|
質問 | コードベースや技術的な内容について質問できます。 | コードの動作理解、設計アイデアのブレインストーミング、新技術の調査など |
編集 | 複数ファイルにまたがる編集を実行できます。 | 新機能の実装、バグ修正、リファクタリングなどを直接プロジェクトに反映 |
エージェント | エージェント型のコーディングワークフローを開始します。 | 最小限の指示で新機能やプロジェクトの要件を自律的に実装。専門タスクのためのツール呼び出しや、問題解決のための繰り返し実行も可能 |
チャットビューの モード ドロップダウンから、いつでもモードを切り替えられます。
エージェントモードを使う
Visual Studio Code のチャット エージェントモード を使うと、自然言語で高レベルなタスクを定義し、そのタスクを達成するためのエージェントによるコード編集セッションを開始できます。エージェントモードでは、Copilot が必要な作業を自律的に計画し、関連するファイルやコンテキストを特定します。その後、コードベースの編集やツールの実行を自動で行い、リクエストに応じて作業を進めます。エージェントモードは編集やツールの結果を監視し、問題が発生した場合は繰り返し対応します。
エージェントモードの使い方
エージェントモードでは、Copilot が自律的にプロンプトに対する関連コンテキストを特定します。
チャットビューのモードドロップダウンからエージェントモードにアクセスできます(VS Code の Stable または Insiders で開くことも可能です)。以下の手順で始めましょう:
-
設定
エディターでchat.agent.enabled
設定を有効にし、エージェントモードが有効になっていることを確認します(VS Code 1.99 以降が必要)。 -
VS Code タイトルバーの Copilot メニューから Open Chat を選択し、チャットビューを開きます。
-
チャットビューのモードドロップダウンから Agent を選択します。
-
編集リクエストをチャット入力欄に入力し、Send(
workbench.action.edits.submit
)を選択して送信します。高レベルな要件を指定でき、どのファイルを編集するかを明示する必要はありません。エージェントモードでは、Copilot が関連するコンテキストや編集対象ファイルを自律的に判断します。
以下の例のようなプロンプトで試してみましょう:
React と Node.js を使って献立作成 Web アプリを作成して
SNS 共有機能を追加して
現在の認証を OAuth に置き換えて
-
エージェントモードは、さまざまなタスクを達成するために複数のツールを呼び出す場合があります。必要に応じて、Tools アイコンを選択し、リクエスト対応に利用できるツールを設定できます。
[!TIP] プロンプト内で
#
の後にツール名を入力することで、ツールを直接参照することもできます。これはすべてのチャットモード(ask、edit、agent)で利用可能です。 -
ツールの呼び出しやターミナルコマンドを確認します。
ターミナルコマンドや組み込み以外のツールを実行する前に、Copilot は続行するための確認を求めます。これは、ツールがローカルマシンで実行され、ファイルやデータを変更する可能性があるためです。
Continue ボタンのドロップダウンオプションを使用して、現在のセッション、ワークスペース、またはすべての将来の呼び出しに対して特定のツールを自動的に確認できます。Chat: Reset Tool Confirmations コマンドを使用してツール確認をリセットできます。
プロジェクトが
tasks.json
にタスクを設定している場合、エージェントモードは適切なタスクを実行しようとします。たとえば、ビルドタスクを定義している場合、エージェントモードはアプリケーションを実行する前にビルドタスクを実行します。github.copilot.chat.agent.runTasks
設定を使用してワークスペースタスクの実行を有効または無効にできます。 -
ツールを実行する前に、ツールの入力パラメーターを確認および編集することができます。
ツール名の横にある矢印を選択して、詳細と入力パラメーターを表示します。ツールを実行する前に入力パラメーターを編集できます。
-
Copilot Edits はコード編集やターミナルコマンドの問題を検出し、それらを解決するために追加のアクションを実行します。
たとえば、コード編集の結果として単体テストを実行する場合があります。テストが失敗した場合、テスト結果を使用して問題を解決します。
Copilot Edits のエージェントモードは問題を解決するために複数回繰り返します。
chat.agent.maxRequests
設定は、エージェントモードで Copilot Edits が行う最大リクエスト数を制御します。 -
Copilot がリクエストを処理する際、提案されたコード編集がエディターに直接ストリームされることに注目してください。
チャットビューには、編集されたファイルのリストが太字で表示されます。エディターオーバーレイコントロールを使用して、提案された編集間を移動できます。
-
提案された編集を確認し、提案された編集を受け入れるか破棄することができます。
-
コード変更を繰り返して編集を洗練したり、追加の機能を実装したりします。
エージェントモードツール
エージェントモードは、ユーザーリクエストを処理する際に専門的なタスクを達成するためにツールを使用します。たとえば、ディレクトリ内のファイルをリストする、ワークスペース内のファイルを編集する、ターミナルコマンドを実行する、ターミナルから出力を取得するなどです。
エージェントモードで使用できるツールは以下の通りです:
- 組み込みツール
- 拡張機能が提供するツール
- MCP ツール
リクエストに対応するために使用できるツールを表示および管理できます。チャットビューで Tools アイコンを選択して、エージェントモードで利用可能なツールを表示および管理します。
ツールの結果に基づいて、Copilot は他のツールを呼び出して全体的なリクエストを達成する場合があります。たとえば、コード編集がファイル内の構文エラーを引き起こした場合、Copilot は別のアプローチを検討し、異なるコード変更を提案する場合があります。
編集を受け入れるか破棄する
Copilot は編集されたファイルをチャットビューの変更されたファイルリストに表示します。保留中の編集があるファイルには、エクスプローラービューやエディタータブにインジケーターが表示されます。
エディターオーバーレイコントロールを使用して、⬆️
および ⬇️
コントロールで提案された編集間を移動できます。Keep または Undo ボタンを使用して、特定のファイルの編集を受け入れるか拒否します。
エディターまたはチャットビューで Keep または Undo コントロールを使用して、個々の編集またはすべての提案された編集を受け入れるか拒否します。
chat.editing.autoAcceptDelay
設定を使用して、提案された編集が自動的に受け入れられるまでの遅延を設定できます。エディターオーバーレイコントロールにカーソルを合わせて、自動受け入れのカウントダウンをキャンセルします。
VS Code を閉じると、保留中の編集のステータスが記憶されます。VS Code を再度開くと、保留中の編集が復元され、編集を受け入れるか破棄することができます。
編集を元に戻す
コード編集リクエストを送信する際、これらの変更を元に戻したい場合があります。たとえば、別の実装戦略を使用したい場合や、Copilot が編集を生成する際に誤った方向に進み始めた場合です。
チャットビューのタイトルバーにある Undo Last Edit コントロールを使用して、最後の編集を元に戻し、最後のリクエストを送信する前の状態に戻ることができます。最後の編集を元に戻した後、チャットビューのタイトルバーにある Redo Last Edit コントロールを使用して、これらの編集を再度実行できます。
また、Copilot Edits ビューでリクエストにカーソルを合わせた際に表示される Undo Edits (Delete) コントロール(✖️
アイコン)を使用して、そのリクエスト以降に行われたすべての編集を元に戻すことができます。
エージェントモードリクエストを中断する
進行中のリクエストを中断するには、Pause または Cancel を選択します。リクエストを一時停止すると、Copilot はリクエストの処理を停止し、入力を待機します。
リクエストを一時停止すると、新しいプロンプトを入力して現在のリクエストをキャンセルするか、現在のリクエストを再開するかを選択できます。
リクエストをキャンセルすると、Copilot はアクティブなリクエストを中断して終了します。その時点までに行われた変更を確認し、受け入れるか拒否することができます。
設定
以下はエージェントモードに関連する設定の一覧です。設定エディター(workbench.action.openSettings
)を通じて設定を構成できます。
chat.agent.enabled:true
: エージェントモードを有効または無効にする(デフォルト:false
、VS Code 1.99 以降が必要)chat.agent.maxRequests
: エージェントモードで Copilot Edits が行う最大リクエスト数(デフォルト: Copilot Free ユーザーは 5、その他のユーザーは 15)github.copilot.chat.agent.runTasks
: Copilot Edits のエージェントモードを使用する際にワークスペースタスクを実行する(デフォルト:true
)chat.mcp.discovery.enabled
: 他のツールで構成された MCP サーバーの検出を有効または無効にする(デフォルト:true
)
よくある質問
編集モードではなくエージェントモードを使用する理由は?
編集モードとエージェントモードの選択基準は以下の通りです:
- 編集範囲: エージェントモードは関連するコンテキストや編集対象ファイルを自律的に特定します。編集モードでは、コンテキストを自分で指定する必要があります。
- タスクの複雑さ: エージェントモードは、コード編集だけでなくツールやターミナルコマンドの実行を必要とする複雑なタスクに適しています。
- 所要時間: エージェントモードはリクエストを処理するために複数のステップを含むため、応答を得るまでに時間がかかる場合があります。たとえば、関連するコンテキストや編集対象ファイルを特定し、行動計画を立てるなどです。
- 自己修復: エージェントモードは生成された編集の結果を評価し、中間的な問題を解決するために複数回繰り返す場合があります。
- リクエストのクォータ: エージェントモードでは、タスクの複雑さに応じて、1つのプロンプトがバックエンドへの多くのリクエストを引き起こす場合があります。
演習: GitHub Copilot のエージェントを試す
計算機アプリを作成してみましょう。
-
VS Code のインストールと環境セットアップ
- VS Code をダウンロードしてインストールします。
- VS Code を開いて、Remote Development 拡張機能パック をインストールします。
- 詳細な開発環境セットアップ手順は環境準備 - 作業手順を参照してください。
-
GitHub Copilot のエージェントを有効化し、コードを生成する
- VS Code を開いて、こちらの手順を参考に、GitHub Copilot のエージェントを有効にします。
- 今回の LLM モデルは
Claude 3.7 Sonnet
を使用します。 -
有効化ができたら、プロンプトに以下の指示文を入力して、デモアプリを作成します。
Web 画面で操作できる電卓アプリを作成して、ローカル PC で起動してください。
- Copilot Edits ビューでエージェントの作業を確認しながら、提案された編集の承認やタスクの実行承認を行います。
-
エラーなど発生した場合は、エージェントが自律で解決するまで待ちます。解決できない場合は、プロンプトにて指示を与えて解決を促します。
-
必要に応じてプロンプトに以下の指示文を入力して、エージェントが作成したコードをローカル PC で実行して、電卓アプリの動作を確認します。
アプリをローカル PC で起動して、電卓の機能を確認します。
ヒント: 使用する LLM モデルによっては、エージェントの動作が異なります。エージェントが提案するコードの品質を向上させるために、適切なプロンプトを提供することが重要です。
まとめ
GitHub Copilot のエージェントモードは、複雑なタスクを自律的に処理し、問題解決のために繰り返し実行することができます。GitHub Copilot のエージェントを試すことで、実際の開発フローにおける活用方法を体験し、AI エージェントの力を実感することができます。今後の開発において、AI エージェントを活用して効率的なコーディングを実現しましょう。