3 ポイント 投稿者 GN⁺ 2024-08-12 | 1件のコメント | WhatsAppで共有
  • Rustは8年間にわたり「最も使いたいプログラミング言語」に選ばれており、多くの人がRustでGUIプログラムを書きたいと考えている。
  • Flutterとflutter_rust_bridgeを活用したアプローチを共有
  • 長所
    • Flutterは人気があり成熟したプラットフォームで、多くの開発者や著名ブランドに利用されており、大きなエコシステムを持つため、必要な機能を簡単に実装できる
    • 「ホットリロード」機能によりUI開発が高速で、クロスプラットフォームに対応しているため、同一のコードベースで複数のプラットフォーム上で実行できる
  • 短所
    • このアプローチは100%純粋なRustではない
      • ただし、これはマクロを使ったり、HTML/CSS/Slintのような他言語を使ってカスタムDSLを書く他の多くのRust UIと似ている
    • Webプラットフォームに対する批判がある
      • 静的なWebページよりも、Webやその他のプラットフォーム(例: Google Earth、Riveのアニメーションエディタなど)の「アプリ」により適している
    • Flutterは多くのボイラープレートコードを必要とする

flutter_rust_bridgeとは?

  • 2つの言語間のブリッジを作り、1つの言語のように動作させる
  • さまざまな型、&mut、async、トレイト、結果、クロージャなどを自動変換する
  • Rust GUIをFlutterで実装する以外にも、さまざまなユースケースがある
    = Flutterで任意のRustライブラリを使ったり、アルゴリズムのようなコードをRustで書き、それ以外のコードをFlutterで書いたりできる

1件のコメント

 
GN⁺ 2024-08-12
Hacker Newsのコメント
  • 数年間アプリを開発しながら使ってきたが、全体的に満足していた

    • v1からv2へのアップグレードは難しくなく、v2では多くの便利な機能や改善されたコード生成体験、tokio asyncサポートなどで大きな変化があった
    • Rustでビジネスロジックを書き、Dartをフロントエンドとして使うのは非常に効果的だった
    • Flutter/DartはReactより理解しやすいと思う
    • FRBに取り組んだ @fzyzcjy に感謝を伝えたい
  • UIをRustではなくDartで書く利点はよく分からないが、flutter_rust_bridge のファンではある

    • fzyzcjyとコミュニティが、DartからRustコードをシームレスに呼び出せるようにした取り組みは、Flutterアプリにとって大きな資産になっている
    • 週末のあいだにFlutterでImageOptimを作り直したが、Rustの画像ライブラリを使って、より強力で高速なアプリを作ることができた
    • Rust統合のおかげで、アプリはより高機能で高速に動作する
  • 称賛に値する取り組み。現在Tauriを使っており、両者の長所と短所が気になる

  • デスクトップUIにはFlutterを使い、バックエンドにはRustを使っている

    • ブリッジの代わりにgRPCを使って両者を分離している
    • このアプローチは言語に依存せず、フロントエンドでバックエンドをモックするための、よりクリーンなインターフェースを提供すると思う
    • UIとバックエンドを別のデバイスに配置して、真のクライアント/サーバーアーキテクチャを実現できる
    • 欠点は、インターフェースがより冗長になり得る点だ
  • よくやった。rust_flutter_bridge については良い話しか聞いたことがない

    • Flutterがモバイルネイティブ(Java、Swift)と比べてどれほど肥大化するのか(最終的なアプリサイズ)や、UIパフォーマンスが気になる
  • FlutterのUI構築アプローチは気に入ったが、Dartはあまり好きではなかった

    • 理論的には、UI専用のプログラミング言語を作れないだろうかと思う
    • 主要なプログラミング言語とインターフェースできる言語、たとえばprotobufのIDL形式のようにデータを定義する代わりに、ユーザーインターフェースを宣言する言語
    • QTとXAMLが思い浮かぶが、QTはオープンソースではなく、XAMLは長いあいだ使われていないように思える
  • Googleのマテリアルデザインと花火のようなエフェクトは、最良の見た目ではないと思う

  • アクセシビリティ(a11y)サポートが気になる

    • ドキュメントでそれに関する情報を見つけられなかったが、2024年にアクセシビリティサポートなしでGUIキットを公開するのは想像できないので、なぜ言及しなかったのか気になる
  • ChromeシェルやWebウィジェットに依存するより、はるかに良い。努力に拍手を送りたい

  • 興味深い。IIUC、これはソース間翻訳を使って実現されているのだろうか

    • ドキュメントがユーザーにとって分かりやすく書かれていて印象的だ
    • このアプローチと、wasmベースのRust Webフレームワークとの比較について知りたい
    • RustとFlutterを組み合わせる利点のひとつは、Flutterがすでに完全なフレームワークであり、サーバー側とクライアント側のあいだでコードやデータ構造を共有できる点だ