IntelliJ IDEA 2024.1 ヘルプ

リモート開発の概要

リモート開発では、シンクライアントで IDE インターフェースを使用しながら、強力なリモートホストを使用して、プロジェクトのチェックアウトとロード、インデックス作成、分析、ビルド、実行、デバッグ、コードのテストを行うことができます。

リモートホストは、ソースコードをホストし、ヘッドレス IntelliJ IDEA インスタンスを実行する物理(Linux)または仮想マシンです。ラップトップなどのシンクライアントはホストに接続し、すべての IDE 機能へのフルアクセスを透過的に提供します。

アーキテクチャと定義

Remote development architecture

このアーキテクチャの断片をよりよく理解するには、次の定義に精通する必要があります。

サーバー

これは、ソースコードをホストし、ヘッドレス IntelliJ IDEA を実行するための物理マシンまたは仮想マシンです。ほとんどの IDE 機能を実行します。

要件: Linux (macOS と Windows は後で登場します)

クライアント

これは、サーバーに接続し、動作するシンクライアントを提供するために使用する物理マシンです。例: これはあなたのラップトップである可能性があります。ただし、クライアントの仕様に制限はありません。

要件: macOS、Linux、Windows

IDE バックエンド

これは、サーバー上で実行されている互換性のある JetBrains IDE です。サーバープロセスとして実行されるため、目に見えるユーザーインターフェースはありません。ヘッドレスです。これは、JetBrains IDE で現在実行している可能性のある実行可能ファイルと同じです。

JetBrains Client

これは、JetBrains Gateway を起動し、リモートサーバーへの接続を確立した後に表示されるシンクライアントです。IDE バックエンドに接続され、ローカルであるかのようにリモート開発を実行できるようになります。

リモートデスクトップソリューションとは対照的に、JetBrains Client には JetBrains Rider の RD プロトコルに基づいた高度なエディターがあり、入力を瞬時に行うことができます。さらに、IntelliJ IDEA サーバーに実装された高度なコードインテリジェンスは、あたかもローカルで実行されているかのように表示されます。

JetBrains Client は IntelliJ プラットフォームに基づいているため、ローカルマシン (クライアント) にあるローカル IDE 設定をインポートします。例: クライアントに IntelliJ IDEA 2021.3 バージョンがインストールされている場合、ダウンロードして起動したばかりの JetBrains Client はその設定をインポートするため、リモート開発エクスペリエンスはユーザーに合わせてカスタマイズされます。

JetBrains Client のバージョンは常にバックエンド IDE のバージョンと同じです。

JetBrains Gateway

これは、リモート開発のエントリポイントです。これはクライアント上で実行され、新しいリモート環境を作成したり、既存の環境に接続したりできます。JetBrains Gateway で環境を要求すると、その環境に固有の JetBrains Client が起動します。

JetBrains Gateway は次のタスクを担当します。

  • 使用しているあらゆる種類のリモートバックエンドへのリモート接続をセットアップできるようにします

  • 既存の最近のリモートプロジェクトの調査

  • 新規または最近のプロジェクトへの接続

  • 指定されたストレージから適切なバージョンの JetBrains Client をダウンロードしています

  • JetBrains Client を起動する

  • 接続を維持します。サーバーへの接続 (SSH、ポート転送、その他のカスタム接続) を構成して確立し、開かれた接続またはポートに対して JetBrains Client を起動するのは、JetBrains Gateway プロセスです。さらに、JetBrains Gateway は、接続の保持、再接続の処理 (UI の同意の有無にかかわらず)、現在の接続に関するステータス情報の表示を担当します。

ワークフロー

リモート開発で利用できる主なワークフローには 2 つのタイプがあります。

  • サーバーからクライアントへのフロー : 組織が最初にリモートヘッドレスサーバーをセットアップするときに、使用可能なサーバーに接続するためにクライアント(ラップトップなど)で使用できるリンク(カスタマイズされているかどうかに関係なく)を取得します。

  • クライアントからサーバーへのフロー : SSH または別の接続を使用してクライアント UI からリモートサーバーをセットアップおよびインストールする場合。

