🔥

GitHub Copilot の 3 つのモード(Ask, Edit, Agent)の正しい使い分け

に公開

VS Code の GitHub Copilot Chat では「Ask」「Edit」「Agent」という 3 つのモードを切り替えることができます。

この 3 つのモードは全く異なる特性を持っており、開発スタイルや状況によって最適な選択が変わってきます。

GitHub 公式から正しい使い分け方の解説記事が出ていたので、これを基に、各モードの特徴と活用シーンを徹底解説し、効率的な開発のための活用法をご紹介します。

https://github.blog/ai-and-ml/github-copilot/copilot-ask-edit-and-agent-modes-what-they-do-and-when-to-use-them/

Ask モード:素早い疑問解決に最適

Ask モードは 3 つのモードの中で最もシンプルです。

Ask モードの基本的な使い方

  1. コードを選択する
  2. Copilot Chat に質問を入力する
  3. 回答を得る

このモードでは、コードの説明、テスト方法の提案、実装コードの提示、特定のエッジケースの処理方法など、あなたのプログラミングに関する質問に集中して答えてくれます。コードに一切触れることなく、質問への回答だけを提供します。

Ask モードの特徴と活用シーン

  • ✅ エディター内でコンテキストを保ったまま質問できる
  • ✅ コードだけでなく、一般的なプログラミングに関する質問も可能
  • ✅ プロジェクトへの影響なし、アーキテクチャ決定の必要なし
  • ✅ 必要な時に素早く答えを得られる低摩擦な方法

例えば、以下のようなシーンで特に役立ちます:

  • Tailwind CSS でのスタイリングのヘルプ
  • JavaScript のクロージャーについての復習
  • React での入力のデバウンス方法
  • SQL クエリの構造化方法
  • 特定のデータセットに最適な検索アルゴリズム

Ask モードは、次に何を作るかの障壁となっている質問に素早く答えを得るための最も低摩擦な方法です。

Edit モード:主導権はあなたのまま、作業スピードは向上

Edit モードはプロジェクト内の変更したいファイルを選択し、自然言語で更新内容を記述すると、Copilot がそれらのファイルに即座にインラインでレビュー準備完了のコード編集を適用します。

Edit モードの基本的な使い方

  1. コードブロックを選択する
  2. 「エラー処理を追加して」や「async/await を使ってリファクタリングして」などの指示を入力する
  3. Copilot がコードを書き換える
  4. 差分を確認して適用するかどうかを決定する

Edit モードの最大の特徴は、Copilot が作業を行っても、最終決定権はあなたにあることです。自動的に保存されることはなく、必ず変更内容を確認してから適用できます。これにより、制御を手放すことなく、作業スピードを向上させることができます。

カスタム指示でさらにパワーアップ

Edit モードではカスタム指示を設定することで、より高度な活用が可能になります。コードの書き方の好み、冗長さや簡潔さの度合い、チームの標準、説明のフォーマル度、コメントの言語などを事前に設定できます。これにより、「これをきれいにして」と言ったときに、あなたにとっての「きれい」が何を意味するかを Copilot があらかじめ理解することができます。

Edit モードの特徴と活用シーン

  • ✅ 既存のアプリケーションの一部を集中的に改善したい時
  • ✅ システムの他の部分に影響を与えたくない場合
  • ✅ 小さくても面倒な改善を正確に行いたい時
  • ✅ アーキテクチャの再設計や余計な変更を避けたい場合

Edit モードは、既存のシステムへの介入を最小限に抑えつつ、効率的に改善を行いたい場合に非常に有効です。一度使うと、元には戻れなくなるほど便利な機能です。

Agent モード:準備ができたら、強力なパワーを

Agent モードは高レベルのプロンプトを渡すと、Copilot が自律的に手順を計画し、適切なファイルを選択し、ツールやターミナルコマンドを実行し、タスクが完了するまでコード編集を繰り返します。

Agent モードの特徴

  • Copilot Chat の中で最も強力なモード
  • 最も新しいモード
  • プロジェクト全体を考慮し、複数のステップにわたるアクションを実行
  • セッション全体で大量のコンテキストを保持

