概要
- Flutter + Rust から Rust + egui への移行体験談
- 複雑性の最小化 と 個人の強みに合わせた選択 が主な理由
- eguiの即時モードUI による開発効率の向上
- 生成コードやFFI管理の煩雑さ からの解放
- パフォーマンス向上 と シンプルなUI構築 の実感
Flutter + RustからRust + eguiへの移行理由
- これは 個人的な経験談 であり、絶対的な真実ではない
- Flutter + Rust 構成では、 flutter_rust_bridge によるバインディング生成を利用
- 多くのケースで
flutter_rust_bridge_codegen generateだけで動作 - ただし、FFIやAPI設計時に 生成が動作しない場合のトラブル が発生
- 多くのケースで
- egui を選択したきっかけは rerunプロジェクト の印象的な成果
- 週末でUIコードを書き直し、 Flutterを捨てる決断
複雑性の最小化
- 2言語併用 はプロジェクトの複雑性を増加
- BoquilaHUB は小規模プロジェクトであり、不要な複雑性は排除したい
- 自動生成コード は数千行に及び、理解不能で最適化困難
- 自分で書いたコードより生成コードが多い 状態も発生
- プロジェクト全体の理解度 と 管理しやすさ を重視
個人の強みに合わせる
- 開発者は自分一人 であり、FlutterのGUI力を活かしきれない
- egui は最小テンプレートの修正だけで十分な見た目を実現
- FlutterのWidget構造 による状態管理の煩雑さ(例:setState問題)に悩まされる
- egui なら即時モードで毎フレームUIがリフレッシュ
- コールバックや状態管理フレームワーク 不要
- 例えばボタン追加もシンプルなRustコードで完結
即時モードUIのメリット
- egui では状態管理・再描画の悩みがゼロ
- 複雑なコールバックやフレームワーク (getx, bloc, provider等)不要
- UI変更が即座に反映 され、直感的な開発体験
パフォーマンスの体感
- Rustが速い、Dartが遅い という単純比較ではない
- FFI経由の処理やデータコピーの影響 で、Flutter + Rust構成は体感的に遅く感じた
- ONNX Runtime の呼び出しも、Rustのみの構成で より高速・スナッピー な動作
- アプリ全体のレスポンス向上 を実感
まとめ
- Flutter + Rust から Rust + egui へ移行したことで
- 複雑性の削減
- 自分に合った開発体験
- パフォーマンス向上 を実現
- BoquilaHUB への支援を希望
この体験談が、同様の選択に悩む方の参考になれば幸いです。