AI + リモート開発で生産性を向上
2025年5月27日 ブリジット・マータフ、クリストフ・マーティ、ジョシュ・スパイサー、オリビア・グザルド・マクヴィッカー
VS Codeを非常に柔軟で強力なものにしている機能の1つは、リモート開発です。ローカルデスクトップからセキュアなVMに接続する場合でも、タブレットから強力なコンピューターに接続する場合でも、プロジェクトに必要なすべての依存関係が揃ったコンテナ化された環境で作業する場合でも、VS Codeの「どこからでも何でも開発できる」機能は、あらゆるセットアップで役立ちます。
これらの機能とVS CodeにおけるAIの柔軟性とパワーを組み合わせれば、驚くほど多用途な開発環境が手に入ります。チャット会話にリモートワークスペースに関するコンテキストを持たせたり、リモート接続のセットアップやデバッグでAIの助けを得たり、エージェントモードが自律的に動作するためのより隔離されたスペースを提供したりすることができます。
このブログでは、既存のリモートセットアップをAIで「ただ動作するように」強化する方法と、カスタム指示、チャット参加者、エージェントの自動承認を含む、よりカスタマイズされたAI+リモートワークフローについて探ります。
リモート開発とは?
VS Codeリモート開発を説明する際、私たちは主に5つの体験に言及します
- Remote - SSH - SSHを使用してリモートマシン/VM上のフォルダーを開くことで、任意の場所に接続します。
- 開発コンテナー - コンテナー内で(またはコンテナーにマウントして)別のツールチェーンまたはコンテナーベースのアプリケーションを操作します。
- WSL - Windows Subsystem for LinuxでLinuxベースの開発体験を得られます。
- Remote - Tunnels - SSHを設定することなく、セキュアなトンネルを介してリモートマシンに接続します。
- GitHub Codespaces - 管理されたリモート環境です。

リモート環境でAIをどのように利用できますか?
VS CodeでのAIコーディング体験を、ローカルマシンで作業している場合でもリモート環境に接続している場合でも、可能な限りシームレスにしたいと考えています。ローカルでGitHub Copilotをすでに使用している場合は、リモートにも自動的にインストールされます。GitHub Codespacesでも設定済みです!
リモート環境でAIを使用するだけで動作しますが、リモートワークフローをさらに強力にする追加のAI機能があります
- カスタム指示 - リモート環境に合わせてAIエクスペリエンスを調整する
- チャット参加者 - チャットを使用してリモート環境をセットアップおよびトラブルシューティングする
- ツールの承認 - リモート環境で自律的なコーディングセッションを安全に実行する
リモート環境に合わせてAIエクスペリエンスを調整する
LLMを使用するユーザーからよく寄せられる要望の1つは、LLMがコードやコーディングプラクティスをよりよく理解するにはどうすればよいか、というものです。これは、特定のコーディングプラクティスや技術スタックに合致する応答を得るための一般的なガイドラインやルールを記述するカスタム指示によって実現できます。このコンテキストをAIチャットのすべてのクエリに手動で含める代わりに、カスタム指示はすべてのチャットリクエストにこの情報を自動的に組み込みます(詳細については、最近のブログ記事をご覧ください)。
私たちのチームの最近のセルフホスティングでは、カスタム指示を使用してCopilotにコードやコーディングプラクティスについて伝えるだけでなく、接続しているリモート環境の種類に関するより多くの情報を提供することが役立つことがわかりました。たとえば、次のような情報です。
- これはどのようなリモート環境ですか(例:開発コンテナーとVMの違い)?
- どのような言語やツールチェーンがインストールされていますか?その目的は何ですか?
- ツールチェーンはどこにインストールされていますか(例:
PATHで利用可能ですか)?
チームが役立つと感じた指示の例を以下に示します
This is a dev container that includes `python3` and `pip3` pre-installed and available on the `PATH`, along with the Python language extensions for Python development.
リモート環境でカスタム指示を使い始めるには、ローカルですでに使用していたのと同じ指示ファイルをリモートでも使用できます。
開発コンテナーのAIを設定する
開発コンテナーは、すべてのツールと依存関係が事前に構成されているため、プロジェクトを簡単に開始できます。カスタム指示を追加することで、LLMが一般的な回答を提供するのではなく、その環境に合わせて調整されるようにすることができます。たとえば、Pythonコーディング用の開発コンテナーには、どのツールがインストールされているか、またはどのコーディングガイドラインに従うかに関するカスタム指示(上記の例で共有されているように)を含めることができます。
当チームは、開発コンテナーを使用する際の皆さんの生活をさらに楽にするために、カスタム指示を事前に構成する措置を講じました。開発コンテナーの作成と接続のプロセスを容易にするために、開発コンテナーのリソース(イメージや機能など)を公開しており、現在これらのファイルにカスタム指示を含めています。当チームが追加したカスタム開発コンテナーの指示をどのように使用できるかの例を以下に示します。
-
私たちのイメージまたは機能のいずれかを使用して、新しい開発コンテナー構成を作成します。これは手動で行うことも、Dev Containers拡張機能が提供するDev Containers: Add Dev Container Configuration Files...コマンドを使用して行うこともできます。

