何を使うか?
RustでGUIアプリを作るには何を使えばよいか? どうもまだ決め手が無い感じ。最近有力なのは Tauri。歴史あるGTKのバインディングである gtk-rs。この2つがまだしも情報が多い。あとは iced、egui、Slint、conrod、Rust-Qt、…などいろいろあるけども情報が少ない。RustでWebアプリを作る手段としてはWebAssemblyがあり、こちらは情報が多い。
Tauri
- 2024年現在では、いちばん情報が多く最有力候補か。
- Web技術でデスクトップアプリを作れる。同様のコンセプトのElectronよりは軽くて速いらしい。
- フロントエンド(GUI)をHTML+JavaScriptで作り、バックエンド(ロジック)をRustで作る。
- 初回ビルドにかなり時間がかかり、クソデカい中間ファイルが吐かれる。
- フロントエンドとバックエンドでメモリの共有が出来ず、おそらくソケット通信でデータのやりとりをしている。そのため画像データのような巨大なデータをやりとりするのは効率が悪い。
- ぶっちゃけフロントエンドだけでかなりのことができてしまうので、Rustを使わずJavaScriptだけでもいいのではと思ってしまう。
- VSCode の拡張機能で Tauri VS Code Extension がある。
- フロントエンドを Rust で書くこともできるらしい。( Leptos などのフレームワークが利用できる )
- Electron代替として有望かもしれないけど、「RustでサクッとGUI」という目的からは外れる気がする。
gtk-rs
WebAssembly
- デスクトップアプリにこだわらないのであれば、WebAssemblyという選択肢もある。
- WebAssemblyはWebブラウザ上で動く仮想のアセンブリ言語である。
- RustからWebAssemblyへコンパイルすることができる。
- Tauri や gtk-rs などのデスクトップ開発に比べ、情報が圧倒的に多い。
- Tauri上で WebAssemblyを動かすこともできるらしい。