検索
連載

RustとDioxusでSPAを新バージョンに対応させようWebアプリ実装で学ぶ、現場で役立つRust入門(8)

第8回では、2024年3月末のDioxus 0.5リリースに合わせて、機能変更のポイントをWebプラットフォームに絞って紹介し、第7回で作成したアプリをバージョン0.5対応となるように修正します。

Share
Tweet
LINE
Hatena
「Webアプリ実装で学ぶ、現場で役立つRust入門」のインデックス

連載:Webアプリ実装で学ぶ、現場で役立つRust入門

 本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。


Dioxus バージョン0.5の概要

 第7回の執筆後に、Dioxusはバージョン0.5がリリースされました(第7回のサンプルは、1つ前のバージョン0.4に準拠しています)。バージョン0.5はわずかに0.1の違いですが、バージョン0.4とかなりの部分で互換性がなく、基本的には細かく修正しないとアプリをビルド、実行できません。

 そこで今回は、サンプルの機能拡張に先立ち、バージョン0.5における変更点のポイントをWebプラットフォーム関連に絞って紹介した後、第7回のサンプルをバージョン0.5に対応させます。

 バージョン0.5における多くの機能変更は、コンポーネントのコードをよりシンプルにするとともに、既存の問題を解決するためのものとなっています。公式ブログに記載された主な変更ポイントを以下に列挙します。

  • dioxus-coreを完全に記述し直して、安全でないコードを全て削除
  • use_state、use_ref関数を廃止してCloneフリーのSignalを使用
  • 全てのライフタイムを削除し、コンテキスト引数(cx: Scope)も削除
  • アプリを起動するあらゆるプラットフォームで単一のlaunch関数を提供
  • TailwindおよびVanilla CSSをサポートするアセットのホットリロード
  • WebAssemblyネイティブのWebSysイベントへのアクセスが可能に
  • 要素のプロパティを使用したコンポーネントの拡張

 ここからは、具体的なアップデート内容を解説していきます。

ロガーがtracingベースに変更された

 0.4ではロガーdioxus_loggerのベースはlogクレートでしたが、0.5でtracingクレートに変更されました。tracingクレートは、構造化されたイベントベースの診断情報を収集するためのフレームワークで、特に並列実行環境で有効です。logクレートのまま使い続けると、実行時にエラーとなります。リスト1は、Infoレベルのログ出力を有効にする初期化コードの例です。

use log::info;
dioxus_logger::init(log::LevelFilter::Info).expect("failed to init logger");
↓
use tracing::Level;
dioxus_logger::init(Level::INFO).expect("failed to init logger");
リスト1:ロガーをtracingベースへ変更

 後述するdx newコマンドでのアプリ生成では、このロガーを使用するようにクレートの依存関係や初期化コードがあらかじめ用意されます。

ルートコンポーネントのマウント関数がシンプルになった

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る