手動で起動したリモート IDE でリモートプロジェクトに接続する (サーバーからクライアントへのフロー)

IntelliJ IDEA がすでにリモートサーバーにインストールされている場合は、手動で起動して、その IDE で開始されたリモートプロジェクトに接続できます。JetBrains Gateway と同じように機能します。

会社にカスタムオーケストレーションがある場合、またはリモート IDE が自動的に起動する場合は、このアプローチを使用します。

このプロセスは次のように説明できます。

  1. リモート IDE でバックエンドプロジェクトを開始します。

  2. バックエンドによって生成された接続リンクの 1 つを選択します。

  3. ローカルマシンでリンクを開きます。

リモート IDE を実行するためのメインスクリプトは remote-dev-server.sh であり、解凍した IDE の bin サブディレクトリにあります。

リモート IDE に接続する

  1. JetBrains Gateway をダウンロードしてインストールしているか、ローカルマシンに JetBrains Gateway プラグインを備えた IDE があることを確認してください。

  2. SSH 経由で IntelliJ IDEA を使用してリモートマシンに接続していることを確認します。

  3. リモートサーバーのターミナルで、次のコマンドを実行します。

    remote-dev-server.sh run /path_to_project/ --ssh-link-host host_server_address --ssh-link-user remote_side_user --ssh-link-port ssh_connection_port

    次の例を確認してください。

    ~/ideaIU-213.3469/bin/remote-dev-server.sh run ~/spring-boot-example/ --ssh-link-host ec2-11-50-136-85.eu-north-1.compute.amazonaws.com --ssh-link-user ubuntu

    パラメーターを渡さない場合、スクリプトはデフォルトのパラメーターを使用します。ポート、システムユーザーのユーザー名、hostname コマンドのホストに 22 を使用します。

  4. プロジェクトが正常に開始すると、出力としてターミナルに次の 3 つのリンクが表示されます。

    • リンクに参加: tcp://127.0.0.1:5990...[ ] : リモート IDE が現在リッスンしているローカルアドレスとポートが含まれています。

      例:

      tcp://127.0.0.1:5991#jt=71e779a1-070e-4fd3-a4e6-83c1f8cb65a5&p=IU&fp=A42F6041C2878D7A22339ECABF4A9C294F643BG05E91E3DFC06035E03DB71BF8&cb=222.4167.29&jb=17.0.4b469.53

      これを使用するには、リモートマシンがこのローカルアドレスからアクセス可能であることを確認してください。例: 転送 / オープンポートを備えた内部 DockerIDE の場合。

    • Http リンク: https://code-with-me.jetbrains.com/remoteDev...[ ] : host-port-user、IDE、そのバージョンに関する情報が含まれています。

      例:

      https://code-with-me.jetbrains.com/remoteDev#idePath=%2Fhome%2Fubuntu%2F.cache%2FJetBrains%2FRemoteDev%2Fdist%2F3e4cd27bfbb95_ideaIU-2022.2.2&projectPath=%2Fhome%2Fubuntu%2Fdevelopment%2Fspring-petclinic&host=ec2-xx-xx-xxx-xx.eu-north-1.compute.amazonaws.com&port=22&user=ubuntu&type=ssh&deploy=false

      ローカルブラウザーで開くと、ようこそページが表示され、事前に入力された接続設定値を使用してローカルゲートウェイアプリケーションの呼び出しが試行されます。

      JetBrains Gateway アプリケーションがローカルマシン上に見つからない場合は、ようこそページからダウンロードできます。

    • ゲートウェイリンク: jetbrains-gateway://connect#idePath ... [] : host-port-user、IDE、そのバージョンに関する情報も含まれています。

      例:

      jetbrains-gateway://connect#idePath=%2Fhome%2Fubuntu%2F.cache%2FJetBrains%2FRemoteDev%2Fdist%2F3e4cd27bfbb95_ideaIU-2022.2.2&projectPath=%2Fhome%2Fubuntu%2Fdevelopment%2Fspring-petclinic&host=ec2-xx-xx-xxx-xx.eu-north-1.compute.amazonaws.com&port=22&user=ubuntu&type=ssh&deploy=false

      ローカルブラウザーで開くと、ようこそページなしでローカル JetBrains Gateway アプリケーションが直接起動します。

  5. 生成されたリンクをコピーし、ローカルブラウザーに貼り付けて、JetBrains Gateway を開くを許可します。

  6. これらのリンクはすべて、すでに発売されている JetBrains Gateway でも開くことができます。

    このためには、JetBrains Gateway のウェルカム画面で実行中の IDE に接続するフィールドにリンクを貼り付け、接続をクリックします。

    IntelliJ IDEA は、必要なバージョンの JetBrains Client をダウンロードし、その中にあるリモートプロジェクトを開きます。

