GitHub Copilot CLIのC++サポートが、2026年4月22日に大きく変わった。

従来はテキスト検索(grep相当)でコードを解析していたが、Microsoft C++ Language Serverのパブリックプレビュー公開により、Visual StudioやVS Codeと同じIntelliSenseエンジンを使った精度の高い解析がコマンドラインでも使えるようになった。

この記事でわかること:

  • Microsoft C++ Language Serverが解決する問題
  • 言語サーバーあり/なしでCopilotの動作がどう変わるか
  • セットアップ手順(インストールから動作確認まで)
  • CMake/MSBuildプロジェクトへの対応状況

C++の解析がgrep検索では不十分な理由

C++は他の言語と比べて静的解析が難しい言語のひとつです。マクロ、テンプレート、ヘッダーの複雑なインクルード階層、ビルドシステムに依存したコンフィグレーションが組み合わさるため、単純なキーワード検索では不完全な結果しか返せません。

たとえば、あるクラスが継承できるベースクラスを調べる場合、grepでは同名クラスのすべての出現箇所がヒットしてしまいます。その中から本当に継承元として使えるものを判断するには、型情報とシンボル解決が必要です。

Microsoft C++ Language Serverが提供するもの

Microsoft C++ Language Serverは、GitHub Copilot CLIにLSP(Language Server Protocol)経由でC++のセマンティック情報を提供します。

利用できる機能は以下のとおりです。

  • シンボル定義の検索(ワークスペース全体)
  • 定義へのジャンプ(Go to Definition)
  • 参照の検索(Find References)
  • コールハイアラーキーの取得
  • 型情報の取得

これにより、Copilotはgrep検索を繰り返す代わりに、正確なシンボル情報をもとにコードを理解します。

言語サーバーあり/なしの比較

公式ブログでは、オープンソースのフォーマットライブラリ{fmt}を使った例が紹介されています(参考)。

「継承できるベースフォーマッターを一覧してほしい」というリクエストに対し、言語サーバーあり/なしで次のような違いがあります。

言語サーバーあり
ワークスペースシンボル検索でフォーマッタークラスを特定し、定義ジャンプでベースクラスを直接参照。精度の高い一覧と推奨クラスを返す。

言語サーバーなし
クラス名でgrepを繰り返し、コードベース全体から候補を手探りで絞り込む。無関係なヒットが混在しやすい。

セットアップ手順

1. インストール

npm install -g @microsoft/cpp-language-server

2. 認証

mscppls --accept-eula --login

GitHub Copilotの有効なサブスクリプションが必要です。

3. compile_commands.json の作成

C++言語サーバーの動作には、プロジェクトのビルド情報を記述したcompile_commands.jsonが必要です。CMakeプロジェクトの場合、以下のオプションを追加してconfigureすると生成されます。

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..

MSBuildプロジェクト(vcxproj)には現在ネイティブサポートがなく、サンプルアプリケーションを使って手動で抽出する手順が案内されています。ネイティブ対応は今後のリリースで予定されています。

4. 設定ファイルの作成

プロジェクトルートに.github/lsp.jsonを作成し、言語サーバーを登録します。

{
  "lspServers": {
    "cpp": {
      "command": "mscppls",
      "args": ["--lsp-config", ".mscppls/cpp-lsp.json"],
      "fileExtensions": {
        ".cpp": "cpp",
        ".c": "cpp",
        ".hpp": "cpp",
        ".h": "cpp"
      },
      "requestTimeoutMs": 1000000
    }
  }
}

次に.mscppls/cpp-lsp.jsonでプロジェクトルートとcompile_commands.jsonのパスを指定します。

{
  "version": 1,
  "repositoryPath": "../",
  "compileCommands": "../build/compile_commands.json"
}

5. 動作確認

GitHub Copilot CLIをプロジェクトルートから起動し、/lsp showを実行します。cppサーバーが表示されれば設定完了です。クエリに「use LSP tools」と添えると、言語サーバーを優先的に使うよう促せます。

対応プラットフォームと前提条件

Windows(x64/arm64)、macOS(x64/arm64)、Linux(glibc/musl)に対応しています。Linuxではlibcurllibsecretが必要で、多くのディストリビューションには標準搭載されています。

Alpineなど一部環境ではパッケージの手動インストールが必要です。

# Debian/Ubuntu の場合
sudo apt-get install libcurl4 libsecret-1-0 gnome-keyring

まとめ

Microsoft C++ Language Serverのパブリックプレビュー公開により、GitHub Copilot CLIでもIDEと同等のC++解析精度が使えるようになりました。複雑なテンプレートやマクロを含むコードベースでの調査・改修で、即座に効果が見込めます。現時点ではプレビューのため今後の変更もありますが、C++プロジェクトでCopilot CLIを使っている場合は早期に試す価値があります。