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 経由)、または Linux 用 Windows サブシステム内の任意のフォルダーを開き、VS Code のフル機能セットを利用できます。これは、コードがどこに配置またはホストされているかに関係なく、VS Code が完全な IntelliSense (補完機能)、デバッグなどを含む、ローカル品質の開発エクスペリエンスを提供できることを意味します。
VS Code Remote Development は、ローカル編集に比べてどのような利点がありますか?
リモート開発の利点には、次のようなものがあります。
- ローカルで実行している OS とは異なる 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 によって迅速にインストールされ、リモートワークスペース、マシン、およびファイルシステムと直接対話する拡張機能をホストできます。
拡張機能の詳細については、リモート開発のサポートを参照してください。
Remote Development 拡張機能は、リモートマシン、VM、またはコンテナーへのアクセスをどのように保護しますか?
Visual Studio Code Remote Development は、認証とトラフィックのセキュリティ保護のために、セキュアシェルなどの既存の周知のトランスポートを使用します。これらの周知のセキュアトランスポートで使用されるポート以外に、ポートを公開的に開く必要はありません。
挿入される 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
*.vo.msecnd.net
(Azure CDN)
既定では、Remote - SSH はリモートホストでのダウンロードを試行し、接続が確立されるとローカルでの VS Code Server のダウンロードとリモートへの転送にフォールバックします。この動作は、remote.SSH.localServerDownload 設定を使用して、常にローカルでダウンロードしてから転送するか、ローカルでダウンロードしないように変更できます。
Dev Containers 拡張機能は常にローカルでダウンロードし、コンテナーに転送します。
拡張機能: VSIX からインストール... コマンドを使用して、インターネット接続なしで拡張機能を手動でインストールできますが、拡張機能パネルまたは devcontainer.json
を使用して拡張機能をインストールする場合、ローカルマシンと VS Code Server には次の宛先へのアウトバウンド HTTPS (ポート 443) アクセスが必要です。
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.vo.msecnd.net
(Azure CDN)*.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 - extensions を使用している場合、Docker 拡張機能でローカルコンテナーが表示されないのはなぜですか?
既定では、Docker 拡張機能はリモートで実行されます。これは場合によっては理にかなった既定値ですが、VS Code がリモート SSH ホスト、コンテナー、または WSL に接続されている場合、拡張機能はローカルコンテナーを表示しない可能性があることを意味します。
この問題を解決するには、次のいずれかの解決策を使用できます。
-
新しいローカルウィンドウ ([ファイル] > [新しいウィンドウ]) を開き、それを使用してローカルコンテナーを操作します。
-
Dev Containers 拡張機能をインストールし、ローカルコンテナーを表示する必要がある場合は Remote Explorer を使用します。
-
WSL のみ: WSL 2 用 Docker テクニカルプレビューを使用するか、WSL 1 で使用するように Docker Desktop を構成します。
-
Dev Containers のみ: Docker ソケットを転送し、コンテナーに Docker CLI (のみ) をインストールします。
-
extensionKind プロパティを使用して、拡張機能を強制的に
ui
にします。ただし、これにより一部のコマンドが機能しなくなります。
Remote Development を使用するには、ホストにどの Linux パッケージまたはライブラリをインストールする必要がありますか?
Remote Development には、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 | <なし> |
このアプローチは技術的な回避策であり、公式にサポートされている使用シナリオではありません。
この回避策のために環境を構成するには、次の手順に従います。
-
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
-
VS Code サーバーは、インストールプロセス中に patchelf を使用して、sysroot から必要なライブラリを利用します。
patchelf v0.17.x
はリモートサーバーでセグメンテーション違反を引き起こすことが知られています。patchelf >=v0.18.x
を使用することをお勧めします。
-
リモートホストに patchelf バイナリと sysroot をインストールします。
-
次の 3 つの環境変数を作成します。
Remote - SSH 拡張機能を使用して、リモートに接続できるようになりました。接続が成功すると、VS Code は接続がサポートされていないことに関するダイアログとバナーメッセージを表示します。
拡張機能パックの代わりに個々の拡張機能をインストールできますか?
はい。Remote Development 拡張機能パックは、リリースされた最新のリモート機能すべてにアクセスするための便利な方法を提供します。ただし、Marketplace または VS Code 拡張機能ビューから個々の拡張機能をいつでもインストールできます。
拡張機能の設定を確認および構成するにはどうすればよいですか?
Visual Studio Code の他の部分と同様に、Remote Development 拡張機能のそれぞれをその設定を通じてカスタマイズできます。Dev Containers を例として使用すると、拡張機能ビューで拡張機能を開き (⇧⌘X (Windows、Linux Ctrl+Shift+X))、[機能のコントリビューション] に移動して、すべての Dev Containers 設定の一覧を確認できます。
WSL
WSL をターミナルとして使用する代わりに拡張機能を使用する利点は何ですか?
WSL は、Windows セットアップに影響を与えることなく、Linux 固有のフレームワーク/ツール (Python、Go、Rust など) をインストールできる、Windows で実行されている Linux マシンと考えることができます。その後、VS Code と WSL 拡張機能を使用して、Windows にインストールされているものから分離された、WSL にインストールされているもののコンテキストで開発できます。
たとえば、WSL に Go スタック (コンパイラ、デバッガー、リンターなど) をインストールする場合があります。Windows 上でのみ VS Code を実行する場合、スマート補完、デバッグ、定義へ移動ナビゲーションなどの機能を取得するには、同じ 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 にデプロイする場合は、WSL インスタンスをランタイム環境のように設定しながら、Windows で豊富な編集エクスペリエンスを得ることができます。
拡張機能の作成者
拡張機能の作成者として、何をする必要がありますか?
VS Code 拡張機能 API はローカル/リモートの詳細を抽象化するため、ほとんどの拡張機能は変更なしで動作します。ただし、拡張機能は必要な任意のノードモジュールまたはランタイムを使用できるため、調整が必要になる場合があります。更新が必要ないことを確認するには、拡張機能 (特にコンテナー内) をテストすることをお勧めします。詳細については、リモート開発のサポートを参照してください。
ユーザーがリモートで接続している場合、拡張機能はローカルリソースまたは API にアクセスできますか?
VS Code がリモート環境に接続すると、拡張機能は UI または ワークスペース 拡張機能のいずれかに分類されます。UI 拡張機能は ローカル拡張機能ホスト で実行され、UI またはパーソナライズ機能 (テーマなど) を提供でき、ローカルファイルまたは API にアクセスできます。ワークスペース拡張機能は、ワークスペースを持つ リモート拡張機能ホスト で実行され、ソースコード、リモートファイルシステム、およびリモート API に完全にアクセスできます。ワークスペース拡張機能は UI カスタマイズに重点を置いていませんが、エクスプローラー、ビュー、およびその他の UI 要素も提供できます。
ユーザーが拡張機能をインストールすると、VS Code はその種類に基づいて正しい場所を推測し、インストールしようとします。テーマやその他の UI カスタマイズなど、リモートで実行する必要のない拡張機能は、UI 側で自動的にインストールされます。他のすべては、最もフル機能であるため、ワークスペース拡張機能として扱われます。ただし、拡張機能の作成者は、package.json
の extensionKind
プロパティを使用して、この場所をオーバーライドすることもできます。
拡張機能が期待どおりに機能しない場合は、実行場所が正しくないか確認する手順があるか、または別の extensionKind
を持つ必要がある場合があります。また、Remote Development および 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 に使用できるかどうかについて質問がありますが、誰に尋ねればよいですか?
issue を提出してください。
GDPR と VS Code Remote Development
VS Code Remote Development 拡張機能は、Visual Studio Code 自体と同様に GDPR ポリシーに従います。詳細については、一般的な FAQ を参照してください。
質問またはフィードバック
質問やフィードバックはありますか?
- ヒントと裏技を参照してください。
- Stack Overflow で検索してください。
- 機能リクエストを追加するか、問題を報告してください。