GitHub Copilot Chat で C++ 開発ツールを使用する
C++ コードのリファクタリングや更新を行う際、多くの場合、複数のファイルにまたがる編集箇所を追跡し、ビルド構成を把握しておく必要があります。
GitHub Copilot Chat は、VS Code に組み込まれた C++ ツールを使用して、C++ プロジェクトにコンテキストに応じた支援を提供できます。コード理解ツールや CMake ツールを活用することで、Copilot はコードベースの構造、依存関係、ビルド構成を理解し、より正確で役立つ回答を迅速に提供できるようになります。
本ガイドでは、利用可能なツールと、それらを AI エージェントと効果的に組み合わせて以下のタスクを達成する方法について説明します。
- 複雑な C++ コードベースのナビゲーションと理解
- 完全なコンテキスト認識によるコードのリファクタリング
- プロジェクトの効率的な構成とビルド
前提条件
- C/C++ DevTools 拡張機能
- C/C++ 拡張機能
- CMake Tools 拡張機能
これらの拡張機能は、C/C++ Extension Pack の一部として提供されています。
これらのツールは、チャット内の `Tools` オプションに移動し、有効/無効にしたいツールを選択することで、いつでも切り替え可能です。

コンテキストの肥大化を避けるため、開発ワークフローに関連するツールのみを有効にしてください。MCP を通じてインストールされたツールなどの不要なツールは、同じダイアログから無効にできます。
C++ コード理解ツール
C++ 拡張機能は、言語サービスを使用して Copilot Chat にコード構造、シンボル、および関係性についての深い理解を提供するツールを提供します。これらのツールを活用するには、IntelliSense の設定が完了していることを確認してください。
これらのツールを有効にするには、VS Code のユーザー設定で **Enable Cpp Code Editing Tools** 設定を選択します。

シンボル情報の取得 (GetSymbolInfo_CppTools)
機能: コードベース内のシンボル(関数、クラス、変数など)に関する詳細情報(定義、型、ドキュメントなど)を取得します。
使用例: メモリパフォーマンスの最適化および破壊的変更の防止

シンボル参照の取得 (GetSymbolReferences_CppTools)
機能: コードベース全体で特定のシンボルへのすべての参照を検索し、関数、クラス、または変数がどこで使用されているかを表示します。
使用例: 既存関数への機能追加

ツールが返すシンボル参照の最大数は、VS Code のシンボル参照制限設定で調整できます。

シンボル呼び出し階層の取得 (GetSymbolCallHierarchy_CppTools)
機能: 関数の呼び出し階層を表示し、着信呼び出し(その関数を呼び出しているもの)と発信呼び出し(その関数が呼び出しているもの)の両方を明らかにします。
使用例: モジュール移行のための依存関係分析

CMake Tools の統合
CMake ツールを使用すると、Copilot Chat がビルド構成、ターゲット、依存関係を理解し、ビルドを意識した支援が可能になります。
CMake ビルド (Build_CMakeTools)
機能: 現在の構成と選択されたターゲットを使用して CMake プロジェクトをビルドします。
使用例: ビルドエラーの解決

CTest の実行 (RunCTest_CMakeTools)
機能: プロジェクトで定義されている CTest テストスイートを実行します。
使用例: 単体テストに基づいたコードの修正

効果的なプロンプトのためのヒント
- 具体的に指示する: 質問対象のシンボル、ファイル、またはコンポーネントを明示します(例:「これを高速化して」ではなく「
getConfig()関数をリファクタリングして」と依頼する)。 - コンテキストを参照する: 変更を分析する際に、特定のファイル、関数、またはモジュールを考慮するように Copilot Chat に依頼します。
- ツールを直接指定する: チャット内で # を使用して関連ツールを直接参照し、確実に呼び出されるようにします。
- カスタム指示を使用する: カスタム指示を設定して Copilot Chat をガイドします。C++ ツールの呼び出し頻度を向上させるためのカスタム指示の例については、awesome-copilot リポジトリのドキュメントを参照してください。
- 最新モデルを活用する: 最も正確なコード理解とツール利用のために、ツール呼び出しをサポートする最新の AI モデルを使用してください。
- ツールパフォーマンスを最適化する: コンテキストの肥大化を避けるため、ワークフローに関連するツールのみを有効にしてください。
各ツールの使用タイミング
シンボル情報: 既存のコード構造を理解する必要がある場合や、変更前にプロパティを確認する場合に使用します。
シンボル参照: リファクタリング時にすべての使用箇所を特定し、変更によって既存のコードが壊れないようにする場合に使用します。
呼び出し階層: 依存関係の分析、呼び出しチェーンの把握、またはモジュール移行の計画時に使用します。
CMake ビルド: ビルドの問題をトラブルシューティングする場合や、変更が正常にコンパイルされることを確認する場合に使用します。
CTest: テストスイートに対して変更を検証する場合や、テスト失敗をデバッグする場合に使用します。