Remote Development (リモート開発) FAQ

この記事では、Visual Studio Code Remote Development 拡張機能の各機能に関するよくある質問を取り上げています。各機能のセットアップや使用方法の詳細については、SSHコンテナー (Containers)、および WSL の記事を参照してください。また、リモート環境をすぐに使い始めるための入門用チュートリアルもぜひお試しください。

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

全般

Visual Studio Code Remote Development とは何ですか?

Visual Studio Code の Remote Development 拡張機能パックを使用すると、任意のフォルダーをコンテナー内、リモートマシン上(SSH経由)、または Windows Subsystem for Linux (WSL) 内で開き、VS Code の全機能を利用できます。つまり、コードの場所やホスト先に関係なく、フル機能の IntelliSense (コード補完)、デバッグなど、ローカル環境と同等の開発体験を VS Code で実現できます。

ローカルでの編集と比較して、VS Code Remote Development にはどのような利点がありますか?

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

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

ネットワーク共有やファイルの同期と比較して、VS Code Remote Development はパフォーマンスが劇的に向上し、開発環境やツールをより細かく制御できます。

Remote Development 拡張機能と GitHub Codespaces はどのように関連していますか?

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

Remote Development 拡張機能と Codespaces 拡張機能はテクノロジーや機能を共有していますが、Remote Development 拡張機能は個別にリリースされており、GitHub Codespaces から独立して動作可能です。

Remote Development 拡張機能はどのように動作しますか?

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

Architecture summary

拡張機能に関する詳細については、「リモート開発への対応」を参照してください。

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

Visual Studio Code Remote Development は、SSH (Secure Shell) などの既存の確立された通信プロトコルを使用して、認証と通信の保護を行います。これらの安全な通信に使用されるポート以外に、公開ポートを開く必要はありません。

インストールされた VS Code Server は、ログインに使用したのと同じユーザー権限で実行されるため、VS Code やその拡張機能が許可なく不適切な昇格権限を与えられることはありません。サーバーは VS Code によって開始・停止され、ユーザーのログインスクリプトやグローバルな起動スクリプトには組み込まれません。VS Code がサーバーのライフサイクルを管理するため、実行状態を気にする必要はありません。

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

いいえ。VS Code Server は Remote Development 拡張機能の一部であり、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 拡張機能は常にローカルでダウンロードを行い、コンテナー内に転送します。

インターネット接続がない場合でも、Extensions: Install from 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 自体がアクセスする必要がある場所のリストは、ネットワーク接続に関する記事で確認できます。

リモート拡張機能を使用しているとき、なぜ Container Tools 拡張機能でローカルのコンテナーが見えないのですか?

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

この問題を解決するには、以下のいずれかの解決策を使用してください。

  • 新しいローカルウィンドウ(ファイル > 新しいウィンドウ)を開き、それを使用してローカルコンテナーを操作する。

  • Dev Containers 拡張機能をインストールし、ローカルコンテナーを確認する必要がある場合は Remote Explorer を使用する。

  • WSL のみ: Docker Technical Preview for WSL 2 を使用するか、WSL 1 で使用するために Docker Desktop を構成する。

  • Dev Containers のみ: Docker ソケットを転送し、コンテナー内に Docker CLI (のみ) をインストールする。

  • extensionKind プロパティを使用して、拡張機能を ui で強制的に実行する。ただし、これにより一部のコマンドが動作しなくなる可能性があります。

リモート開発を使用するには、ホストにどのような Linux パッケージやライブラリをインストールする必要がありますか?

リモート開発には、カーネル 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 では、これらの要件を満たさない OS(glibc 2.28 未満または libstdc++ 3.4.25 未満の OS)であっても、必要なライブラリバージョンを含む sysroot が提供されている場合は、Remote - SSH 拡張機能を使用して接続することが可能です。このアプローチにより、組織が新しい Linux ディストリビューションへ移行するための時間を確保できます。

VS Code バージョン 基本要件 注記
>= 1.99.x カーネル >= 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 はその接続がサポートされていないことを示すダイアログとバナーメッセージを表示します。

32ビット ARM Linux ホストで VS Code Server を実行できますか?

VS Code 1.122 が、32ビット ARM Linux ホストでのビルド済みサーバー実行をサポートする最後のリリースです。VS Code 1.123 以降では、リモート開発にはサポートされている x86_64 または ARM64 Linux ホストが必要になります。

拡張機能パックではなく、個別の拡張機能をインストールできますか?