以前にインストールしたリモート IDE を登録する

バージョン 221.5481 以降では、既存のバックエンド IDE をリモートサーバーに手動で登録し、ゲートウェイに表示できるようになります。

インストールされている IDE を登録し、利用可能なビルドのリストに表示するには、次の手順に従います。

  1. SSH 経由でリモートサーバーに接続します。

  2. 解凍された IDE が含まれるフォルダーを見つけて、bin ディレクトリを開きます。

  3. コマンドラインを使用して次のコマンドを実行します。

    remote-dev-server.sh registerBackendLocationForGateway

    例:

    sh WebStorm-221.5591.52/bin/remote-dev-server.sh registerBackendLocationForGateway

これらのリンクは、SSH、カスタム接続、ブラウザーなどのさまざまな接続シナリオで使用できます。

リモート開発セッションの開始の詳細については、「JetBrains Gateway に接続して操作する」を参照してください。

SSH を使用して接続する

  1. JetBrains Gateway を起動します。

  2. SSH 経由で接続を選択します。

  3. SSH 設定を呼び出し、すでに実行中のバックエンドのオプションを構成します。

    JetBrains Gateway は SSH で接続し、既存のバックエンドから接続リンクを取得します。JetBrains Gateway は、接続リンクからローカルマシンにポートを転送し、そのローカルからクライアントへのポートとの新しい接続リンクを準備します。

    また、このリンクを使用して JetBrains Client をダウンロードして起動します。JetBrains Client バージョンはリンクで指定されています。JetBrains Gateway はバックグラウンドで動作し、JetBrains Client がアクティブなままポートを転送します。

カスタム接続を構成する

  1. JetBrains Gateway を起動します。

  2. JetBrains Gateway プラグインによって提供されるカスタム接続 UI を選択します。

    カスタムプラグインは、クラウドサービスに接続したり、そのサービスからバックエンドのリストを取得したり、バックエンドを作成したりする場合があります。

    JetBrains Gateway はカスタムプラグインから接続リンク (ほとんどの場合、ローカルホストとポートを指します) を取得し、このリンクを使用して JetBrains Client をダウンロードして起動します。JetBrains Client バージョンはリンクで指定されています。JetBrains Gateway は、クライアントとサーバー間の接続を維持する必要がある場合に備えて、バックグラウンドに留まることがあります。

ブラウザー経由で接続

  • ブラウザーで、バックエンドの場所を説明する特別に作成されたリンクをクリックします。

    SSH の場合、ユーザー名、サーバー名、SSH ポート、サーバー上のプロジェクトの場所などが含まれます。

    このリンクは、JetBrains Gateway を開くか、クライアントに JetBrains Gateway がない場合はダウンロードすることを提案するランディングページにつながります。JetBrains Gateway はブラウザーから開くリンクを処理し、指定されたバックエンドに接続します。

