GPUIの「速い」は幻想か、ベンチマークが暴く状態モデルの限界
A Critique of GPUI

DiscordがGPUIへの書き換えを発表するなど、Rust製ネイティブGUIフレームワークへの移行が進む中、著者はGPUIとeguiの状態モデルが複雑なデスクトップアプリには行き詰まりだと主張する。GPUIの`notify`はzone.jsと同様に「変化したかもしれない」ことしか伝えられず、3,000行のUIで1つのラベル変更に8.4ms、キャッシュなしでは92msかかる。精度を上げるにはビュー単位の手動境界が必要になり、GPUIの利点そのものが失われると論じる。
快適なAPIを保てばビューサイズの更新しか得られない。精度を取れば快適なAPIを失う。
HNでの議論
94- virtualritz
この記事全体で何度も繰り返されている中心的な主張は「スケールしない」だ。
それに対する私の返答は「それがどうした、大多数のアプリは複雑なUIなんて持っていない」だ。
そしてもし持っていたとしても、記事で概説されているegui向けにrerunがやったような回避策を考え出せる。
実例を挙げよう。私の最大の余暇「プロンプト」プロジェクトは現在50万行のハイブリッド3Dモデリングアプリで、eguiを使っている。
モデリング機能の面ではGrasshopper/Houdiniの間くらいで、標準で200近いノードと任意の数のカスタムノードがある。
これでUIがどんなものか想像できるだろう:ノードグラフ、パラメータ編集、ウィジェットオーバーレイ、ギズモ。多くのノードにはカスタムウィジェット、ランプやカーブエディタなどがある。
決してシンプルなUIではない。
しかしeguiのアプローチのパフォーマンスについて心配するのに一秒も費やしていない。UIはフレームごとの統計に現れるが、無視できるレベルだ。
- x-complexity
これはzguiの広告を批評記事に偽装したものだ。
記事自体から引用:
> 開示:私はGPUIの現在のLinuxレンダラーをwgpu2に移植し、以下で使用するベンチマークハーネスを構築し、チャートに登場するシグナルベースのRustフレームワークであるzguiに取り組んでいる。
https://github.com/zortax/zgui
zguiは先月バージョン0.1.0をリリースしたばかりで、開発履歴は3ヶ月。そしてそれが唯一のバージョンだ。
https://github.com/zed-industries/zed/tree/main/crates/gpui
https://crates.io/crates/gpui/versions
GPUIの最後のリリースは0.2.2で、1年前だ。
アプリケーションをどこに移植するかを選ぶ際、フレームワークの成熟度は避けられない要因だ。
だからといって10年前のフレームワークしか選べないというわけではないが、1ヶ月前のプロジェクトを追いかけるべきでもない。
最小値と最大値があり、最小値は「間違いなく1つの公開リリースしかない1ヶ月前のプロジェクトではない」というところだ。
- jharsman
主題は興味深いが、AI生成のテキストは非常に読みにくく、著者がそもそもこの問題について考えたのか疑問に思わせる。
考えたのなら、自分で書け。
- faangguyindia
では、これまで存在した中で最も先進的なGUIフレームワークはどれで、なぜそれらはGPUIやeguiより優れているのか?
過去にマイクロソフト以上にGUIを必要とした企業があっただろうか?彼らなら答えを持っているかもしれない。あるいはアップル?
ソーシャルメディアアプリはGUIがそれほど重くないので、この分野で何か先進的なものを開発したとは思えない。
GUIの複雑さとアプリケーションの複雑さは別物だ。
記事の議論はもっともらしく聞こえるが、結論は的を外している。
- bluegatty
面白そうだが、Rustは他の言語よりもUXに適していない——ツリーベースのデータ構造、醜い状態が多く、イベント駆動で、非同期が多用され、当然ながらその層で入ってくるJSONその他には「とても素敵な」ライブラリがない。
Rustの利点をまったく活かせておらず、余分なオーバーヘッドを正当化するのは難しい。
Rustとうまく機能する重要なライブラリは確かにあると思う(wgpuはいいね!)が、コア言語自体は理想的にはRustでない方がいい。
もちろん——できるし、一部の開発者にはとても楽しいだろう——が、これは丸い釘を四角い穴に打ち込むようなものだ。(編集——「丸い釘を四角い穴に」と言うのは、犬に「散歩?」と言うのと同じで、つまり「さあ、解くべき問題が起きたぞ!」という意味だが、まさにそれが言いたいことだ。しっぽを振るものが必ずしも最良の選択肢とは限らない、と)