AI + リモート開発で生産性を向上
2025年5月27日 by 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 にコードやコーディング習慣について伝えるだけでなく、接続しているリモート環境の種類に関する詳細情報を提供するためにカスタム指示を使用することが役立つと分かりました。例えば、
- これはどのような種類のリモート環境か(例:開発コンテナーか 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 やリモート開発のトピックについても知識が豊富です。
接続に失敗した場合、Diagnose with Copilot 機能を使用すると、問題を素早く理解できます。
Copilot が問題を調査し、実行可能な洞察を提供します。
リモート環境で自律的なコーディングセッションを安全に実行する
ユーザーのプロンプトに対するタスクを完了する一環として、エージェントモードはツールやターミナルコマンドを実行できます。エージェントモードは、コードの変更を提案するだけでなく、ターミナルコマンドやツールを実行できるため強力です。例えば、プロジェクトの依存関係をインストールしたり、テストを実行したりできます。しかし、これらのアクションの中には、ファイルの削除やローカル設定の変更など、破壊的なものもあります。そのため、エージェントモードでのツールやターミナルコマンドの使用を承認する必要があります。
すべてのツールを自動承認したい場合は、実験的な chat.tools.autoApprove
設定を使用できます。意図しないターミナルコマンドやツール呼び出しからある程度の保護を提供するために、この設定を開発コンテナーやリモートマシンでのみ設定して、ローカルの開発マシンが影響を受けないようにすることができます。
これにより、すべてのツールが自動承認され、言語モデルがツールを実行しようとしても VS Code は確認を求めません。これにより、エージェントモードにより多くの自律性を与えることで時間を節約できますが、この設定を有効にすると、モデルが実行しようとする潜在的に破壊的なアクションをキャンセルする機会がなくなることに留意してください。
ローカルマシンの一部であるリモート環境(開発コンテナーなど)や、認証情報にアクセスできる環境は、異なるレベルのリスクをもたらすことに注意してください。
今後の予定
私たちは、VS Code におけるリモート開発と AI の未来にワクワクしています。毎月のリリースにはエキサイティングな新機能が満載で、ウェブ上(vscode.dev、github.dev)での Copilot Chat のサポートなど、常に次を見据えています。
ハッピー(スマートでリモートな)コーディング! Brigit、Christof、Josh、Olivia より