AI + リモート開発で生産性を向上
2025年5月27日 Brigit Murtaugh, Christof Marti, Josh Spicer, Olivia Guzzardo McVicker
VS Codeをこれほど柔軟で強力にしている機能の1つに、リモート開発があります。ローカルデスクトップからセキュアなVMに接続する場合でも、タブレットから非常に強力なコンピューターに接続する場合でも、プロジェクトに必要なすべての依存関係を持つコンテナー化された環境に接続する場合でも、VS Codeの「どこからでも何でも開発できる」能力は、ほぼすべてのセットアップで役立ちます。
これらの機能をVS CodeにおけるAIの柔軟性と強力さと組み合わせれば、信じられないほど多用途な開発環境が手に入ります。チャットでの会話がリモートワークスペースのコンテキストを持つようにしたり、リモート接続のセットアップやデバッグでAIの助けを得たり、エージェントモードが自律的に動作するためにより隔離されたスペースを提供したりできます。
このブログでは、既存のリモートセットアップがAIと「ただ連携する」ように強化する方法に加え、カスタム命令、チャット参加者、エージェントの自動承認を含む、よりカスタマイズされたAI+リモートワークフローについて掘り下げていきます。
リモート開発とは?
VS Codeのリモート開発について説明するとき、主に5つのエクスペリエンスを指します。
- Remote - SSH - SSHを使用してリモートマシン/VM上のフォルダーを開くことで、あらゆる場所に接続します。
- Dev Containers - コンテナー内で(またはコンテナーにマウントして)個別のツールチェーンまたはコンテナーベースのアプリケーションを操作します。
- 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に私たちのコードとコーディングプラクティスを伝えるだけでなく、接続しているリモート環境の種類についてより多くの情報を提供することが役立つことを発見しました。例えば、
- これはどのようなリモート環境ですか(例: 開発コンテナー vs 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: 開発コンテナー構成ファイルの追加...コマンドを介して行うこともできます。
-
クイックピックの手順に従います。この例では、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)など、常に次の展開を見据えています。
快適な(スマートでリモートな)コーディングを! Brigit、Christof、Josh、Olivia