やじうまの杜
「Atom」の開発者が究極のコードエディターを目指す ~「Zed」の開発が始動
「Electron」を捨て、Rust言語を採用。GPUI、tree-sitterなどで武装し、超高速なコードエディターに
2021年12月17日 06:45
“やじうまの杜”では、ニュース・レビューにこだわらない幅広い話題をお伝えします。
コードエディター「Atom」の開発者が、新しいコードエディターの開発に着手したようです――その名も「Zed」。おそらく「Z editor」の略で、究極(Z)のエディターを目指す挑戦が始まります。
「Zed」を紹介する前に、まず「Atom」を振り返ってみましょう。
「Atom」は、「Chromium」ベースのUIフレームワーク「Electron」を採用したプログラマー向けのコードエディターです。「Electron」のメリットはどの環境(Windows、Mac、Linux)でも動作すること、HTML/CSS/JavaScriptといったWeb技術との親和性が高く、開発者の参加が見込めることです。
実際、多くの開発者が「Atom」やそのパッケージ開発に参画し、プロジェクトは大いに盛り上がりました。後発の「Visual Studio Code」の成功も、「Atom」なくしてはあり得なかったでしょう。
しかし、「Electron」にもいくつかの課題がありました。とくにJavaScriptの動作がシングルスレッドで、性能向上に限界があったことは問題で、最近すっかり当たり前になっているマルチコアCPUのパフォーマンスを十分に引き出せていません。
また、「Electron」が2012年に誕生してから約10年が経とうとしており、エディターの使われ方にも大きな変化があります。なかでも「Git」に代表されるバージョン管理システムの普及や、複数の開発者によるリアルタイムな共同開発はその最たるものといえるでしょう。
そこで「Zed」は「Electron」を捨て、パフォーマンスを追求することにしました。
最大の特徴は「Rust」の採用です。RustはMozillaの開発者が生み出したシステム開発向けのプログラミング言語で、C/C++と同等以上のパフォーマンスを持ちながら、メモリ安全性を保つことができるのが特徴。「所有権」や「借用」といった独特の概念が少し難しいですが、慣れてしまえばC/C++開発でハマりがちな間違いをコンパイラーがチェックしてくれます。最近ではMicrosoftやGoogleも注目しており、OSやデバイスドライバーの開発に採用されることも増えてきました。
UIフレームワークには、GPUを活用した新設計のものを用意。当初は「Electron」の採用も検討されましたが、結局パフォーマンスのボトルネックは「Electron」だという結論に達し、独自に開発することになったようです。
このフレームワークは「GPUI」と呼ばれており、「Firefox」の「WebRender」から多くのインスピレーションを得ているとのこと。「WebRender」は複雑な3Dグラフィックスを高いフレームレートでレンダリングできますが、比較的シンプルな2Dのユーザーインターフェイスに用途を絞れば、よりパフォーマンスを出せるのではないかというわけです。パフォーマンスのよいコードを安全に書けるRustのよさは、「GPUI」の開発にも活かされています。
そして最後のピースは、矛盾のない複製されたデータ型。これはリアルタイム共同編集で複数の開発者が同じテキストバッファーを扱っても、データに不整合が生じてシステムが破綻しないようにするために必要でした。また、バックグラウンドスレッドに処理を押し付けて、UIの応答性を高めるためにも役立ちます。
「Atom」のアップデートは今年7月のv1.58.0で止まっており、今後はメンテナンスのみとなりそうです。しかし、「Atom」での成果が無駄になるわけではありません。リアルタイム共同開発には「Teletype」での経験が生かされるでしょうし、構文色分け(シンタックスハイライト)には「tree-sitter」がそのまま採用されるとのこと。「Visual Studio Code」でお馴染みの言語サーバープロトコル(Language Server Protocol)への対応も計画されていますが、それがなくても高速な構文解析と強調表示、コードブロックの伸展が行えます。
「Zed」に興味のある開発者やユーザーは、ぜひウェイティングリストに登録してみてください。