VS Codeのエージェントモードを拡張するには、を試してください!

リモート開発のFAQ

この記事では、**Visual Studio Codeリモート開発**拡張機能のそれぞれについて、よくある質問を説明します。SSHコンテナーWSL の各機能の設定と操作の詳細については、各記事を参照してください。または、リモート環境ですばやく実行を開始するのに役立つ入門チュートリアルを試してください。

GitHub Codespacesに関するご質問は、GitHub Codespacesドキュメントを参照してください。

一般

Visual Studio Codeリモート開発とは何ですか?

Visual Studio Codeのリモート開発拡張機能パックを使用すると、コンテナー内、リモートマシン (SSH経由)、またはWindows Subsystem for Linux内で任意のフォルダーを開き、VS Codeのすべての機能を活用できます。これにより、VS Codeは、コードがどこに存在またはホストされているかに関係なく、完全なIntelliSense (補完)、デバッグなど、ローカルと同等の開発エクスペリエンスを提供できます。

VS Codeリモート開発はローカル編集と比較してどのような利点がありますか?

リモート開発の利点には次のようなものがあります。

  • ローカルで実行しているOSとは異なるOSで編集、ビルド、またはデバッグできること。
  • ターゲットデプロイ環境と一致する環境で開発できること。
  • 開発に、ローカルマシンよりも大規模または特殊なハードウェアを使用できること。
  • クラウドや顧客サイトなど、別の場所に保存されているコードを編集できること。
  • 開発環境を分離して、競合を回避し、セキュリティを向上させ、オンボーディングを迅速化できること。

ネットワーク共有やファイルの同期を使用する場合と比較して、VS Codeリモート開発は、開発環境とツールをより詳細に制御できるだけでなく、パフォーマンスも劇的に向上します。

リモート開発拡張機能はGitHub Codespacesとどのように関連していますか?

GitHub Codespacesは、VS Codeと新しいブラウザベースのエディターの両方からアクセスできる、管理されたクラウドホスト型開発環境を提供するサービスです。このサービスにより、VS Codeとブラウザベースのエディターは、SSHサーバーや直接的なネットワークルートを必要とせずに、セルフホスト型環境 (デスクトップまたはサーバー) にアクセスすることもできます。GitHub Codespacesドキュメントで詳細を確認できます。

リモート開発拡張機能とCodespaces拡張機能はテクノロジーと機能を共有していますが、リモート開発拡張機能は個別にリリースされており、GitHub Codespacesとは独立して動作できます。

リモート開発拡張機能はどのように機能しますか?

Visual Studio Codeリモート開発では、特定のコマンドの実行を「リモートサーバー」に移動することで、ローカルのVS Codeインストールが他のマシン (仮想か物理かを問わず) 上のソースコードとランタイム環境と透過的にやり取りできます。**VS Code Server**は、リモートエンドポイントに接続するとVS Codeによってすばやくインストールされ、リモートワークスペース、マシン、およびファイルシステムと直接やり取りする拡張機能をホストできます。

Architecture summary

拡張機能に関する追加の詳細については、リモート開発のサポートを参照してください。

リモート開発拡張機能は、リモートマシン、VM、またはコンテナーへのアクセスをどのように保護しますか?

Visual Studio Codeリモート開発では、セキュアシェルのような既存のよく知られたトランスポートを使用して、トラフィックを認証し保護します。これらのよく知られた安全なトランスポートによって使用されるポート以外に、公開ポートを開く必要はありません。

挿入されるVS Code Serverは、マシンにサインインしたのと同じユーザーとして実行され、VS Codeとその拡張機能が許可なく不適切な昇格されたアクセス権を与えられないようにします。サーバーはVS Codeによって起動および停止され、ユーザーやグローバルなログインまたは起動スクリプトには接続されていません。VS Codeがサーバーのライフサイクルを管理するため、実行されているかどうかを心配する必要はありません。

VS Code Serverを単独でインストールまたは使用できますか?

いいえ。VS Code Serverはリモート開発拡張機能のコンポーネントであり、VS Codeクライアントによって管理されます。エンドポイントに接続するとVS Codeによって自動的にインストールおよび更新され、個別にインストールするとすぐに古くなる可能性があります。他のクライアントによる使用は意図されておらず、ライセンスも付与されていません。

VS Code Serverの接続要件は何ですか?

VS Code Serverのインストールには、ローカルマシンから以下の宛先への送信HTTPS (ポート443) 接続が必要です。

  • update.code.visualstudio.com
  • vscode.download.prss.microsoft.com

