Rust GUI ライブラリ一覧

Rust製のGUIライブラリ・フレームワークをまとめておく。個別に深掘りしたものは別ノート(GPUI、Freya (freyaui.dev) — Rust製クロスプラットフォームGUIライブラリ)に切り出し、ここからリンクする。他言語との対比はGo版も参照。 #rust #gui

比較表

名前 開発元 スター数 レンダリング方式 対応プラットフォーム ライセンス
egui Emil Ernerfeldt 30k+ Immediate mode Web(Wasm)/デスクトップ/Android/ゲームエンジン組込 MIT/Apache-2.0
Iced iced-rs 31.2k Elm Architecture(宣言型)、wgpu/tiny-skia Windows/macOS/Linux/Web MIT
Slint SixtyFPS GmbH 23.4k 独自DSL(.slint)をコンパイル 組込(RaspberryPi/STM32等)/デスクトップ/モバイル/Web デュアル(GPLv3 or 商用)
Dioxus DioxusLabs 38.6k React/Solid/Svelte的なシグナルベース Web/デスクトップ/モバイル/SSR MIT/Apache-2.0
Xilem Linebender(Druidチーム後継) 5.5k Masonryベースの反応型UI(実験的) ネイティブ(Vello/wgpu) Apache-2.0
Floem Lapceチーム 4.2k fine-grained reactivity、Vello/Skia/tiny-skia Windows/macOS/Linux MIT
Makepad Rik Arendsら 6.5k 独自DSL+GPUレンダリング ネイティブ/Web(WebGL)/iOS/Android MIT
Freya (freyaui.dev) — Rust製クロスプラットフォームGUIライブラリ marc2332 約3,000 Skia(元はDioxusベース) クロスプラットフォーム(非Web) MIT
GPUI Zed Industries (Zed本体で約88,300) GPUアクセラレーション、immediate/retainedハイブリッド macOS/Windows等(pre-1.0) Apache-2.0

※スター数は調査時点(2026年8月)のスナップショット。

各ライブラリの補足

egui

即座に画面を組める手軽さが特徴のimmediate mode GUI。フレーム毎にレイアウトを再計算する設計で、デバッグUIやツール系アプリ向き。AccessKitによるアクセシビリティ対応あり(WindowsとmacOSのネイティブアクセシビリティAPIを実装している)。

ネイティブっぽい見た目にならないのは欠陥ではなく設計上の非目標で、READMEのNon-goalsに"Native looking interface"が明記されている。

If you want a GUI that looks native, egui is not for you.

OSのウィジェットを使わずテクスチャ付き三角形として全部を自前描画するため、macOS/Windows/Webのどこでも同じ見た目になる。一貫性という利点と、プラットフォーム感の薄さは表裏。immediate modeの制約として、動的にサイズが決まる要素のレイアウトが1フレーム遅れ、表示された最初のフレームでちらつくことがある(eguiはウィンドウやグリッドレイアウトでこの手法を使っている)。

日本語で使う場合の注意点が2つある。

  • 日本語表示にはフォント設定が必要。Noto Sansなどのフォントファイルを用意してFontDefinitionsで指定しないと豆腐になる。
  • IME周りに既知の問題がある。0.33.3では、同一フレーム内でEvent::Ime(ImeEvent::Commit(..))とEvent::Key { Key: Enter, .. }が同時に処理される結果、変換確定のEnterがそのまま改行として入ってしまう。IMEイベントのあるフレームでEnterイベントをretain()で除外する回避策が知られている。2026年3月に修正PRがマージされ次のリリースに入る見込みとされていた(最新は0.36.1)。また、eguiのウィンドウで日本語入力を始めると他のアプリの変換候補表示が不安定になる、という報告もある。

テキストを日常的に打ち込む種類のアプリを日本語で作るなら、この辺りを踏む前提で選ぶことになる。

Iced

Elm Architecture(State/Message/View/Update)を採用した宣言型GUI。Krakenの元Cryptowatchチームが開発。型安全なAPIとasync対応が特徴だが、ドキュメントに不足があるとの指摘がある(boringcactusのサーベイ参照)。

Slint

.slintという独自DSLでUIを定義し、コンパイル時に最適化する組込機器フレンドリーな設計。Rust以外にC++/JavaScript/Pythonからも利用可能。ライセンスがGPLv3または商用ライセンスという点は他のMITライセンス系ライブラリと毛色が異なる。

Dioxus

React/Solid/Svelteのいいとこ取りを謳うシグナルベースの状態管理を持つフルスタックフレームワーク。Web/デスクトップ/モバイル/SSRを単一コードベースでカバーする。Freya (freyaui.dev) — Rust製クロスプラットフォームGUIライブラリはDioxusの代替レンダラー(Skiaベース)としてREADME内で言及されている。

Xilem

かつてRust公式GUIの本命と目されていたDruidがsunset(開発終了)した後継として、同じLinebenderチームが開発。ウィジェットツールキットMasonryを基盤に、Vello/wgpu/Parley/AccessKitなどLinebender製コンポーネント群を組み合わせる。まだ実験的段階。

Floem

コードエディタLapceと同じチームが開発。fine-grained reactivity(SolidJS的な、仮想DOMを介さない細粒度の再描画)が特徴。

Makepad

独自のライブUI DSLとGPUレンダリングパイプラインを持つ。Web(WebGL)やiOS/Android/tvOSまで幅広くカバーする。

出典

作成日時: 2026-08-09 16:01 / 更新日時: 2026-09-04 18:13