- Zedの共同設立者Nathan、Max、Antonioとの対談で、技術的な選択の理由、Rustの重要性、技術スタックを所有する意図などについて質問があった
- 彼らはこれらの質問に再び答え、1時間分の対談を編集した内容を共有した
AtomからZedへ: 10年の歩み
- 3人の共同設立者は約10年間一緒に働いており、Atomを開発した後にZedを作ることを決めた。
- ZedのビジョンはAtomの初期ビジョンをさらに洗練・具体化したものであり、技術的選択はこのビジョンに密接に結びついている。
- Rust、GPUアクセラレーション、CRDTsなどの技術選択は、Zedの目標を達成するうえで重要だった。
技術選択とビジョン
- Zedのビジョンは、軽量でありながら必要な時にはIDE機能を提供するテキストエディタを作ること。
- Atom開発時の技術的な限界や開発者の技術的成熟度不足のため、ビジョンを完全には実現できなかった。
- Rustの登場により、既存の限界を克服できる機会が生まれた。
Atomの限界と新たなスタート
- Atomの開発では、JavaScriptの限界とWeb技術の制約により、パフォーマンスの問題が生じていた。
- 2017年、既存プラットフォームの限界を感じ、Zedをゼロから作り直すことを決断した。
- RustとGPUアクセラレーションでパフォーマンスを向上させることを目指した。
Rustの影響
- Rustは高レベルの抽象化を提供しつつ、優れた性能を実現する。
- Rustの「ゼロコスト抽象化」は、テキストエディタ開発において重要な役割を果たした。
- C++やCでも同等の性能は出せるが、Rustは開発者にとってより容易で安全な開発体験を提供する。
全体スタックを所有する重要性
- Zed開発チームは、tree-sitterからGPUアクセラレーションUIフレームワークであるGPUIに至るまで、全技術スタックを所有している。
- 全体スタックを所有することは意図的な選択であり、これにより性能と機能を完全にコントロールできる。
完璧な抽象化と緊急性のバランス
- 必要なものだけ、必要な範囲だけを構築し、学んだことをもとに必要なときに再検討することが重要。
- 重要なコア部分には、品質と性能を確保するために十分な時間をかける。
開発者ツールと技術の関係
- 開発者向けツールのユーザーは技術により関心を示すことがあり、採用技術がユーザーに提供される性能や機能に影響を与える。
- Rustで書かれたZedは、開発者がより簡単に貢献できるようにし、コミュニティ参加を促進する。
GN⁺の意見
- Zedの開発過程は、技術選択が製品のビジョンと性能にどれほど重要かを示している。Rustのような現代的プログラミング言語の選択は、開発者の生産性と製品の性能を同時に向上させることを実証している。
- 全体技術スタックを所有することにより、Zedチームは性能最適化と機能開発に柔軟性を持つことができる。これは高性能テキストエディタの構築において決定的な役割を果たす。
- 開発者ツールでは、採用技術が最終ユーザー体験により大きな影響を与える可能性があり、これはZedが開発者コミュニティにどのように受け入れられるかにも影響する。Rustの採用は、開発者がZedへ貢献することをより魅力的にし、製品の成長と進化にプラスの効果をもたらす。
1件のコメント
Hacker News コメント
カスタム UI フレームワークは現在は面白く見えるかもしれないが、アクセシビリティを実装する際に問題になり得る。パフォーマンスを落とさずにカスタム フレームワークでアクセシビリティを実現するのは簡単ではなく、プラットフォームごとに複雑な作業が必要になる。Zed は単なるエディタではなく協働ツールとして位置づけられているため、開発チームの全員が使えるようにすることが重要だ。
Zed テキストエディタを使う前にユーザーが同意しなければならないライセンスの注意事項。ユーザーコンテンツは「User Content」として分類され、Zed ユーザーとコラボレーションしてプロジェクトを共有する場合にのみ、環境に送信される。Zed はユーザーコンテンツへのアクセスをデバッグとソリューション改善のためにのみ制限している。
Zed エディタは非常に有望に見えるが、リモートホスト/開発コンテナのサポートがないため使えない。VSCode のその機能はワークフローにとって重要で、Mac を VM とコンテナでコードを書くためのゲートウェイとして使うのを好んでいる。これはプロジェクト分離とセキュリティ体制を向上させる。
開発者の開発アプローチに関する洞察を与えてくれる優れたインタビュー。開発をいろいろな角度から見る方法について多く考えている。
Zed は使っていないが、José Valim がコーディングセッションをリアルタイムストリーミングで使っているのを見た。VSCode を主に使っているものの、Zed の「Find All」機能が印象的だった。VSCode と同様に結果パネルを開いて一致するすべてのファイルのスニペットを表示するが、Zed ではその場で直接スニペットを編集できる。これは VSCode では検索結果をクリックしてファイルを開き編集する必要があるのと対照的だ。
Zed が Windows や Linux で動作しない。これらのプラットフォームで動作するようになったら知らせてほしい。
インタビューが非常に良く、『gold-plate』についてどれだけこだわっているかに感心した。最高の成果は通常2回目以降の試行で生まれる。Zed の設定をスクリプトで記述できるようにする予定が気になる。まだ Zed をあまり使っていないが、VSCode と Atom ユーザーを支援する Neon のようなツールがある。
Zed を試してみたが、VSCode に似ていると感じた。マルチプレイヤー機能は Live Share より優れているが、移行を納得させるにはもっと多くのものが必要だ。XCode を代替できれば Zed を使う方向にもっと傾くだろう。XCode での作業に不便を感じており、Android Studio のような iOS 開発体験を望んでいる。
ネイティブアプリを好むが、現在は VSCode を使わざるを得ない。VSCode でカーソルの点滅にとても多くの電力を消費しているのを見て残念に思った。Zed は軽量で高速だが、Jupyter Notebook のサポートや Mac で Ubuntu ボックスを使ってリモート開発することに慣れているため、VSCode がよく機能している。Zed がユーザーのワークフローをサポートするようになるまで、十分に開発を続けてほしい。
Zed の About ページを見てみたところ、リアルタイムコーディング機能が有用に見える。開発者にとっては面白いプロジェクトで、アルゴリズム作成、パフォーマンス最適化、GPU プログラミングなどを行えるだろう。しかし、Vim やターミナルマルチプレクサーと機能的に同等になれない別のテキストエディタが必要なのか疑問である。