世界を動かす技術を、日本語で。

ZedエディタがグラフィックスライブラリをBladeからwgpuに切り替え

概要

  • CLAの署名 および ラベル付与 の概要
  • Linuxレンダラーの再実装 に関するPR内容
  • 関連GitHub Issue へのリンク
  • PR作成時の注意事項 の説明
  • コード変更点の要約

CLA署名とPR管理

  • cla-bot bot による cla-signedラベル の自動付与
  • Contributor License Agreement (CLA)への署名確認フロー
  • ラベル付与日 :2026年1月14日
  • PR管理の自動化 による運用効率化

Linuxレンダラーの再実装

  • bladeの削除 および Linuxレンダラーのwgpuによる再実装
    • maxdeviant によるタイトル変更履歴
    • タイトル :"remove blade, reimplement linux renderer with wgpu"
  • gpui プロジェクトにおける Linuxレンダラー刷新
  • macOS向け には metal_renderer を使用
    • macos-blade フィーチャーフラグによる条件付きモジュール切り替え

関連GitHub Issueリンク

  • niri-wm/niri#2335
  • #44814
  • #40481
  • zortax/zlaunch#15
    • PR本文冒頭 に「Closes #ISSUE」記述でIssue自動クローズが可能

PR作成時の注意事項

  • PR本文の最上部 に「Closes #ISSUE」行を追加する運用推奨
  • dangerJS による自動生成コメント
    • コミットID :f988a34に対するチェック
  • 安全性コメント の記載:
    • ウィンドウハンドル の有効期間保証
    • RawWindow構造体surface のライフタイム管理

コード変更点要約

  • metal_renderer のデフォルト使用
  • macos-blade フィーチャー時のみ blade モジュールを利用
  • unsafeブロック による surface生成
    • ネイティブウィンドウハンドル からのRawWindow生成
    • surfaceのドロップタイミングウィンドウのライフタイム 保証

PRステータス管理

  • Open/Closed ステータスの追跡
  • 複数Issueとの関連付け による進捗可視化
  • 自動化ツール (dangerJS, cla-bot)による効率的運用

Hackerたちの意見

wgpuに移行することで面白い副作用があるんだけど、理論的にはもう少し手を加えれば、Zedをウェブブラウザで動かせるようになるかもしれない。まるでVSCodeをサーバーで動いているバックエンドのリモートインターフェースとして使うようにね。

安いAWS EC2インスタンスでこれができるの?

PRからすると、WGPUへの切り替えはLinuxだけみたいだね。チームはmacOSやWindowsでも同じことをするのに消極的だったみたいで、これらのプラットフォームのネイティブレンダラーの方が良くて、メモリも少なくて済むと感じていたみたい。

いや、そうでもないよ。ウェブにポータブルに近いレンダラーがあるってことは意味するけど、「少し手を加えれば」ウェブで動くエディターがあるわけじゃない。レンダラーはこのPRの前からすでにモジュラーだったし。

PRからmaddythewispの引用: > Zedをブラウザで動かすためには、レンダラー以外にもかなりの作業が必要になる - 特にバックグラウンドタスクやファイルシステム/入力APIはウェブ/WASM互換の実装が必要になる。

ブラウザでのレンダリングは、VSCodeのようにリモート編集ができることとは関係ないよ。ブラウザがアクセスできるファイルを編集できるだけだからね。ローカルのVSCodeをSSH経由でランダムなサーバーに接続するのと同じで、ブラウザでのレンダリングはクライアント配布のための便利な手段に過ぎない。VSCodeが持っているような完全なクライアント/サーバーエディタのアーキテクチャが必要なんだ。

リモート編集(リモートサーバーにあるファイルを編集すること)について話してるなら、Zedはすでにそれをサポートしてるよ?

RustのGUIは今、厳しい状況にあるよ。重要な依存関係が人手不足で、プロジェクトも半分実装されたまま。LLMの登場がちょうどタイミング良く、エコシステムを数年後退させてしまったと思う。昨日、これについて書いたんだけど、私たちの開発にどう影響したかはここにあるよ: https://tritium.legal/blog/desktop

本当に?今、gpui-componentがあるから、以前よりも良くなったと思うけど。それによって、商業リリースにも耐えうる洗練された完全なネイティブGUIが実現できる扉が開かれた感じ。これに該当するものは他に見たことないけど、一つの選択肢が出てきたのはスタートとしていいね。

