このプロジェクトについて
DruidはLinebenderによって開発された実験的なRustネイティブUIツールキットであり、洗練されたデスクトップアプリケーションを構築するためのデータファーストなアプローチで設計されていました。このプロジェクトは、パフォーマンス、リッチなインタラクション、ネイティブプラットフォームとの統合を重視し、すべての一般的なプラットフォームでスムーズなユーザー体験を提供することを目指していました。
現在、このツールキットは公式に開発が終了しており、メンテナンスも行われていません。新しい開発の取り組みはXilemへと移行しました。XilemはDruidから多くの要素を引き継いでいますが、パフォーマンスの向上とより広範なアプリケーションサポートのために根本的な変更が導入されています。Druidは一部のアプリケーションでは依然として使用可能であり、重要なテストの歴史もありますが、新機能の追加やバグ修正は予定されていません。
主なアーキテクチャコンポーネントは以下の通りです。
- druid-shell: ネイティブプラットフォームのランループの開始、イベントのリスニング、およびそれらをプラットフォーム非依存の表現に変換する役割を担う、プラットフォーム抽象化アプリケーションシェル。
- Piet: 描画およびテキストレイアウトに使用される2Dグラフィックス抽象化ライブラリ。複数のバックエンド(Windows用のDirect2D、macOS用のCoreGraphics、Linux用のCairo、Webターゲット用のWeb)を備えています。
- ウィジェットシステム: ウィジェットはデータ型でパラメータ化されたWidgetトレイトを実装し、イベント処理、ライフサイクル管理、更新、レイアウト、描画のためのメソッドを持ちます。各メソッドは、対応するコンテキストオブジェクトとテーマパラメータを含む環境を受け取ります。
- レイアウト: Flutterのボックスレイアウトモデルに触発されており、ウィジェットは最小サイズと最大サイズを提供するBoxConstraintsを受け取ります。
- Dataトレイト: 比較やクローンが容易な値型を表し、通常はアプリケーションの状態構造体に対して導出されます。
- Lens: より大きなデータ構造の一部へのアクセスを提供し、ウィジェットがアプリケーション状態の特定のフィールドを操作できるようにします。
Druidはcrates.ioで公開されており、macOS、Linux(GTK+3が必要)、Windows、OpenBSDをサポートしていました。このプロジェクトは基本的なユーティリティおよびレイアウトウィジェットを提供し、カスタムウィジェットを構成する機能もありました。ツールキットは、容易な構築とパッケージング、プラットフォームの慣習の尊重、信頼性の高いディスプレイのスケーリング、国際化サポート、アクセシビリティ、小さく高速なバイナリ、および小さな依存関係ツリーを目指していました。
プラットフォームネイティブウィジェットの使用、カスタムレンダリングパイプラインへの埋め込み、Elmのような特定のアーキテクチャスタイルへの準拠、Webターゲット向けのHTMLレンダリングのサポートなどは非目標とされていました。これらのユースケースに対する代替案としては、Relm、Slint、Conrod、Iced、Moxieなどが挙げられます。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.