クライアントからサーバーへのワークフロー

クライアントからサーバーへのワークフローは、リモートサーバーに IDE がインストールされていないことを意味します。この場合、まず JetBrains Gateway をダウンロードしてインストールする必要があります。詳細については、JetBrains Gateway を起動し、リモートサーバーに接続するを参照してください。

SSH 経由で接続

  1. JetBrains Gateway をダウンロードしてインストールします。

  2. JetBrains Gateway ウィザードで、SSH 経由で接続を選択してリモートサーバーに接続します。

  3. ウィザードの次のページで、接続するサーバーを選択します。リモートサーバーに IDE がない場合は、JetBrains Gateway がそれをダウンロードします。

    ユーザーの好みに応じて、IDE は JetBrains サーバーからダウンロードするか、クライアントマシンからアップロードするか、カスタムの場所からダウンロードすることができます。

    RD プロトコルは、IDE バックエンドの各バージョンに固有です。一致するバージョンの JetBrains Client をサーバーにダウンロードする必要があります。

この後、JetBrains Gateway はリモートマシン上で IntelliJ IDEA サーバーを起動し、TCP トンネルを確立し、接続するための適切な引数を指定して JetBrains Client を起動します。

TCP 接続リンクの形式は次のとおりです。

tcp://127.0.0.1:PORT#jt=ONE_TIME_CONNECTION_TOKEN fp=SERVER_FINGERPRINT cb=THIN_CLIENT_BUILD jb=THIN_CLIENT_RUNTIME_VERSION

次の例を確認してください。

tcp://127.0.0.1:5990#jt=3f2f2471-84f2-4d8b-ac67-c1698f5a1be7 fp=ABC88C383B0A62654C4EF75052C60D4D475885075DCA5B85733BD8D4B9E28CC 0 cb=213.2667 jb=11_0_11b1620.1

拡張性

IDE バックエンド

IDE バックエンドは本格的な JetBrains IDE であり、特別なヘッドレス無人モードで起動されたばかりです。

バックエンドは、次の方法で IntelliJ IDEA プラグインのすべての多様性で拡張できます。

プラグインがインスペクションと機能の新しいセットを提供する場合、それらはすべて JetBrains Client に表示されます。

リモート開発に影響を及ぼさない唯一のプラグインは、UI を積極的に変更するプラグインです。このようなプラグインは JetBrains Client 側にインストールする必要があります。

JetBrains Gateway SDK

JetBrains Gateway は、他の IntelliJ プラットフォームベースの製品と同様に拡張できます。

次のいずれかの方法を使用できます。

クライアント上の JetBrains Gateway/ シック IntelliJ IDEA

基本的な SSH および Code With Me 接続とは別に、ベンダーは独自のオーケストレーションサービス用に JetBrains Gateway をカスタマイズできます。これは、JetBrains とベンダー間のカスタム契約内で行うことができます。

JetBrains Gateway は IntelliJ プラットフォームに基づいており、JetBrains Client との接続と対話のための API を備えています。

次の例を確認してください。

大きな組織は独自のオーケストレーションを作成したいと考えています。セキュリティ上の理由から、基本的な SSH フローでは十分ではありません。組織は内部プラグインを作成し、開発者に提供します。開発者は、このプラグインをラップトップの JetBrains Gateway または IntelliJ IDEA にインストールできます。

これは、API の非常に簡単な紹介です (API はまだ最終版ではなく、実際、これが全範囲ではありませんが、全体的な概念を説明しています)。

JetBrains Client

JetBrains Client は接続部分の拡張ができない仕様となっております。ただし、さまざまな IntelliJ IDEA プラグインをすべて開発してインストールすることはできます。これらのプラグインは、UI、キーボードショートカット、テーマ、IDE UI の操作に関わるその他の部分を変更しますが、その機能は変更しません。