リモート開発

リモート開発では、コードベースがローカルマシンにない場合でも、思考のスピードでコーディングできます。Zedはローカルで使用するため、UIはすぐに反応しますが、重い計算は開発サーバーにオフロードするため、効率的に作業できます。

注: リモート機能はまだ「アルファ」版です。完全にリリースする前に、いくつかの変更を行う予定です。

概要

リモート開発では、Zedの2つのインスタンスを実行する必要があります。リモートマシン上のヘッドレスインスタンスと、ローカルコンピュータ上のエディターインターフェイスです。すべての設定はローカルコンピュータで行います。

現在、2つのインスタンスはZedのサーバーを介して接続していますが、機能が完全にリリースされる前に、ピアツーピア通信を構築する予定です。

セットアップ

  1. 最新のZedプレビューをダウンロードしてインストールします。
  2. cmd-shift-p remoteでリモートプロジェクトダイアログを開きます。
  3. "新規サーバー"をクリックします。
  4. SSH経由でセットアップするか、手動セットアップに従うかを選択します。

    注: どちらのオプションでも、ラップトップとリモートマシンはhttps://collab.zed.dev/を介して通信するため、リモートマシンでアウトバウンドインターネットアクセスが必要になります。

  5. ラップトップで、リモートマシンのフォルダを開くことができるようになりました。

    注: Zedは現在、非常に大きなディレクトリ(たとえば、100,000を超えるファイルを持つ可能性のある/~)をうまく処理できません。 これを改善するために取り組んでいますが、それまでは、特定のプロジェクト、または非常に大きなモノレポのサブフォルダのみを開くことをお勧めします。

トラブルシューティング

UIが表示されない

比較的新しいZed(v0.145.0以降)を使用する必要があります。

SSH接続

SSH経由で接続することを選択した場合、指定したコマンドはZedターミナルで実行され、必要なパスワード/キーフレーズなどを入力する機会が与えられます。接続が確立されると、Zedはリモートマシンの~/.local/bin/zedにダウンロードおよびインストールされ、実行されます。

Zedコマンドから出力が表示されない場合は、Zedが起動時にクラッシュしている可能性があります。これをトラブルシューティングするには、手動モードに切り替えて--foregroundフラグを渡します。一緒にデバッグできるように、バグを報告してください。

SSHのような接続

Zedは、ほとんどの「sshラッパー」によって作成された接続を傍受できるようにsshを傍受します。たとえば、次のように指定できます。

  • user@hostは、ssh user@hostを意味すると仮定します。
  • ssh -J jump targetは、ジャンプホストを介して接続します。
  • gh cs ssh -c example-codespaceは、GitHub Codespaceに接続します。
  • doctl compute ssh example-dropletは、DigitalOcean Dropletに接続します。
  • gcloud compute sshは、Google Cloudインスタンスに接続します。
  • ssh -i path_to_key_file user@hostは、キーファイルまたは証明書を使用してホストに接続します。

zed --dev-server-tokenが接続されない

失敗にはいくつかの原因が考えられます。

  • zed --dev-server-tokenは実行されますが出力はありません。これは、Zedのバックグラウンドプロセスが起動時にクラッシュしているためである可能性があります。出力を確認するには、zed --dev-server-token XX --foregroundを実行して、一緒にデバッグできるように、バグを報告してください。
  • zed --dev-server-tokenは、「Connection refused」または「Unauthorized」のようなものを出力してすぐに終了します。これは、ホストからhttps://collab.zed.devへのアウトバウンドHTTPリクエストの作成に問題があることが原因である可能性があります。curl https://collab.zed.devでこれをデバッグしようとすることができますが、curlはホワイトリストに登録されているが、他のバイナリにはネットワークアクセスが許可されていないケースが見られます。
  • zed --dev-server-tokenは「Zed is already running」と出力します。既存のサーバーを編集している場合は、[接続]をもう一度クリックすると機能する可能性がありますが、そうでない場合は、手動でサーバーにログインしてZedプロセスを強制終了する必要があります。

サポートされているプラットフォーム

リモートマシンはZedを実行できる必要があります。次のプラットフォームは機能するはずですが、すべてのLinuxディストリビューションを網羅的にテストしたわけではないことに注意してください。

  • macOS Catalina以降(IntelまたはApple Silicon)
  • Linux(x86_64またはarm64、32ビットプラットフォームはまだサポートしていません)。バージョン2.29(2019年にリリース)以上のglibcがグローバルにインストールされ、利用可能である必要があります。
  • Windowsはまだサポートされていません。

設定と拡張機能

注: これはアルファプログラムが継続するにつれて変更される可能性があります。

リモートインスタンスの設定ファイルを編集できます。これを行うには、ディレクトリ~/.config/zedにサーバーに新しいプロジェクトを追加します。まだ存在しない場合は、settings.jsonというファイルを作成できます。

これは、UI関連の設定は適用されないため、言語サーバーを構成する場合に最も役立つことに注意してください。

言語サーバー拡張機能をインストールする場合は、auto_installed_extensionsのリストに追加できます。繰り返しになりますが、構文強調表示(ローカルのzedで処理されます)を取得するためにこれを行う必要はありません。

{
  "auto_install_extensions": {
    "java": true
  },
}

既知の制限事項

  • "手動接続"を選択した場合、ターミナルまたはタスクを使用することはできません。
  • 同じマシンでヘッドレスモードとGUIモードで同時にzedを実行することはできません。
  • zedコマンドを入力して、リモートターミナルからファイルを開くことはできません。

フィードバック

Zed Discordの#remoting-feedbackチャネルにご参加ください。