面白い読み物だけど、Casey Muratoriと同じ世代の人間としてはあまり意味がわからないな。 > 「イミディエイトモード」GUIはCasey Muratoriが20年以上前のトークで考案したものだ。彼が昔を経験していない人たちに知らしめたかもしれないけど、これは8ビットや16ビットのホームコンピュータでGUIをプログラムする方法だったし、ゲーム機でもずっと使われてきたことなんだよ。

RustのGUIとそのエコシステムの現状についてのまとめを読んでみたいんだけど、どこかいい記事を教えてくれない?

だから、俺はLLMを使ってRustアプリのGUIをSDL2で手動コーディングしてるんだ。低レベルで描画特化のコードを最小限にして、Rustの抽象化を最大限に活用すれば、もしより良いGUIライブラリが出てきたときに簡単に切り替えられると思ってる。まあ、SDLも悪くはないけどね。

RustのGUIは今、重要な依存関係が人手不足で、プロジェクトが半分実装された状態で厳しい状況にある。残念ながら、低レベルの3Dアクセラレーションも厳しい状況だ。標準的なRustのVulkanラッパー(Ash)は、もう2年近くリリースがないし、gitのメインも最新の仕様更新にかなり遅れてる。

ウィンドウを作るためのメインライブラリが一つだけってのは悪いとは思わないな。そうすることで作業が分担されて、もっとコラボレーションが生まれると思う。

オープンソースのGUI開発は、問題の難しさを過小評価することで永遠に呪われてるよね。現代のデスクトップUIの全機能、アクセシビリティ、さまざまなディスプレイのバリエーションへの対応、高品質なレンダリング、高パフォーマンス、低オーバーヘッドなどを備えた成熟した高品質なGUIを作るのは、Unityみたいな成熟したゲームエンジンを作るのと同じくらいの開発タスクだよ。ほとんどのオープンソースのGUIプロジェクトは、80%まで進んで止まっちゃって、実際にはまだ20%しか進んでないって気づいてないんだよね。

正直、今のネイティブGUIは厳しい状況だと思う。デスクトップ市場は成熟しちゃったから、新しいフル機能のGUIライブラリにお金をかける大企業がいないんだよね。新しい技術(Electron、SwiftUI、React Native)への企業の投資は、主にデスクトップ開発のコストを削減するために、他のプラットフォーム(ウェブやモバイル)からの作業を再利用できるようにするためのものだと思う。企業の投資がなければ、Win32やQt Widgetsのようなフル機能の新しいネイティブGUIライブラリは絶対に見られないと思う。

あなたの最近の投稿にはすごく共感したよ。Rust GUIに深く関わってる自分も同じジレンマに陥ってる。結局、Rust GUIエコシステムはまだ成熟してなくて、フレームワークを選ぶときに大きな妥協をしなきゃいけないと思う。eguiを使ってかなり大きなGUIアプリケーションを作ったときも、同じような結論に達した。eguiはアプリケーションの「ウィジェットを描画する」部分を解決してくれるけど、結局はメンテナンスしやすいように新しいアーキテクチャに完全に再構築しなきゃいけなかった。多くの場所で、GUIの状態を即時に編集する性質がもはや利点ではなくなってた。6ヶ月前に書いたUIコードが特に複雑なレイアウトをしているときに読みづらくなったのも言うまでもない。最終的に自分の選択肢を以下のように絞ったよ:- 実用性のためにeguiだけど、アーキテクチャとスタイリングに代償を払うことになる - 良いアーキテクチャのためにicedだけど、自分でウィジェットを全部作らなきゃいけない - slintは、テキストレンダリングを優先してくれたらいつか使うかもだけど、それでもアーキテクチャの問題は解決されない - 自分みたいな純粋主義者じゃなければtauri/dioxus/electron - 20年前に戻ってQt/WPF/etc.を使う

これに関しては、Zedチームがオープンソースの取り組みを透明に、そして理解できる形で放棄したZedのGPUIは無視します。これについてのソースはありますか?

これって、GPUがない環境や古いGPUでZedを動かすのに役立つのかな?ブラウザや他のアプリは問題なく動いてるのに、Ivy BridgeやVMではZedが動かないって不満が出てるみたいだね。

