GitHub、Copilot CLIのC++言語サーバーがMSBuildプロジェクトを自動構成するようになったと発表、ただしリポジトリのガイド(最終更新10月21日)はなおWindows向け・既定で無効・機能フラグで有効化され起動時にのみ動く実験と説明

Published · AI Daily — AI-assisted deep research, methodology & disclosure

2026年11月10日、GitHubは変更履歴で、Copilot CLI向けのMicrosoft C++ Language ServerがMSBuildのコンパイルコマンド抽出ツールを同梱し、プロジェクトを開いてサーバーを起動するときに自動で呼び出すようになり、エージェントが設定スキルを探して実行する必要はなくなったと述べました。GitHubは生成が決定的で設定時のトークン使用量が減るとしていますが、数字は示していません。10月21日に最終更新されたリポジトリのガイドは、自動MSBuild構成は既定で無効、機能フラグで有効化、Windows向け、起動時のみ動くとしており、READMEも引き続きMSBuildの利用者にスキルの実行を案内しています。どちらが現状かを情報源は示していません。ユーザーごとのstate.jsonの設定で無効化やタイムアウトの指定ができます。CMakeなどのビルドでは引き続き自分でcompile_commands.jsonを用意するかスキルを使います。サーバーはプレビュー段階で、Copilotのサブスクリプションが必要であり、名前の変更、フォーマット、テキストドキュメントの同期には対応していません。

2026年11月10日、GitHubは変更履歴で、GitHub Copilot CLI向けのMicrosoft C++ Language ServerがMSBuildのコンパイルコマンド抽出ツールを同梱し、自動で呼び出すようになったと発表しました。この投稿によると、MSBuildベースのC++プロジェクトで正確なコードインテリジェンスを得る前に、エージェントが別の構成スキルを探して実行する必要はなくなります。本稿は、この変更履歴の投稿と、microsoft/cpp-language-serverリポジトリの3つのページ、つまりREADME、コンパイルコマンド生成のガイド、対応するLSP機能の表に基づいています。プラグインのインストール、プロジェクトのオープン、抽出ツールの実行はしていません。投稿内の画像、投稿がリンクする7月2日の以前の変更履歴、その他のリンク先ドキュメントも読んでいません。

投稿は、以前の設定方法と今回の変更を説明しています。以前は、MSBuildベースのC++プロジェクトで定義へ移動や参照の検索などの言語サーバー機能を使うには、2つのうちどちらかが必要でした。自分でcompile_commands.jsonファイルを用意するか、Copilotが構成スキルを見つけて実行し、コンパイルデータベースを生成するかです。GitHubによると、この追加の探索手順は設定時間を増やし、Copilotがコードの作業を始める前にトークンを消費していました。投稿は変更点を3つ挙げています。コンパイルコマンド抽出ツールは言語サーバーに直接同梱され、常に使えます。Copilotはプロジェクトを開いて言語サーバーを起動するときに抽出ツールを呼び出し、手動の操作やエージェントによる設定スキルは要りません。そして、MSBuildプロジェクトのコンパイルデータベース生成は決定的で、GitHubはこれにより設定時のトークン使用量が減ると述べています。投稿は節約される時間やトークンの数字を示していないため、これらの利点はGitHub自身の説明であり、測定結果ではありません。

このファイルがなぜ重要かは、リポジトリのガイドが説明しています。言語サーバーはcompile_commands.jsonファイルを使い、プロジェクト内の各翻訳単位がどのようにビルドされるかを把握します。コンパイラーオプション、インクルードパス、プリプロセッサー定義はいずれも、サーバーがソースファイルをどう解釈するかに影響します。ガイドによると、このコンパイルデータベースは、正確な定義へ移動、参照の検索、その他のセマンティックなコードインテリジェンスに必要なビルドコンテキストを提供します。ガイドの例では、Copilotに関数の定義を探させたり呼び出し元を特定させたりすると、言語サーバーはそのビルドコンテキストを使ってシンボル間の関係を解決します。

