AI + Remote Devによる生産性の向上

2025年5月27日 執筆者: Brigit Murtaugh, Christof Marti, Josh Spicer, Olivia Guzzardo McVicker

VS Codeを非常に柔軟かつ強力にしている機能の1つに、リモート開発(Remote Development)があります。ローカルのデスクトップから安全な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 - 管理されたリモート環境です。

Remote architecture

リモート環境でAIをどのように使用できるか?

私たちは、ローカルマシンで作業している場合でも、リモート環境に接続している場合でも、VS CodeでのAIコーディング体験を可能な限りシームレスにしたいと考えています。すでにローカルでGitHub Copilotを使用している場合は、リモートでも自動的にインストールされます。GitHub Codespacesでも同様に設定済みです!

リモート環境でのAI利用は「そのまま動く」ようになっていますが、リモートワークフローをさらに強力にする追加のAI機能があります。

  • カスタム指示 - リモート環境に合わせてAI体験を調整する
  • チャット参加者 - チャットを使用してリモート環境の設定やトラブルシューティングを行う
  • ツールの承認 - リモート環境で自律的なコーディングセッションを安全に実行する

リモート環境に合わせてAI体験を調整する

ユーザーからLLMを使用する際に最も多く寄せられる要望の1つが、「自分のコードやコーディング習慣をLLMにより良く理解させるにはどうすればよいか?」というものです。これはカスタム指示(Custom instructions)によって実現できます。これには、特定のコーディング習慣や技術スタックに一致する回答を得るための一般的なガイドラインやルールを記述します。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コーディング用の開発コンテナには、どのツールがインストールされているか、あるいはどのコーディングガイドラインに従うべきか(上記の例で共有したように)についてのカスタム指示を含めることができます。

私たちのチームは、開発コンテナを使用する際にさらに楽ができるよう、カスタム指示を事前設定する手順を整えました。開発コンテナへの接続や作成を容易にするためのリソース(イメージやFeaturesなど)を公開しており、これらのファイルにカスタム指示を含めています。私たちのチームが追加した開発コンテナのカスタム指示を使用する方法の例を以下に示します。

  • 提供されているイメージやFeaturesのいずれかを使用して、新しい開発コンテナ構成を作成します。手動で行うことも、Dev Containers拡張機能が提供するDev Containers: Add Dev Container Configuration Files...コマンド経由で行うことも可能です。

    Dev Containers: Add Dev Container Configuration Files command in VS Code Command Palette

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

    Select Python 3 dev container config in VS Code Command Palette

  • VS Codeで開発コンテナをビルドし、接続します。

    VS Code notification to reopen project in dev container

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

    AI chat using custom instructions

イメージやFeaturesに追加したカスタム指示に加えて、プロジェクト内の devcontainer.json に追加のカスタム指示を追加することもできます。カスタム指示がイメージとテンプレート間でうまくマージされるように設計しました。上記で説明したPython開発コンテナの設定と同様に、"github.copilot.chat.codeGeneration.instructions" 設定を使用できます。

もしあなたが他の人が使用できるように開発コンテナ構成を公開しているのであれば、カスタム指示をどのように追加できるか検討してみることをお勧めします!こちらは、Python開発コンテナFeatureでカスタム指示を使用している例です。

"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."
    }
],

チャットを使用してリモート環境の設定やトラブルシューティングを行う

チャット参加者(Chat participants)は、データベースや特定のAPIとの対話方法など、ドメイン固有の知識を提供することでチャット体験を向上させます。チャット入力フィールドに @ を入力すると、利用可能な参加者のリストが表示され、選択できます(Askモードで利用可能です)。@workspace@vscode@terminal など、いくつかの組み込みチャット参加者が存在します。拡張機能もチャット参加者を提供できます。

Remote - SSH拡張機能にはCopilotチャット参加者が含まれています。リモート環境の構成やトラブルシューティングについては @remote-ssh に相談してください。

Using Remote - SSH participant in VS Code chat panel

この参加者は、一般的なSSHやリモート開発に関するトピックについても知識を持っています。

Asking Remote - SSH participant about remote auth

接続エラーが発生した場合、Diagnose with Copilot(Copilotで診断)機能が問題を理解するための迅速な方法を提供します。

Diagnose with Copilot option in notification

Copilotが問題を調査し、実行可能な洞察を提供します。

リモート環境で自律的なコーディングセッションを安全に実行する

ユーザープロンプトに対するタスクを完了させる過程で、エージェントモードはツールやターミナルコマンドを実行できます。エージェントモードは、コード変更の提案だけでなく、ターミナルコマンドやツールの実行も可能なため強力です。例えば、プロジェクトの依存関係をインストールしたり、テストを実行したりできます。ただし、これらのアクションにはファイルの削除やローカル設定の変更など、破壊的なものが含まれる可能性があります。そのため、エージェントモードでのツールやターミナルコマンドの使用には承認が必要です。

Agent mode tool approval options dropdown

すべてのツールを自動承認したい場合は、実験的な chat.tools.autoApprove 設定を使用できます。不用意なターミナルコマンドやツール呼び出しに対する保護レベルを確保するために、この設定を開発コンテナやリモートマシン内でのみ有効にするように選択し、ローカルの開発マシンが影響を受けないようにすることも可能です。

Auto Approve tool setting in VS Code remote settings

これを設定するとすべてのツールが自動承認され、言語モデルがツールを実行したいときにVS Codeは確認を求めなくなります。エージェントモードにより多くの自律性を与えることで時間を節約できますが、この設定を有効にすると、モデルが実行しようとする潜在的に破壊的なアクションをキャンセルする機会がなくなることに留意してください。

ローカルマシンの一部であるリモート環境(開発コンテナなど)や、認証情報にアクセスできるリモート環境では、リスクレベルが異なることに注意してください。

今後の展望

私たちはVS Codeにおけるリモート開発とAIの未来に期待を寄せています。毎月のリリースには素晴らしい新機能が詰め込まれており、Copilot ChatのWeb対応vscode.dev, github.dev)など、次に来るものに常に取り組んでいます。

ハッピー(かつスマートでリモートな)コーディングを! Brigit, Christof, Josh, Oliviaより

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