Relm4でRust製クロスプラットフォームUI開発がより自然に
Relm4 makes developing beautiful cross-platform applications idiomatic
Relm4は、Rustで美しいクロスプラットフォームアプリケーションを開発するためのフレームワークです。Elmアーキテクチャに基づく宣言的なUI構文を提供し、GTKを基盤としているため、Windows、macOS、Linuxでネイティブに動作します。Rustの型システムを活用した堅牢で保守性の高いコードを書くことができ、非同期処理や再利用可能なコンポーネントもサポートしています。ドキュメントも充実しており、開発者はすぐに始めることができます。
Relm4は、Rustの型システムを活用して、堅牢で保守性の高いコードを書くことを可能にします。
HNでの議論
39- slacknatcher12
ドキュメントを読んでいて、自分のHaskellとgi-gtk4を使ったソリューションと多くの類似点があることに気づきました。https://bichanna.github.io/posts/tea-time/ を読んだ人なら誰でも同じアイデアを得るでしょう。これは基本的に次のようにまとめられます:
1. GTKのようなネイティブウィジェットシステムを使用する(私もQtを評価しました)。
2. ウィジェットを、props/modelが変わったときにウィジェットを更新する方法を認識するコンポーネントデータ型にラップする。
3. ウィジェットに渡されるディスパッチクロージャを定義し、メッセージを受け取るようにする。ウィジェット上のアクションは、参照を変更する代わりにこれを使用する。
4. そのディスパッチクロージャはコンポーネント認識型であり、すべてのウィジェットの更新関数を呼び出します。
長時間実行される計算にはいくつかの追加の複雑さがありますが、このモデルは構築するための良い基盤です。relmチームに幸運を祈ります。Rustでプログラミングするときはおそらくそれを使うでしょう。
- WD-42
前回のプロジェクトではプレーンなgtk-rsを使いましたが、Rustとgobjectシステムの間には確かに摩擦があります。次のプロジェクトではrelm4を試してみようと思います。必要に応じてgtk-rsに戻ることもできるようです。
- pitched
これはGnome/GTKであり、私が期待したようなクロスプラットフォームではありません。Linuxファーストのアプローチです。これが今の世界であることは嬉しいですが、Windowsでビルドを動かすのはまだかなり苦痛だろうと思います。関係者の皆さん、おめでとうございます!
- Nekorosu
慣用的なクロスプラットフォームアプリの構築にどのように役立つのでしょうか?クロスプラットフォームアプリは、定義上、本当に慣用的であることはできません。なぜなら、異なるプラットフォームには、APIとUIの両方において異なる慣用句があるからです。プロジェクトがこれを何らかの方法で解決しているなら、それが説明されることを期待します。ウェブサイトではそのような説明を見つけることができませんでした。
- chadcmulligan
興味深いですね。クロスプラットフォームを求めるなら、Flutter/Dartの方がよりクロスプラットフォームなソリューション(モバイル、デスクトップ、ウェブ)のように思えます。あるいは、ウェブなしのDelphi/Lazarusでしょうか。