ガイドは、変更履歴の投稿が触れていない条件付きで自動の経路を説明しています。ガイドのMSBuildの節には、自動MSBuild構成は既定で無効で、機能フラグによって実験が有効にされた場合にのみ使えるという注記があります。同じ節はこれをWindowsでの動作として説明しています。実験が有効な場合、compile_commands.jsonの生成が必要なときに、言語サーバーは起動時に同梱の抽出ツールを実行します。READMEのクイックスタートも、CMakeやMSBuild(vcxproj)プロジェクトの利用者に、引き続きgenerate-compile-commandsスキルを実行するよう案内しています。リポジトリのページでは、ガイドの最新コミットは2026年10月21日、READMEは2026年11月3日で、どちらも11月10日の投稿より前です。投稿がこの実験を全員に有効にしたという意味なのか、ガイドが古くなっているのかを情報源は示しておらず、本稿も判断しません。また、実験が自分に対して有効かどうかを利用者が確認する方法も、情報源には書かれていません。

ガイドは、自動の経路がしないことも示しています。これは起動時に動き、CLIセッション中のプロジェクトの変更には反応しません。セッション中にプロジェクトが変わった場合は、Copilot CLIのスキルでcompile_commands.jsonを再生成するようガイドは述べています。こうした変更を検知するファイルシステム監視は今後の更新で予定されているとしていますが、時期は示していません。

ガイドによると、自動抽出を制御する設定が2つあります。これらはWindows上のユーザーごとのstate.jsonファイル、%LOCALAPPDATA%\mscppls\state.jsonに置きます。設定はそのユーザーのすべてのリポジトリに適用され、プロジェクトのcpp-lsp.jsonやCopilot CLIのlsp.jsonに書くものではありません。手順は、C++言語サーバーを使っているCopilot CLIセッションを閉じ、ほかのプロパティをすべて残したままファイルにプロパティを追加または更新し、Copilot CLIを再起動することです。auto_generate_compile_commands_for_msbuildをfalseにすると自動抽出は無効になります。trueにすると再び有効になりますが、機能フラグは回避できず、実験自体も有効になっている必要があります。msbuild_extractor_timeout_secondsはタイムアウトを秒で設定し、自動抽出が有効なときにだけ適用されます。ガイドの例では120です。変更は次回の言語サーバー起動時に反映されます。ガイドは、この状態ファイルには認証データやほかのユーザー設定も含まれうるため、例の内容だけで既存ファイルを置き換えたり、リポジトリにコミットしたり、公開のissueに添付したりしないよう警告しています。

投稿によると、ほかのビルドシステムでは、引き続き自分でcompile_commands.jsonを用意するか、それを生成するスキルを使う必要があります。CMakeについて、投稿は以前のリリースで導入されたコンパイルコマンド生成スキルを挙げ、Copilot CLIに「load project」と頼むことで呼び出すとしています。ガイドは補足として、NinjaまたはMakefileジェネレーターを使うCMakeプロジェクトは、構成コマンドに-DCMAKE_EXPORT_COMPILE_COMMANDS=ONを加えればこのファイルを作れること、ほかのジェネレーターを使うプロジェクトは、まず一度だけNinjaやMakefileで構成できるかを確認すべきことを述べています。実験が有効でない、または自動抽出を無効にしたMSBuildの利用者に対しては、ガイドはそのスキルかサンプルアプリケーションを案内し、複雑なプロジェクトではサンプルの調整が必要な場合があるとしています。独自のビルドについては、手順を再現できるようにプロジェクト専用のスキルとして保存することを勧め、setup-cpp-language-serverスキルを出発点のテンプレートとしています。

