👏

ねぇ!その前にGithub Copilot ChatのToolsを理解しようよ!

に公開3

はじめに

最近はAIを使った自立開発の流れが加速していて、Zennでも「仕様駆動開発」とか「ハーネスエンジニアリング」とか、皆さんそれぞれAIを使った開発スタイルを布教する記事が増えてきましたね。

でもみんながみんなそんな高度なAI活用術をすぐに実践できるわけじゃないし、そもそもGithub Copilot Chatの基本的な機能を使いこなせていない人も多いんじゃないかなと思います。

そこで今回は、Github Copilot Chatを最大限に活用するためのToolsの基礎知識を紹介します。
カスタムエージェントやエージェントスキルで高度なAI活用術を実践する前に、まずはToolsの基礎をしっかり押さえておきましょう。

Toolsを理解しよう

Skillsは嫌というほど記事があるので、皆さん多少理解していますよね?
でもToolsに関しては、あまり知らない人も多いんじゃないでしょうか。

早速ですが、以下は 2026/4/14 現在の組み込みToolsの一部です。

ツール名 説明
create_file ワークスペースに新しいファイルを作成する
read_file ファイルの内容を指定行範囲で読み取る
replace_string_in_file 既存ファイルの特定文字列を1箇所置換して編集する
multi_replace_string_in_file 複数の置換操作を1回のツール呼び出しで一括適用する
list_dir ディレクトリの内容(ファイル・フォルダ)を一覧表示する
file_search Globパターンでワークスペース内のファイルパスを検索する
grep_search ワークスペース内のファイルをテキスト・正規表現で高速検索する
semantic_search ワークスペースのコードやドキュメントを自然言語で意味検索する
get_errors ファイルのコンパイルエラー・Lintエラーを取得する
view_image PNG・JPEGなどの画像ファイルの内容を表示する
run_in_terminal 永続的なbashターミナルセッションでシェルコマンドを実行する
get_terminal_output 非同期実行中のターミナルセッションの出力を取得する
send_to_terminal 実行中のターミナルセッションにコマンド文字列を送信する
kill_terminal 実行中のターミナルセッションを強制終了する
fetch_webpage 指定URLのWebページ本文を取得する
vscode_askQuestions ユーザーに選択肢付きの確認・質問ダイアログを表示する
vscode_listCodeUsages コードシンボルの定義・参照・実装箇所をすべて検索する
vscode_renameSymbol 言語サーバーを使ってシンボル名をワークスペース全体でリネームする
open_browser_page ホストの既定ブラウザで指定ページを開く
get_changed_files Gitの差分から変更されたファイルの一覧を取得する
github_repo GitHubリポジトリ関連の情報取得・操作を行う
create_directory 新しいディレクトリを作成する
terminal_last_command ターミナルで最後に実行したコマンドと出力を取得する(#terminalLastCommand
terminal_selection ターミナル上で現在選択中のテキストを取得する(#terminalSelection
manage_todo_list Todoリストを作成・更新してタスク進捗を管理する
memory 会話・セッション・リポジトリスコープの永続メモリを管理する
runSubagent 複雑なタスクを処理するサブエージェントを起動・委譲する

実際にエージェントがAIが行う作業の大半は、実際にはToolsを呼び出して実行しています。
上の表にもある通り、ファイルの読み書きすらもToolsを通して行われているんですよね。

なので、Github Copilot Chatを使いこなすためには、まずはこのToolsの仕組みと種類を理解することが重要です。

Toolsを切り替えよう

Github Copilot Chatでは、モデル選択の横にあるボタンから、AIが使用するToolsを切り替えることができます。

Tools切り替えUI
Tools選択UI

不要なツールはオフにしておこう

作業に応じて不要なToolsはオフにしておくことが大事です。
以下のようなメリットがあります。

  • コンテキスト圧迫の防止
    AIは最初のシステムプロンプトで呼び出し可能なToolsの名前と説明をすべて読み込むため、Toolsの数が多いほどコンテキストを圧迫してしまいます。
    呼び出すツールの判断が難しくなってしまったり、純粋にコンテキストの圧迫によりAIの性能が低下してしまう可能性もあるため、必要なToolsだけをオンにしておくことが推奨されます。
  • セキュリティリスクの軽減
    不必要なToolsをオフにしておくことで、AIが誤って重要なファイルを編集したり、ターミナルで危険なコマンドを実行するリスクを減らすことができます。
    例えば状況によっては、ファイルの操作をせず、ファイルの内容を参照しての推論のみを行ってほしい場合があります。そのような場合、replace_string_in_filerun_in_terminalなどのToolsはオフにしておくことで、AIが誤ってファイルを編集したり、ターミナルでコマンドを実行するリスクを減らすことができます。

MCPツールも切り替えれる

MCPツールも、先ほどのTools切り替えUIからオンオフを切り替えることができます。
VSCodeの拡張機能によって勝手にMCPツールが追加されていることもあるので、必要に応じてオフにしておくといいでしょう。

特に覚えておくべきポイントとして、MCPツールはコンテキストの消費量が多いということがあります。
もちろんMCPツールの設計によりますが、MCPツールはレスポンスの内容が大きくなりやすい傾向にあるほか、呼び出しのたびにレスポンスがコンテキストに追加されるため、不要なツールはオフにしておくことが推奨されます。

自分でMCPツールを作成する際も、必要な情報だけを返すように設計することが重要です。

特に理解しておくと便利なTools

個人的に重宝しているToolsをいくつかピックアップして紹介します。

  • vscode_askQuestions
    仕様が曖昧なタスクを投げる際に、AIが勝手に推測して見当違いなコードを生成するのを防ぐために、「不明点があれば必ず`askQuestions`ツールで質問して」と指示しておくと、無駄なリクエスト消費と時間のロスを防げます。
    VSCodeのネイティブなUI選択肢付きの質問ダイアログが表示されるので、ユーザも直感的に答えやすいですし、別のウィンドウで作業していれば通知が表示されるので対応が必要なことに気づくことができます。

  • terminal_last_commandterminal_selection
    ターミナルのエラーログや実行結果をAIに渡す際に、わざわざコピペするのは面倒ですよね。
    チャット内で「#terminalLastCommand」や「#terminalSelection」と呼び出すだけで、最新のコマンドや選択テキストをスマートにAIに渡せます
    自然言語で「直近のターミナルのエラー内容を確認して」と指示するだけでも大丈夫です。

  • runSubagent
    複雑なタスクを投げる際に、プロンプト内で指示するだけで、AIが必要に応じてサブエージェントを起動して役割ごとにタスクを適切に委譲してくれるので、より高度なAI活用が可能になります。
    サブエージェントは別のコンテキストウィンドウで動作するため、メインのコンテキストを汚さなくて済むほか、メインで行ってきたやり取りによるバイアスを受けずに、フレッシュな状態でタスクに取り組むことができます。
    例えば、「実装が完了したらサブエージェントにレビューを依頼して」と指示することで、新しいコンテキストウィンドウで高品質なコードレビューを自動で行わせることができます。

まとめ

最近Claude Codeばっかり流行ってますけど、Github Copilotって使いこなせればめっちゃ便利だし、何より超安いのになぁ、と思いました。

ヘッドウォータース

Discussion

yaa512yaa512

Github Copilotって使いこなせればめっちゃ便利だし、何より超安い

これガチでそうなんだけど、改悪される気がする
cursorみたいな従量課金にならないか日々怯えてる

1
妹尾悠真妹尾悠真

めちゃくちゃ分かる、僕も怯えてます。
もしそうなっても、他社よりは安く設定してくれそうな気はしてますが…。