残念ながら、ZedはGPUI(GPUアクセラレートされたRustのUIフレームワーク)の開発を一時中止しちゃった。 > みんな、GPUIの開発が大きなブレーキをかけられてるよ。2026年にビジネスに関連する作業に集中しなきゃいけないから、Zedのユースケースに直接関係ないことは今後は後回しにするつもり。だけど、Zedの元社員ナイトが、興味がある人が続けられるようにちょっとしたサイドリポジトリを始めたよ: https://github.com/gpui-ce/gpui-ce。俺もそのメンテナーの一人で、仕事の合間にメンテナンスを手伝いたいと思ってるけど、どれだけコミットできるかはわからないな。 https://discord.com/channels/869392257814519848/144044062864...

残念だけど、これってユーザーがリクエストした機能がすぐには統合されないってことだと思う。今のところ、Windows/Linux/Macで動いてるし、Zedがちゃんと機能するためには成熟した形で動かす必要があるからね。だから、個人的にはそんなに大したことじゃないと思うし、ウェブサポートみたいな必要なものが出てきたら、その時に追加するんじゃないかな。ところで、GPUIを自分のプロジェクトで使うために統合が必要だと思うPRや機能って誰かある?(ウェブサポート以外で)

これは、彼らが財政的に苦しんでいるってこと?コーディングエージェントによるさらなる混乱が原因だと思う。Tailwindでそれをかなり目にしたし、今はコードエディタも苦しんでるかもしれないね。特にZedみたいな、初期採用者タイプの人たちが使ってるものは。今はカーソルとZedを使ってコードをブラウズしてるだけだよ。

2026年にはビジネスに関連する仕事に集中しなきゃね。あの数百万ドルのVC資金調達を発表した投稿覚えてる?これがその結果だよ。

Iced.rsは、結局のところ大手ハードウェアベンダーに支えられてるから、長い目で見ればいいUIライブラリだと思うよ。 https://iced.rs

コードを書くエージェントの世界で、テキストエディタのビジネスケースって何?多分、ラグジュアリーな手作りアートなコード市場にシフトすることができるかもね。

GPUIの問題は、ライブラリ自体が非常に低レベルで、範囲が限られていることだね(デザイン上そうなってると思う)。コンポーネントを持つUIは別のクレートでGPLライセンスだけど、GPUIのライセンスはApacheだよ。GPUIは素晴らしい基盤を持ってるから、コミュニティが自分たちでコンポーネントを作れるんだ。

コンテキストなしでこれを見て混乱してる。Bladeについては聞いたことがないけど、ZedがGPUIという独自のGUIライブラリを作ったことは知ってる。Zedを使ったことがあるから、これは信頼の証だと思う。クレートエコシステムは、Rustで「Xの未来」を目指そうとするライブラリが多くて、実用的なアプリケーションからは切り離されてることが多いからね。GPUIはその点、実用的で重要な目的のために作られたUIライブラリだから違うみたい。Bladeは、元々のgfx-HAL(以前のQGPU名)のクリエイターの一人によるクロスAPIのグラフィックスエンジンみたいだね。GPUIは簡単なテストケース以上には使ったことがないけど、(このニュースの前に?)将来のプロジェクトで考えてたことがあった。EGUIとWGPUは得意で大好きだし。(後者は3D用)この二つを統合したライブラリ(graphicsクレート)を書いて、自分の科学アプリケーションで2Dと3Dの両方に使ってる。全体的に、これには混乱してる。GPUIを将来のアプリケーションで使うのを楽しみにしてたし、EGUIと比較したかったから。両方使ったことがある人に比較してもらうようにオンラインで何度か聞いたけど、あまり多くの人がいないと思う。GPUIとWGPUの統合についてはよくわからなかったけど、EGUIとWGPUの統合は素晴らしいって確認できる。でも、3Dのことをやってるからこそ気になるんだよね。もしそうじゃなかったら、バックエンドとしてWGPUの代わりにeframeを使ってたと思う。関係ない話だけど、Zedについて何か見落としてるのかな?試してみたけどうまくいかなかった。すごく速いから好きになりたいんだけど、PythonやRustでの基本的なIDE機能が欠けてるみたいで、構造体や関数の移動、エラーの動的キャッチ、一般的なインスペクションやリファクタリングができないんだよね。設定を見落としてるかと思ったけど、JetBrainsのような真のIDEよりもプロジェクト指向のテキストエディタに近いみたい。確認できてないけど、みんなはIDEやJBの代替品として話してる。