READMEは始め方を説明しています。この言語サーバーはプレビュー段階で、今後のリリースで変わる可能性があるとし、Visual StudioとVS Codeで使われているのと同じC++のコードインテリジェンスを、Windows、macOS、LinuxのGitHub Copilot CLIにもたらすと述べています。前提条件は、有効なGitHub Copilotのサブスクリプション、セッションディレクトリに対応したGitHub Copilot CLI(プレリリース版1.0.106-5でテスト済み)、npmです。クイックスタートは6つの手順です。Copilot CLI内で/plugin install cpp-language-server@copilot-pluginsを実行してプラグインを入れる(サーバーが同梱され自動更新される)。npx @microsoft/cpp-language-server --accept-eula --loginを実行してライセンス条項に同意し、GitHubにログインする。compile_commands.jsonファイルを作る。プロジェクトのディレクトリからCopilot CLIを起動する。/lsp showを実行し、「cpp」サーバーが表示されることを確かめる。あとはいつもどおりCopilot CLIを使う。READMEは、エージェントにツールを使わせるために、プロンプトに「use LSP tools」のような語句を加えることを勧めています。

リポジトリの機能表は、サーバーがどの要求に応えるかを示しています。対応しているのは、ホバー、補完、シグネチャヘルプ、定義へ移動、宣言へ移動、型定義へ移動、参照の検索、ドキュメントシンボル、ワークスペースシンボル、呼び出し階層、折りたたみ範囲、プル型の診断、ワークスペースフォルダーです。対応していないのは、名前の変更、コードアクション、コードレンズ、ドキュメントハイライト、そしてドキュメント、範囲、入力時の各フォーマットです。テキストドキュメントの同期も非対応です。表の注記によると、AIエージェントはLSP操作を呼び出す前にディスク上のファイルを更新しておくことが前提です。本稿はこの表を、サーバーはシンボルの名前を変更せず、まだディスクにない編集も見ないという意味に読んでいます。

データと適用範囲について、READMEは、このソフトウェアが利用者と利用状況に関する情報を収集してMicrosoftに送ることがあり、テレメトリーはリポジトリの説明に従って無効にできるとしています。リンク先のコマンドラインオプションのページは、本稿では読んでいません。投稿は、有効なGitHub Copilotのサブスクリプションが必要だとしています。情報源が支えるのは狭い結論です。11月10日、GitHubはCopilot CLIのC++言語サーバーについて、MSBuildの自動設定を説明しました。一方、その日より前に最後に変更されたリポジトリ自身のガイドは、同じ機能をWindows向けで既定では無効の実験として説明しています。設定時間やトークン使用量の測定を示す情報源はありません。

Sources

FAQ

C++言語サーバーは今MSBuildプロジェクトを自動で設定しますか?

GitHubの11月10日の投稿は、同梱の抽出ツールがプロジェクトを開くと自動で動くと述べています。一方、10月21日に最終更新されたリポジトリのガイドは、自動MSBuild構成をWindows向けで既定では無効、機能フラグで利用者に対して有効化される実験としています。どちらが現状か、自分に有効かを確かめる方法は情報源にありません。

自動MSBuild抽出を無効にしたりタイムアウトを変えたりするには?

リポジトリのガイドによると、Windowsでユーザーごとのstate.jsonを、ほかのプロパティを残したまま編集します。auto_generate_compile_commands_for_msbuildをfalseにすると無効になり、msbuild_extractor_timeout_secondsは自動抽出が有効なときだけ働くタイムアウトです。その後Copilot CLIを再起動します。ファイルには認証データが含まれうるため、コミットや共有はしないでください。

このサーバーが対応していないLSP機能は?

リポジトリの機能表は、名前の変更、コードアクション、コードレンズ、ドキュメントハイライト、ドキュメント・範囲・入力時のフォーマットを非対応としています。テキストドキュメントの同期も非対応で、表によると、エージェントはLSP操作の前にディスク上のファイルを更新しておくことが前提です。ホバー、補完、定義へ移動、参照の検索、呼び出し階層は対応しています。