初見JetBrains の新しいコア エディターおよび IDE である Fleet を初めて見たとき、最小限のデザインと、コラボレーションとリモート開発を念頭に置いたアーキテクチャが期待できますが、プレビューにはまだ粗削りな点が多くあります。
Fleet での Java アプリケーションのデバッグ
Fleet が重要なのは、JetBrains の新しいベース IDE であり、Google の Android Studio を含む多数の IDE のコアとして使用されている IntelliJ を最終的に置き換える可能性があるからです。ただし、IntelliJ を廃止する予定はまだなく、Fleet はまだ初期プレビュー段階です。
Fleet を一言で表すなら「ミニマリスト」です。初回起動時は、タイトルバーにいくつかのコントロールが埋め込まれた白い空のウィンドウが表示されます。ワークスペース(実質的にはプロジェクトフォルダ)が開かれるまでは、ほとんど何もできません。ワークスペースが開かれると、ファイルの作成と編集はできますが、それ以外はほとんど何もできません。リファクタリングやコード解析などの機能は無効になっています。
タイトル バーの右上にあるスマート モード ボタンをクリックすると、開発者は「完了、エラー検出、修正、リファクタリング」を有効にするオプションを利用できるようになります。
ドキュメントには、「有効化ボタンをクリックした後、バックエンドの準備が整うまでしばらくお待ちいただく場合があります」という警告があります。これは事実であり、Fleetはボタンが初めてクリックされた際に、分析対象となるコードが存在すると想定して、依存関係のダウンロードとインデックス作成を延々と行います。完了すると、Fleetはミニマルなデザインを維持しながら、完全なIDEになります。
FleetはIDEというよりはスマートなコードエディタのような感じで、ミニマリストなデザインになっています。
スマートモードボタンの機能は、Visual Studio Codeのワークスペーストラスト機能と概念的に似ています。問題は、インテリジェントエディターがソースコードをバックグラウンドで解析・実行することです。開発者が悪意のあるコードを含むプロジェクトを開いた場合、セキュリティリスクが発生します。
パッケージ マネージャーによって自動的にダウンロードされる何千ものファイルの中に悪意のあるものがあるかどうかを知ることは簡単ではありませんが、これらの機能により、少なくとも開発者はスマート機能を有効にする前にコードを安全に閲覧できるようになります。
FleetのスマートモードはVS CodeのWorkspace Trustに似ています。
「バックエンド」とは何でしょうか?JetBrainsがIntelliJの代替としてFleetを設計した主な理由はこれです。バックエンドとは、インデックス作成、静的解析、検索などを行うサービスです。
フロントエンドは、基本的なファイル解析を行うUIです。ワークスペースサーバーは中間に位置し、フロントエンドの状態を維持し、必要に応じてバックエンドサービスを呼び出します。1つのワークスペースに複数のフロントエンドを接続できます。
FSDaemon (Fleet Service Daemon) と呼ばれる Fleet コンポーネントはワークスペースの一部であり、ソース コードがある場所で実行され、プロジェクトのビルド、コードの実行、またはターミナル コマンドの実行のためのコマンドを実行します。
複数のフロントエンドをサポートし、ワークスペースを中央に表示するフリートアーキテクチャ
Fleet がローカルで実行されている場合、これらすべてのコンポーネントは同じシステム上で実行されます。ただし、このアーキテクチャはワークスペースがリモートにある場合に真価を発揮します。
このプレビューでは、JetBrainsはLinux上で動作するスタンドアロンのFleetワークスペースサーバーも提供しています。Ubuntuを使用して、WSL(Windows Subsystem for Linux)2.0で試してみました。ワークスペースサーバーは実行可能ファイルで、プロジェクトへのパスを引数として受け取り、jetbrains.com上のリレーサービスを指すURLと一意の識別子を出力します。
Fleetがインストールされているシステムであれば、そのURLを開くだけでFleetの起動プロンプトが表示され、プロジェクトの作業を開始できます。試しに、マジックURLを使ってMacでWSLプロジェクトを開いてみました。URLをクリックすると、「このページでJetBrains Toolboxを開くことを許可しますか?」というダイアログが表示されました。プロンプトに同意すると、Mac上でFleetが起動し、WSLインスタンスへのフルアクセス(Fleet内のターミナルを含む)が可能になりました。
プロジェクトはリモートで行われるため、コードのビルドはリモートシステムで行われます。ポート転送により、リモートで実行されているWebアプリケーションをローカルマシンでテストできます。
マジックURLをクリックすると、リモート開発環境にアクセスできます。
ここでもVS Codeとの類似点があります。VS Codeにはリモートサーバーがあり、このモードでVS Codeを使用する際にほとんどの作業が実行されます。しかしFleetでは、複数の開発者がワークスペースを開くと、即座にコラボレーション環境が構築されます。つまり、すべての開発者が実質的に同じIDEを共有していることになります。
この結果は、複数の開発者がコードを共同編集できるVS CodeのLive Share機能や、JetBrainsのCode with Meに似ています。このシステムは柔軟性が高く、JetBrainsによると、開発者はローカルセッションを他の開発者と共有したり、Dockerコンテナで実行されているFleetに接続したり、将来的にはクラウドホスト型のFleetを使用できるようになる予定です。ただし、現在のプレビューは初期段階であり、リモートセッションへの認証が不足しているなど、機能に制限があります。
共同コーディングはペアプログラミング(2人の開発者が共同で作業する)や問題解決に役立つ機能ですが、主な共同作業手法は依然としてGit(または代替のバージョン管理システム)モデルであり、各開発者が自分のコードのコピーで独立して作業する点に留意してください。Fleetでは、このコードはリモートサーバー上に配置できますが、各開発者は依然として独自の環境を必要とします。
Fleetのユーザーインターフェースにおける重要なコマンドはCmd-Kです。このコマンドは、Goto(コード検索)、Actions(実行可能なアクションの一覧)、Tools(ファイルツリー、Git、ターミナルなど)、そしてテキスト検索を含むタブ付きパネルを開きます。ActionsタブはVS Codeのコマンドパレットを彷彿とさせます。ユーザーインターフェース内の階層メニューをナビゲートするのではなく、入力することでメニュー項目を検索するというモデルです。
このフリートアクションパネルはVS Codeのコマンドパレットに似ています
プレビュー版での経験から言うと、Fleetはまだ使いにくく、特にWindowsでは顕著です。Fleetの起動に時間がかかったり、FSDaemonが過剰にCPUを100%消費したり、新しいワークスペースが開けなかったりと、長時間の停止に悩まされました。macOSでは動作が改善しました。
Fleetはインデックスの更新に多くの時間を費やしているようです。また、Gitリポジトリの初期化や、既に初期化されているGitリポジトリの認識といった一般的なタスクでもエラーが発生しました。プラグインによるFleetの拡張機能をはじめ、いくつかの重要な機能が欠けています。現在サポートされている言語はJava、Kotlin、Python、Go、JavaScript、Rust、JSONで、PHP、C++、C#、HTMLは「近日公開」とされています。
- すべてのデータベースは私たちのもの: AWSはすべてのデータサイロを自社のプラットフォーム上に置きたいと考えている
- Rustは地球を救えるのか?その理由と、救えない理由
- JetBrainsの全面的改革:リモート開発の導入、新IDEのプレビュー
- New Relic は CodeStream を大量に消費し、開発者がアプリのエラー テレメトリから問題のあるコードに直接ジャンプできるようにします。
早期プレビューでは多少の粗削りな部分が予想されますが、プラス面としては、ミニマルなデザインはコードに集中したい開発者にとって理想的です。リモート開発への関心の高さを考えると、IDEをゼロから設計することは理にかなっています。JetBrainsは、セキュリティ面でのメリットに加え、開発者用PCのセットアップを簡素化できると述べています。
同社は、言語サーバー(コード補完、エラー検出などをサポート)やリファクタリングなど、IntelliJ 向けに行われた作業の多くを再利用できることになる。
VS Codeとの類似点も数多くあるようですが、重要な違いもいくつかあります。例えば、VS Codeはブラウザベースで動作しますが、Fleetは常にアプリケーションのローカルインストールに依存し、JavaScriptではなくKotlinで記述されています。
しかし、ある意味ではFleetはVS Codeの影響力を示しています。完全なIDEのパワーを備えながらも、スマートなコードエディタのように感じられるのは良いことです。®