GPUI Kit
GPUIの上に載るUIコンポーネント集からスタートし、Rustデスクトップアプリケーション用のフレームワークへと再構成されたプロジェクト。香港の証券会社Longbridgeが開発し、自社の株取引デスクトップアプリ「Longbridge Pro」を初日からこれで作っている。ライセンスはApache-2.0、バージョンは0.6.0(2026年9月時点)、GitHub Starsは約13,900。
もともとはgpui-componentという名前のリポジトリ・クレートだったが、longbridge/gpui-kitにリネームされた(旧URLはリダイレクトされる)。ドキュメントサイトはhttps://gpui-kit.com。
3層構造
「アプリケーションが依存するのはgpui-kitひとつだけ」という設計で、下の層をまとめて再エクスポートする。
gpui-kit アプリケーションが依存する唯一のクレート
├── gpui-base スタイルを持たない振る舞い・状態・インフラ
├── gpui-shell Rustホストに載るJavaScript拡張
└── gpui-component 完成されたstyled UIシステム
| 用途 | |
|---|---|
gpui-component |
完成済みのスタイル付きコンポーネント。テーマ機能付きの既定値で素早くアプリを作る |
gpui-base |
未スタイルの振る舞いとインフラ。自前のデザインシステムを作りたい場合 |
gpui-shell |
Rustホストが読み込むJavaScriptランタイム。出荷後に拡張したい場合。ケイパビリティは1つずつ明示的に許可する |
機能
- 60以上のUIコンポーネント(フォーム・ナビゲーション・オーバーレイ・フィードバック・レイアウト)
- データテーブル: 仮想スクロール、列の固定・リサイズ、ソート、セル選択。数十万行を扱う
- 可変高の要素にも対応した仮想リスト
- コードエディタ: Tree-sitterによるハイライトとLSPの診断・補完・ホバー。20万行でも性能が安定するとされる
- Dockレイアウト: リサイズ可能なパネル、ドラッグ可能なタブ、ネストした分割、シリアライズ可能なTiles
- Markdown/HTMLのネイティブレンダリング、チャート
- WebView埋め込み(gpui-wryは本リポジトリの
crates/webview) - macOS/Windows/Linux対応
GPUI本体の取り込み方
GPUIの公式クレートがcrates.ioで0.2.2(2025-10-22)から更新されていないため、Longbridgeはgpui-preという自前のスナップショットクレート(zed@5b055fa時点、といったコミットを固定して公開するもの)をcrates.ioに出し、gpui-kit側でそれをピンしている。
gpui = { package = "gpui-pre", version = "0.3.1" }
gpui_platform = { package = "gpui-pre-platform", version = "0.3.1", features = ["font-kit", "x11", "wayland", "runtime_shaders"] }
そのためアプリケーション側のCargo.tomlにGPUI本体を書く必要がない。GPUIのバージョン追従の面倒をフレームワーク側が引き受ける構造になっている。
同名の別プロジェクト「gpuikit」
紛らわしいことに、iamnbutler/gpuikit(crates.ioではgpuikit)という別のUIツールキットも「gpui-kit」を名乗っている。元Zed社員のNate Butlerが個人で開発しているもので、SwiftUIとWeb系コンポーネントライブラリの概念的な統合を目指すと謳っている。GitHub Starsは約158、バージョンは0.8で、リリースごとに破壊的変更が入るpre-1.0の段階。
こちらはGPUI本体として、同じくNate Butlerが公開しているZedのリリースタグごとの自動publish版gpui-unofficialを参照する。
gpui = { package = "gpui-unofficial", version = "1.14" }
gpui_platform = { package = "gpui-platform-gpui-unofficial", version = "1.14", features = ["font-kit"] }
gpuikit = "0.8"
showcaseがGitHub Pages上に置かれていて、ネイティブで動かすのと同じバイナリをwasmビルドしたものをブラウザから触れる(https://nate.rip/gpuikit/)。
規模・実績の面では、単に「gpui-kit」と言った場合はLongbridge版を指すことがほとんど。
どのディストリビューションに乗るか
GPUIまわりは公式クレートが止まっている影響で選択肢が分岐している。用途別の整理。
- デスクトップアプリを作りたい → GPUI Kit。実運用の実績があり、コンポーネントが揃っていて、何よりGPUI本体のバージョン追従を肩代わりしてくれる。
- GPUIそのものを低レベルに触りたい、Zed本流に入らない機能(トレイ対応やWayland周りなど)が要る → gpui-ce。
cargo add gpui-ceだけで始められ、コミュニティ側の要望を受け入れる方針。 - 公式の
gpui0.2.2 → 選ばない。2025-10-22から更新が止まっている間に、アップストリームではgpui/gpui_platformの分割やwgpu移行が済んでいる。READMEの通りに書いても最新のアップストリームとは別物になる。
crates.ioのダウンロード数(2026-09-04時点)。
| クレート | 最新 | total | recent |
|---|---|---|---|
gpui-component |
0.6.0 | 102,230 | 45,191 |
gpui-kit(傘クレート) |
0.6.0 | 400 | 400 |
gpui-ce |
0.2.2 | 7,763 | 6,424 |
gpui-unofficial |
1.19.0-pre | 4,199 | 2,931 |
gpuikit |
0.8.0 | 257 | 167 |
gpui(公式) |
0.2.2 | 252,104 | 140,284 |
gpui-kitのダウンロードが小さいのは傘クレートが最近できたばかりだからで、実体はgpui-componentの方に出ている。新規に書き始めるならgpui-kit、既存コードがあるならgpui-componentのままでよい。公式gpuiの25万は歴史的な蓄積。
系統は混ぜられない
一番の落とし穴。参照しているGPUIの再配布元が系統ごとに違う。
gpui-kit (Longbridge) → gpui-pre
gpuikit (Nate Butler) → gpui-unofficial
gpui-ce → gpui-ce 自身
Rustではパッケージが違えば同じstructでも別の型になるので、これらを混在させることはできない。「GPUI Kitのテーブルを使いつつgpui-ceのトレイ対応も欲しい」はコンパイルが通らない。最初にどの系統に乗るかを決める必要がある。gpui-ceは「今はほぼAPI互換だが、これから変えていく」と明言しているため、この分断は今後広がる方向。
そもそもGPUIを選ぶか
Zedのようなエディタ的なもの、大量の行を高速に描くものを作るならGPUI Kitは有力で、Tree-sitter+LSP付きのコードエディタコンポーネントがそのまま使えるのは他のRust GUIライブラリにない強み。一方で普通のGUIツールなら、pre-1.0で破壊的変更が頻繁・公式クレートが止まっている・エコシステムが系統ごとに分断している、という前提を許容できるかどうかで判断することになる。