このプロジェクトについて
ruiは、ウェブ開発の3つの柱—構造、スタイル、動作—を単一のRust式に統合するために設計された、宣言型インターフェイスライブラリです。外部レンダリングエンジンや重い依存関係のツリーに依存するフレームワークとは異なり、ruiは完全に自己完結型です。TrueTypeパーサー、グリフラスタライザー、アンチエイリアシング、テキストレイアウト、PNGライターを内蔵しており、macOS、Windows、Linux(X11/Wayland)、WebAssemblyで同じコードがすべてのピクセルを描画するため、インターフェイスはどのプラットフォームでも同一にレンダリングされます。
このライブラリは関数型アプローチを採用しており、ビューは状態の純粋な関数であり、イベントハンドラーは状態を直接変更する関数です。これにより、`Rc`や`RefCell`のような内部可変性パターンが不要になります。スタイルは、メソッド呼び出し(例:`.pad()`, `.center()`, `.hover_fill()`)を介してコンポーネントチェーンに直接統合され、色は、アクティブなテーマに対して解決されるセマンティックな役割(例:`Tone::Surface`)によって定義されます。これにより、ライトモードとダークモードで一貫した外観が確保され、別々のスタイルシートは不要です。
ruiは「カタログではなく基礎」という哲学に従っています。チェックボックスやスライダーなどの複雑なウィジェットはプリビルドされていません。代わりに、これらのコントロールを自作できる7つの強力なプリミティブ(`draw`, `on_drag`, `ease`など)を提供します。このアプローチにより、UIコンポーネントはカスタマイズ可能で、厳格なウィジェットライブラリの制約から解放されます。`button`, `text`, `row`などの組み込み要素は、これらのプリミティブを基に構築されたレシピであり、参考実装として機能します。
アクセシビリティはコアなアーキテクチャの柱です。要素ツリーはアクセシビリティツリーを兼ねており、UI構造から役割、名前、状態を自動的に導出します。これにより、スクリーンリーダーや支援技術は、手動で注釈を付けることなく正確な情報を受け取ることができます。ライブラリは、インタラクティブな要素が適切な識別子を持ち、フォーカス管理が一致するように、厳格なテストを通じてアクセシビリティの慣習を強制します。
テストは、ヘッドレス環境で実際のレンダリングパイプラインを駆動する決定論的な`Harness`によってサポートされています。これにより、レイアウト、ピクセル出力、インタラクション状態について正確なアサーションを行うことができます。合成テストフォントを使用して、テキストの測定が異なるマシンで一貫していることを確認し、信頼性の高い統合テストとパリティテストを可能にします。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.