はい。Remote Development 拡張機能パックは、最新のリモート機能をリリースと同時に利用できる便利な方法ですが、マーケットプレイスや VS Code の拡張機能ビューから個別の拡張機能をいつでもインストールできます。

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

Visual Studio Code の他の部分と同様に、各 Remote Development 拡張機能の設定をカスタマイズできます。例として Dev Containers を挙げると、拡張機能ビュー (⇧⌘X (Windows, Linux Ctrl+Shift+X)) で拡張機能を開き、機能の貢献 (Feature Contributions) に移動することで、すべての設定リストを確認できます。

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 上だけで実行する場合、スマート補完やデバッグ、定義への移動などの機能を利用するために、Windows 上にも同じ Go スタックをインストールしなければなりません。また、言語サービスは Windows 上で実行されるため、WSL 内にあるものを認識できません。

確かに、Windows から WSL 内のバイナリを実行することは可能ですが、通常の VS Code 拡張機能はその方法を知りません。当初は WSL でのデバッグをそのようにサポートしていましたが、すべての拡張機能を更新して WSL に対応させる必要があることにすぐに気づきました。

そこで私たちは、VS Code の一部を WSL 内で実行し、Windows 上で実行されている UI が WSL 内の VS Code Server と通信できるようにすることにしました。これが WSL 拡張機能によって実現されることで、VS Code の UI は Windows で実行されながら、Go 拡張機能とすべての Go ツール (コンパイラ、デバッガ、リンター) は WSL 内で実行されるようになります。

このアプローチにより、スマート補完などの言語機能は、Windows 側で何も設定しなくても WSL 内の環境に対してそのまま動作します。パスの問題や、異なる開発スタックのバージョン設定を気にする必要はありません。Linux 用にアプリケーションをデプロイする場合、Windows 上でのリッチな編集体験を維持しつつ、WSL インスタンスをランタイム環境と一致させることができます。

拡張機能の開発者向け

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

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

リモート接続時に、拡張機能はローカルのリソースや API にアクセスできますか?

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

ユーザーが拡張機能をインストールすると、VS Code はそのタイプに基づいて適切な実行場所を推論しようとします。テーマや UI カスタマイズのようにリモートで実行する必要のない拡張機能は、自動的に UI 側にインストールされます。その他は、最も高機能である必要があるため、ワークスペース拡張機能として扱われます。ただし、拡張機能の作者は package.jsonextensionKind プロパティを使用して、この場所をオーバーライドすることもできます。

拡張機能が期待通りに機能しない場合は、適切な場所で実行されているか、あるいは異なる extensionKind が必要かどうかを確認する手順があります。また、拡張機能の作者が知っておくべきリモート開発と Codespaces に関する詳細については、「リモート開発への対応」を参照してください。

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

場所

VS Code Remote Development 拡張機能のライセンスは以下で確認できます。

なぜ Remote Development 拡張機能やそのコンポーネントはオープンソースではないのですか?

Visual Studio Code Remote Development 拡張機能とその関連コンポーネントは、公開された計画策定・課題管理・機能リクエストプロセスを採用していますが、現時点ではオープンソースではありません。これらの拡張機能は、GitHub Codespaces のようなフルマネージドのリモート開発サービスやその関連拡張機能でも使用されるソースコードを共有しています。

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

Remote Development 拡張機能の接続先に制限はありますか?

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

VS Code Remote Development 拡張機能を使用して、独自の製品やサービスを構築できますか?

自身の内部サービスやプライベートサービスには使用できます。VS Code Remote Development 拡張機能や関連コンポーネント(VS Code Server など)の上に、公的または商用サービスを構築することはできません。また、Remote Development 拡張機能を拡張または操作する他の拡張機能を作成することもできません。ライセンスでは「本ソフトウェアを単独または統合的な製品として提供することや、他者が使用するためにあなたのアプリケーションと組み合わせること」を禁じていますが、自身のサービスと連携させて拡張機能を使用する方法をドキュメント化することは可能です。

独自の公的サービスにおいて VS Code Server を再パッケージ化したり再利用したりできますか?

いいえ。ライセンスには「本ソフトウェアを単独または統合的な製品として提供することや、他者が使用するためにあなたのアプリケーションと組み合わせることを禁ずる」と明記されており、これは VS Code Server を基盤とした公的製品やサービスの構築を禁止するものです。

拡張機能を「X」のために使用できるかという質問は、誰に聞けばよいですか?

GitHub の issue を作成してください。

GDPR と VS Code Remote Development

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

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

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

© . This site is unofficial and not affiliated with Microsoft.