Open8

色についてのクロスプラットフォームアプリ作成

mars2nicomars2nico

作りたいアプリ

方向性にまよっている

  • 画像のコレクションを「重み付きの属性の組み合わせ」で検索できる機能
    or
  • 特定の画像と色から「色の変更」をプレビューできる機能
mars2nicomars2nico

UI(GUI)フレームワークの選択 (状態:作成中)

iOSやMacを持っていないので、WindowsかAndroidで動くものが作りたい。Rustを使いたい。

区分 項目 ランタイム プロセスモデル レイアウトエンジン 記法 エコシステム + コメント +
lib egui - - - - - immediate mode GUI
lib Stretch - - - .rs .kt .js - レイアウトエンジン
web SvelteKit web - web .svelte ? Tauri上でSSGとして使える
game Unity Engine Mono single uGUI/Core .cs[1] dll
その他 iced native adaptable[2] iced_core .rs Widget
その他 Slint native ? ? .slint .rs[3] ? 組み込み機器開発にフォーカス
その他 .NET MAUI .NET CLR ? Controls.Core .xaml dll

表の読み方

「区分」が「lib」のところは単体ではアプリケーションをビルドできない。

表に無いものについて補足

  • モバイルアプリだけならFlutter, React Nativeも選択肢に入るかもと思ったが、Dartやtypescriptをメインで書くとなると重そうと思った。
  • .NET系でBlazorというソリューションもあるらしい。javascriptの代わりにC#/VBでかけるというところまで分かったが、Blazor WebAssemblyが出てきたところでよく分からなさ過ぎて調べるのを諦めた。Webアプリを作りたいわけではないので、.NET MAUIがAOT対応したら私にとっては魅力的かも。
  • cruxはWebにフォーカスしていそうなので自分の用途と合っていなさそう。
  • 最初表に入れていたが、winitTauriは広義の「シェル」の抽象化レイヤーであってUIフレームワークではないと気付いた。
  • Qt frameworkやKotlin系統のフレームワークは保留。Rustを主に検索キーワードにしていたので盲点だった。

更新履歴

2024/03/16 新規作成
2024/03/18 レイアウトエンジンについて追記
2024/03/24 winitとtauriを削除してsveltekitを追加
2024/03/27 Slintを追加、表の補足にQtついて追記

脚注
  1. uguiの代わりにUI Toolkitを使用する場合はUXMLとUSSを使って書く。 ↩︎

  2. バックグラウンド処理の実行役(executor)をRustのFutureの仕組みを用いて指定できるようになっている。 ↩︎

  3. proc_macroクレートの機能によってSlint DSLを直接ソースコードに書くこともできる。そのDSLのコンパイラーのソースは公開されていない。 ↩︎