アプリのロジックをGoで実行し、各プラットフォームが独自のネイティブビューで描画するクロスプラットフォームUIエンジン。
marc2332/freya
Rustでデスクトップやモバイルアプリを構築するための、クロスプラットフォーム対応の宣言的なネイティブGUIライブラリ。
- スター
- 3,344
- フォーク
- 151
- 未解決の Issue
- 42
- 最終コミット
- 5 時間前
これは何?
Freyaは、デスクトップをはじめとする各種プラットフォームでネイティブなインターフェースを描画する、Rust向けの宣言的GUIライブラリです。UIはRustの関数やコンポーネントで記述でき、use_stateなどのフックで設定した状態が変わると、その状態に依存する部分が自動的に再描画されます。バージョン0.4以降はDioxusではなく、独自のリアクティブコアを基盤としています。
Button、Switch、Slider、VirtualScrollView、Calendar、ColorPickerなど、すぐに使えるコンポーネントを備えています。オプションのfeature flagを有効にすると、tree-sitterベースのコードエディター、Markdownビューア、ルーティング、freya-radioによるグローバル状態管理、Fluentベースのi18n、Material Designのスタイリング、BlitzによるHTML/CSSの描画、PTY対応のターミナルエミュレーター、Plottersによるプロット機能を追加できます。
freya-testingを使ったヘッドレステストにも対応しており、クリックをシミュレートしたり、UIを画像ファイルに描画したりできます。また、コンポーネントツリーを調べるためのdevtoolsアプリも用意されています。
主な機能
- 01フックベースの状態管理を備えた宣言的なコンポーネントモデル。状態に依存するUIは自動的に再描画されます。
- 02Button、Switch、Slider、Calendar、VirtualScrollViewなどの組み込みコンポーネント。
- 03テキスト処理にRope、シンタックスハイライトにtree-sitterを使うオプションのコードエディター。
- 04feature flagで追加できるルーティング、グローバル状態管理、Fluentベースの国際化。
- 05PTY対応の組み込みターミナルエミュレーターと、BlitzによるHTML/CSSの描画。
- 06UIをファイルに描画できるヘッドレステスト。
ユースケース
- Rustだけでネイティブなデスクトップツールやユーティリティを構築する。
- コードエディターやターミナルベースのインターフェースなど、開発者向けツールを作成する。
- プロット機能を使ってデータ可視化ダッシュボードを試作する。
- ウィンドウを開かずにRust製GUIアプリのUIテストを書く。
クイックスタート
- 1
Cargo.toml に Freya を追加する
- 2
サブモジュールを含めてリポジトリをクローンする
git clone --recurse-submodules https://github.com/marc2332/freya.git - 3
プロジェクトディレクトリに移動する
cd freya - 4
サンプルを実行する
cargo run --example counter
使う前に知っておきたいこと
- サンプルの実行には、Rust の開発環境と git サブモジュールが必要です。
- Windows の windows-gnu ビルドでは、コンパイルエラーが発生することがあります。
収録されている特集
トピック
よくある質問
- freya とは?
- Rustでデスクトップやモバイルアプリを構築するための、クロスプラットフォーム対応の宣言的なネイティブGUIライブラリ。 Freyaは、デスクトップをはじめとする各種プラットフォームでネイティブなインターフェースを描画する、Rust向けの宣言的GUIライブラリです。UIはRustの関数やコンポーネントで記述でき、use_stateなどのフックで設定した状態が変わると、その状態に依存する部分が自動的に再描画されます。バージョン0.4以降はDioxusではなく、独自のリアクティブコアを基盤としています。
- freya は無料で使えますか?ライセンスは?
- freya は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- freya は今もメンテナンスされていますか?
- 活発にメンテナンス中。freya の最終コミットは 2026年11月7日 です。
- freya は何に使えますか?
- Rustだけでネイティブなデスクトップツールやユーティリティを構築する。 コードエディターやターミナルベースのインターフェースなど、開発者向けツールを作成する。 プロット機能を使ってデータ可視化ダッシュボードを試作する。 ウィンドウを開かずにRust製GUIアプリのUIテストを書く。
- freya のインストール方法は?
- Cargo.toml に Freya を追加する サブモジュールを含めてリポジトリをクローンする: git clone --recurse-submodules https://github.com/marc2332/freya.git プロジェクトディレクトリに移動する: cd freya サンプルを実行する: cargo run --example counter
- freya はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/marc2332/freya
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Slintは、Rust、C++、JavaScript、PythonアプリでネイティブUIを構築できる宣言型GUIツールキットです。
RustベースのGPUIフレームワークで宣言的UIを描画する、ネイティブデスクトップアプリ構築用Elixirライブラリ。
C#とXAMLでデスクトップ、モバイル、組み込み、WebAssembly向けアプリを開発できる、クロスプラットフォームの.NET UIフレームワーク。
FlutterベースのUIでWeb・デスクトップ・モバイルアプリを開発できる、フロントエンドの知識が不要なPythonフレームワーク。
RustまたはTSXでアプリを書き、各プラットフォーム固有のウィジェットで描画できる、クロスプラットフォームUI向けRustエンジン。