もう一つのプラグインがあれば、vscodeの代わりに直接使うつもり。すごく気に入ってる。速いし、毎日のようにアップデートがある。今まで一度もクラッシュしたことがない。LLMとの統合もいい感じ。vscodeがネイティブだったらこうなってほしいって思ってたことが全部詰まってる。

いいね、graphicsは見たことなかったな。rend3が放置されてから、シンプルなUI/3Dビジュアライゼーションの選択肢を探してたんだけど。bevyやeguiも考えてるけど、学ぶのがちょっと大変そうだね。

Zedは主にVisual Studio Codeと競ってるよ。Jetbrainsとは競ってない。

Rustコミュニティが「純粋で安全なRust」で試行錯誤したAPIを再実装する必要があるって感じるのが変だと思う。ほかの言語がCとの統合がこんなに良いわけないし、90年代からクロスプラットフォームのウィンドウライブラリがあったのに、なんでみんな新しい不安定なライブラリに手を伸ばすのか理解できない。編集: https://tritium.legal/blog/desktop に返信してるのであって、OPには返信してないよ。

Rustが優れている点(implは素晴らしいデカップリングで、恐れのない型安全性)を除けば、cargoやそのクレートエコシステム(docs.rs、crates.io、すべてのパッケージ)ほど有用で良いものは他にないと思う。広いハッカーコミュニティがRustを使う選択肢を再考したり、検証したりする必要があるって感じるのが変だよね。他の言語には、こんなに素晴らしい「そのまま動く」エルゴノミクスがないし、しっかりした言語、素晴らしいツール、優れたパッケージがあって、初めてのクロスプラットフォームの喜びを与えてくれるのに。なんで毎スレッドが新しい未サポートの文句を生む必要があるのか、そんなに明らかに楽しめる選択肢に対して。

新しいGUIツールキットをゼロから試してるのはいいけど、gtkの統合がもっと評価されてほしいな。

AI統合のためにIntellij(いろいろ)からCursorに乗り換えたんだけど、Claude Code CLIだけ使ってる。Cursorはリリースごとにイライラすることが多くて、エージェントを押し付けてくるし、毎回無効にしたものが再び有効になってるし、最近「なんであんな遅くて重たいVSを使ってるんだろう?」って思ってZedに切り替えた。すごく満足してるよ。めっちゃ速いし、反応もいい。Claude Code CLIの統合があれば嬉しいけど、なくてもなんとかなる。Zedにはお金を払ってもいいと思ってる。Intellijには約25ドル払ったしね。

そうそう。Zedが一番だよ。自分には最適な位置にある。すごく反応が良くて、手動コーディング用のvimキー バインディングもいい感じだし、AI統合も適切で、AIのことを押し付けてこないのがいい。

ACP[0]って知ってる?そのプロトコルを使えば、zed[1]内でClaude Codeを実行できるよ。もしかしたら、CC統合を使うっていう意味を理解してないかも。 [0]: https://agentcommunicationprotocol.dev/introduction/welcome [1]: https://zed.dev/docs/ai/external-agents#claude-code

2020年にC++のゲームエンジンの開発を始めたんだ。唯一まともなオープンソースのUIオプションがDear ImGuiだったけど、消費者向けのUIには明らかに不適だったから、SDLの上に自分で保持モードのUIライブラリを作ることにした。今では十分な機能が揃ってて、ほとんど触る必要がない。大手企業が埋め込み製品に使ってることもある。なんでどの言語のコミュニティもSDLの上にイディオマティックなUIライブラリを作らないのか理解できない。大変だったけど、数年かけて一人で(ゲームエンジンも同時に作りながら)できたよ。

アクセシビリティはどう?

まあ、全体的に見ればクリーンな変更だね。でも、なんで?ここでも何億もの問題にぶつからないって保証はどこにあるの?

ZedがローカルLLMを無視してるのを見ると、レンダリングのことを心配するのが悲しくなる。なんで加速が必要なのかはよくわからないけど、学ぶ意欲はあるよ!