デフォルトでは、Remote - SSHはリモートホストでのダウンロードを試み、接続が確立されると、VS Code Serverをローカルでダウンロードしてリモートに転送することにフォールバックします。この動作は、remote.SSH.localServerDownload設定で、常にローカルでダウンロードして転送するか、決してローカルでダウンロードしないように変更できます。

Dev Containers拡張機能は常にローカルにダウンロードされ、コンテナーに転送されます。

インターネット接続なしで拡張機能: VSIX からインストール...コマンドを使用して拡張機能を手動でインストールできますが、拡張機能パネルまたはdevcontainer.jsonを使用して拡張機能をインストールする場合、ローカルマシンとVS Code Serverは、以下の宛先への送信HTTPS (ポート443) アクセスが必要になります。

  • marketplace.visualstudio.com
  • *.gallerycdn.vsassets.io (Azure CDN)

最後に、一部の拡張機能 (C#など) は、download.microsoft.comまたはdownload.visualstudio.microsoft.comからセカンダリ依存関係をダウンロードします。他の拡張機能 (Visual Studio Live Shareなど) には、追加の接続要件がある場合があります。問題が発生した場合は、拡張機能のドキュメントを参照して詳細を確認してください。

サーバーとVS Codeクライアント間のその他すべての通信は、拡張機能に応じて以下のトランスポートチャネルを通じて行われます。

  • SSH: 認証されたセキュアなSSHトンネル。
  • コンテナー: Dockerの構成済み通信チャネル (docker exec経由)。
  • WSL: ランダムなローカルポート。

VS Code自体がアクセスする必要がある場所のリストは、ネットワーク接続に関する記事で確認できます。

Remote - 拡張機能を使用しているときに、Container Tools拡張機能でローカルコンテナーが表示されないのはなぜですか?

デフォルトでは、Container Tools拡張機能はリモートで実行されます。これは一部のケースでは妥当なデフォルトですが、VS CodeがリモートSSHホスト、コンテナー、またはWSLに接続されている場合、拡張機能がローカルコンテナーを表示しない可能性があることを意味します。

この問題を解決するには、以下のいずれかの解決策を使用できます。

リモート開発を使用するために、ホストにインストールする必要があるLinuxパッケージまたはライブラリは何ですか?

リモート開発には、kernel >= 4.18、glibc >=2.28、libstdc++ >= 3.4.25が必要です。最近のx86_64 glibcベースのディストリビューションは最高のサポートを提供しますが、正確な要件はディストリビューションによって異なる場合があります。

muslベースのAlpine Linuxのサポートは、Dev ContainersおよびWSL拡張機能で利用可能であり、ARMv7l (AArch32) / ARMv8l (AArch64) はRemote - SSHで利用可能です。ただし、特定の拡張機能のネイティブ依存関係により、x86_64以外のglibcディストリビューションでは機能しない場合があります。実験的なARMv8l (AArch64) はVS Code Insidersでのみ利用可能であることに注意してください。

追加の詳細については、Linuxでのリモート開発を参照してください。

古いLinuxディストリビューションでVS Code Serverを実行できますか?

VS Codeリリース1.99 (2025年3月) 以降、VS Codeによって配布されるプレビルドサーバーは、glibc 2.28以降に基づくLinuxディストリビューションとのみ互換性があります。これには、たとえばDebian 10、RHEL 8、またはUbuntu 20.04が含まれます。

VS Codeは、これらの必要なライブラリバージョンを含むsysrootが提供されている場合、Remote - SSH拡張機能経由で、VS CodeでサポートされていないOS (glibc >= 2.28およびlibstdc++ >= 3.4.25がないOS) への接続を許可します。このアプローチにより、ユーザーと組織は新しいLinuxディストリビューションへの移行により多くの時間をかけることができます。

VS Codeのバージョン 基本要件
>= 1.99.x kernel >= 4.18, glibc >=2.28, libstdc++ >= 3.4.25, binutils >= 2.29 <なし>
重要

このアプローチは技術的な回避策であり、正式にサポートされている使用シナリオではありません。

この回避策のために環境を構成するには、以下の手順に従ってください。

  1. sysrootをビルドする

    sysrootをビルドするには、Crosstool-ngを使用することをお勧めします。以下に、開始できるいくつかの設定例を示します。

    以下の例のコンテナーは、Crosstool-ngがインストールされた環境を持つためにも使用できます。

    FROM ubuntu:latest
    
    RUN apt-get update
    RUN apt-get install -y gcc g++ gperf bison flex texinfo help2man make libncurses5-dev \
    python3-dev autoconf automake libtool libtool-bin gawk wget bzip2 xz-utils unzip \
    patch rsync meson ninja-build
    
    # Install crosstool-ng
    RUN wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.26.0.tar.bz2
    RUN tar -xjf crosstool-ng-1.26.0.tar.bz2
    RUN cd crosstool-ng-1.26.0 && ./configure --prefix=/crosstool-ng-1.26.0/out && make && make install
    ENV PATH=$PATH:/crosstool-ng-1.26.0/out/bin
    

    Crosstool-ngと関連する設定が準備された環境が整ったら、以下のコマンドを実行してsysrootを生成します。

    mkdir toolchain-dir
    cd toolchain-dir
    cp <path-to-config-file> .config
    ct-ng build
    
  2. VS Codeサーバーは、インストールプロセス中にpatchelfを使用して、sysrootから必要なライブラリを使用します。

重要

patchelf v0.17.xはリモートサーバーでセグメンテーション違反を引き起こすことが知られています。patchelf >=v0.18.xの使用を推奨します。

  1. リモートホストにpatchelfバイナリとsysrootをインストールします

  2. 以下の3つの環境変数を作成します

    • VSCODE_SERVER_CUSTOM_GLIBC_LINKER sysroot内のダイナミックリンカーへのパス (patchelf--set-interpreterオプションに使用)
    • VSCODE_SERVER_CUSTOM_GLIBC_PATH sysroot内のライブラリの場所へのパス (patchelf--set-rpathオプションとして使用)
    • VSCODE_SERVER_PATCHELF_PATH リモートホスト上のpatchelfバイナリへのパス

Remote - SSH拡張機能を使用してリモートに接続できるようになりました。接続が成功すると、VS Codeは接続がサポートされていないことを示すダイアログとバナーメッセージを表示します。

拡張機能パックの代わりに個々の拡張機能をインストールできますか?

はい。リモート開発拡張機能パックは、最新のリモート機能をリリースと同時にすべて利用するための便利な方法を提供します。ただし、マーケットプレイスまたはVS Code拡張機能ビューから個々の拡張機能をいつでもインストールできます。

拡張機能の設定を確認し、構成するにはどうすればよいですか?

Visual Studio Codeの他の部分と同様に、リモート開発拡張機能のそれぞれをその設定を通じてカスタマイズできます。Dev Containersを例にとると、拡張機能ビュー (⇧⌘X (Windows、Linux Ctrl+Shift+X)) で拡張機能を開き、機能貢献に移動することで、すべてのDev Containers設定のリストを確認できます。

List of settings in Feature Contributions

WSL

WSLをターミナルとして使用することと比較して、拡張機能の利点は何ですか?

WSLは、Windows上で動作するLinuxマシンと考えることができます。そこでは、Windowsのセットアップに影響を与えることなく、Linux固有のフレームワーク/ツール (Python、Go、Rustなど) をインストールできます。その後、VS CodeとWSL拡張機能を使用して、Windowsにインストールされているものから分離された、WSLにインストールされているもののコンテキストで開発できます。

たとえば、WSLにGoスタック (コンパイラ、デバッガ、リンターなど) をインストールする場合があります。VS CodeをWindows上でのみ実行する場合、スマート補完、デバッグ、Go to Definitionナビゲーションなどの機能を得るには、同じGoスタックをそこにもインストールする必要があります。また、言語サービスはWindows上で実行されているため、WSL内に何があるかを知りません。

WindowsからWSL内のバイナリを実行できるのは事実であり、その逆も同様ですが、通常のVS Code拡張機能ではこれを行う方法を知りません。これがWSLでのデバッグのサポートを開始した経緯ですが、すぐにすべての拡張機能をWSLについて認識させるように更新する必要があることに気づきました。

代わりに、VS Codeの一部をWSLで実行させ、Windowsで実行されているUIがWSLで実行されているVS Codeサーバーと通信するようにしました。これがWSL拡張機能が有効にするものであり、これによりGo拡張機能は残りのGoツール (コンパイラ、デバッガ、リンター) とともにWSLで実行され、VS CodeはWindows上で実行されます。

このアプローチにより、スマート補完などの言語機能は、Windowsに何もセットアップすることなく、WSL内のものに対して機能します。パスの問題を心配したり、Windowsに異なるバージョンの開発スタックを設定したりする必要はありません。Linuxにアプリケーションをデプロイする場合、Windows上で豊富な編集エクスペリエンスを維持しながら、WSLインスタンスを実行環境のように見えるように設定できます。

拡張機能の作成者

拡張機能の作成者として、何をすべきですか?

VS Code拡張APIはローカル/リモートの詳細を抽象化するため、ほとんどの拡張機能は変更なしで動作します。ただし、拡張機能は任意のNodeモジュールまたはランタイムを使用できるため、調整が必要な状況もあります。更新が不要であることを確認するために、拡張機能を (特にコンテナーで) テストすることをお勧めします。詳細については、リモート開発のサポートを参照してください。

ユーザーがリモートで接続しているときに、拡張機能はローカルリソースまたはAPIにアクセスできますか?

VS Codeがリモート環境に接続すると、拡張機能はUIまたはワークスペース拡張機能のいずれかに分類されます。UI拡張機能はローカル拡張機能ホストで実行され、UIまたはパーソナライゼーション機能 (テーマなど) を提供でき、ローカルファイルまたはAPIにアクセスできます。ワークスペース拡張機能はワークスペースとともにリモート拡張機能ホストで実行され、ソースコード、リモートファイルシステム、およびリモートAPIに完全にアクセスできます。ワークスペース拡張機能はUIのカスタマイズに焦点を当てていませんが、エクスプローラー、ビュー、その他のUI要素も提供できます。

ユーザーが拡張機能をインストールすると、VS Codeはその種類に基づいて正しい場所を推測し、インストールしようとします。テーマやその他のUIカスタマイズなど、リモートで実行する必要のない拡張機能は、UI側に自動的にインストールされます。それ以外のすべての拡張機能は、最も豊富な機能を備えているため、ワークスペース拡張機能として扱われます。ただし、拡張機能の作成者は、package.jsonextensionKindプロパティでこの場所を上書きすることもできます。

拡張機能が期待どおりに機能しない場合は、それが正しい場所で実行されているかどうか、または別のextensionKindを持つべきかどうかを確認する手順があります。また、拡張機能の作成者がリモート開発とCodespacesについて知っておくべきことの詳細については、リモート開発のサポートも参照してください。

ライセンスとプライバシー

場所

VS Codeリモート開発拡張機能のライセンスは、こちらで確認できます。

リモート開発拡張機能またはそのコンポーネントがオープンソースでないのはなぜですか?

Visual Studio Codeリモート開発拡張機能とその関連コンポーネントは、オープンな計画、問題、機能要求プロセスを使用していますが、現在はオープンソースではありません。これらの拡張機能は、GitHub Codespacesなどの完全に管理されたリモート開発サービスや、その関連拡張機能でも使用されているソースコードを共有しています。

詳細については、Visual Studio Codeと「Code - OSS」の違いおよびMicrosoft拡張機能のライセンスに関する記事を参照してください。

リモート開発拡張機能が接続できる場所には制限がありますか?

これらの拡張機能は、個人用および企業用の両方で、独自の物理マシン、仮想マシン、またはコンテナーに接続するために自由に使用できます。これらはオンプレミス、独自のプライベートクラウドまたはデータセンター、Azure、またはその他のクラウド/非クラウドホスティングプロバイダーに存在できます。拡張機能またはその関連コンポーネントの上に公開製品やサービスを構築することはできません (次の質問を参照)。

VS Codeリモート開発拡張機能を使用して、独自の製品またはサービスを構築できますか?

拡張機能は、独自の内部サービスまたはプライベートサービスで使用できます。VS Codeリモート開発拡張機能またはその関連コンポーネント (VS Code Serverなど) の上に公開または商用サービスを構築することはできません。リモート開発拡張機能を拡張または操作する他の拡張機能を作成することはできません。ライセンスには「ソフトウェアをスタンドアロンまたは統合された提供物として提供したり、他のユーザーが使用するためにアプリケーションと組み合わせたりしてはならない」と記載されていますが、サービスと組み合わせて拡張機能を使用する方法を文書化することはできます。

VS Code Serverを独自の公開サービス製品で再パッケージ化または再利用できますか?

いいえ。ライセンスには「ソフトウェアをスタンドアロンまたは統合された提供物として提供したり、他のユーザーが使用するためにアプリケーションと組み合わせたりしてはならない」と記載されており、これはVS Code Serverの上に公開製品やサービスを構築してはならないことを意味します。

Xのために拡張機能を使用できるかどうかについて質問がありますが、誰に尋ねればよいですか?

イシューを提出してください。

GDPRとVS Codeリモート開発

VS Codeリモート開発拡張機能は、Visual Studio Code自体と同様にGDPRポリシーに準拠しています。詳細については、一般的なFAQを参照してください。

質問またはフィードバック

質問やフィードバックがありますか?