Agent モードでは、機能の構築、バグの修正、ファイルの作成、ルーティングロジックのクリーンアップ、単一のプロンプトに基づいたアプリケーションの一部の構築など、様々なタスクを依頼できます。

Edit モードとの重要な違い

一見すると Edit モードの拡張版のように見えますが、重要な違いがあります

  1. 指定した行だけでなく、関連するコードも分析し、プロジェクト全体の一貫性を保つために必要な追加変更を特定して適用
  2. 明示的な承認を待たずに自動的に編集を適用(リスクの高いコマンドは実行前にレビュー)

Agent モードのワークフローは「ドライバー」モデルに近く、開発者が目標を定義し、Copilot が各ステップでの許可を求めることなく更新を実行します。これは一部の開発者にとっては自然でパワフルに感じられますが、他の開発者にとっては慣れているよりも少し多くの制御を手放すように感じるかもしれません。

カスタム指示で Agent モードをさらに強化

カスタム指示を使用することで Agent モードはさらに効果を発揮します。これにより、セッション全体での Copilot の動作を形作ることができます。

例えば、API の呼び出し方法、命名パターン、コードベース全体でのスタイルの好みなど、事前にいくつかの基本ルールを設定できます。これにより、Agent モードはより強固な基盤から作業でき、各ステップを細かく管理することなく、より一貫性のある結果を得ることができます。

Agent モードの活用例

新しいリポジトリに README をドロップし、作りたいものの明確なビジョンを設定し、Copilot に最初のパスを任せることでプロジェクトを開始することがあります。コンポーネント、レイアウト、ルート、さらにはコンテンツのシードまで構築してくれます。最初から完璧ではありませんが、ゼロから構築するよりもはるかに使いやすい出発点に近づけてくれます。

Agent モードの注意点

もちろん、関与し続けることも重要です。時折、Agent モードが予期しないコマンドの実行を提案したり、触れないことに同意したと思っていたファイルに触れたりすることがあります。また、特に大きなプロジェクトでは、物事を考える時間が少し長くかかることもあります。

時間が限られているライブデモでは、この予測不可能性が状況をより「エキサイティング」にすることは間違いありません。しかし、日々の構築、特に実験や新しいプロジェクトの開始時には、Agent モードは私の創造的なプロセスに自然にフィットします。

Agent モードで作業することは、速く動き、時には 3 つ先のステップを考える優秀な友人とペアプログラミングするようなものです。方向性が合っていれば、素晴らしいことが起こります。そうでなければ、望む道に戻るよう軌道修正する必要があるかもしれません。

シニア開発者にとっての意味

Agent モードは使用すると間違いなく未来を感じさせますが、強力だからといって常に適切なツールであるとは限りません。時にはコードベースの一部をより精密に扱う必要がある場合もあります。センシティブなシステムでいくつかのファイルを調整したり、的を絞った変更を行ったりする場合は、Ask モードや Edit モードの方が適している可能性があります。

多くの場合、最も経験豊富な開発者は、後で大きな問題を避けるためにシステムのどの部分を慎重に扱うべきか、あるいはまったく触れるべきではないかを正確に知っています。これは慎重さのためだけではなく、表面下にある複雑さを理解することに関わっています。

そして重要なことは、Agent モードはソフトウェアの構築に慣れていない人だけのためのものではないということです。多くの点で、それを使用する人が明確で強力な指示を与える方法、そしてコードとアルゴリズム構造のニュアンスを知っている場合に最もうまく機能します。システムの構造、脆弱なエッジがどこにあるか、変更をレビューするタイミングとフローを信頼するタイミングを知っていれば、Agent モードから真の価値を得るのに最適な位置にいます。これはシニア開発者の領域です。

まとめ:3 つのモードを使いこなす

Ask、Edit、Agent モードは同じツールの 3 つのバージョンではありません。それらは GitHub Copilot 内の 3 つの完全に異なるユニークな体験です

  • Ask モード:質問への素早い回答を得る方法
  • Edit モード:ファイル全体で何を推奨するかを教えてくれるアシスタント
  • Agent モード:あなたが求めていると思うことを先に進めて実行するアシスタント

これらの違いを理解して、ぜひご活用ください!

Discussion