-
クイックピックの指示に従います。この例では、Pythonテンプレートを選択します。

-
VS Codeで開発コンテナーをビルドして接続します。

-
選択して接続した環境は、当社のPythonテンプレートに基づいており、Python機能を介してカスタム指示が含まれています。開発コンテナー内でCopilotとチャットしてみてください。CopilotはPythonイメージからカスタム指示を自動的に取得します!

イメージや機能に追加したカスタム指示を使用するだけでなく、プロジェクトのdevcontainer.jsonにさらにカスタム指示を追加することもできます。カスタム指示がイメージとテンプレート間でうまくマージされるようにしました。上記で説明したPython開発コンテナーの設定と同様に、"github.copilot.chat.codeGeneration.instructions"設定を使用できます。
他のユーザーが使用するために開発コンテナー構成を公開する場合、カスタム指示をそれらに追加する方法を検討することをお勧めします!こちらは、Python開発コンテナー機能でカスタム指示を使用する例です。
"github.copilot.chat.codeGeneration.instructions": [
{
"text": "This dev container includes `python3` and `pip3` pre-installed and available on the `PATH`, along with the Python language extensions for Python development."
}
],
チャットを使用してリモート環境をセットアップおよびトラブルシューティングする
チャット参加者は、データベースや特定のAPIとの対話方法など、ドメイン固有の知識を提供することで、チャットエクスペリエンスを向上させます。チャット入力フィールドに@と入力すると、利用可能な参加者のリストが表示され、そこから選択できます。これらは質問モードで利用できます。@workspace、@vscode、@terminalなどの組み込みチャット参加者がいくつかあります。拡張機能もチャット参加者を提供できます。
Remote - SSH拡張機能には、Copilotチャット参加者が含まれています。リモート環境の要素の設定やトラブルシューティングについては、@remote-sshに尋ねてください。

この参加者は、一般的なSSHおよびリモート開発のトピックについても知識があります。

接続障害が発生した場合、Copilotで診断機能は問題を素早く理解する方法を提供します。

Copilotが問題を調査し、実行可能な洞察を提供します。
リモート環境で自律的なコーディングセッションを安全に実行する
ユーザープロンプトのタスクを完了する一環として、エージェントモードはツールとターミナルコマンドを実行できます。エージェントモードは、コード変更を提案するだけでなく、ターミナルコマンドやツールも実行できるため強力です。たとえば、プロジェクトの依存関係をインストールしたり、テストを実行したりできます。ただし、ファイル削除、ローカル構成の変更など、一部のアクションは破壊的である可能性があります。したがって、エージェントモードでのツールとターミナルコマンドの使用を承認する必要があります。

すべてのツールを自動承認したい場合は、実験的なchat.tools.autoApprove設定を使用できるようになりました。意図しないターミナルコマンドやツール呼び出しからある程度の保護を得るために、この設定を開発コンテナーまたはリモートマシンでのみ設定して、ローカルの開発マシンが影響を受けないようにすることができます。

これにより、すべてのツールが自動承認され、言語モデルがツールを実行したい場合、VS Codeは確認を求めません。これにより、エージェントモードにさらなる自律性を与えることで時間を節約できますが、この設定を有効にすると、モデルが実行しようとする可能性のある破壊的なアクションをキャンセルする機会がなくなることに注意してください。
ローカルマシンの一部であるリモート環境(開発コンテナーなど)や、資格情報にアクセスできるリモート環境は、異なるレベルのリスクをもたらすことに注意してください。
次に来るもの
VS Codeにおけるリモート開発とAIの将来に期待しています。毎月のリリースにはエキサイティングな新機能が満載されており、WebでのCopilot Chatのサポート(vscode.dev、github.dev)など、常に次を見据えています。
ハッピーな(スマートでリモートな)コーディングを! ブリジット、クリストフ、ジョシュ、オリビア