以下の内容はhttps://syu-m-5151.hatenablog.com/entry/2025/02/01/120804より取得しました。


WebAssembly を開発する為にTrunkビルドツールを試してみました。

はじめに

WebAssemblyの進化により、RustでWebアプリケーションを構築する機会が増えています。特にYewフレームワークは、React風の使い勝手とRustの堅牢性を組み合わせた開発が可能です。

本記事では、Yewアプリケーション開発をスムーズにするビルドツールTrunkについて、セットアップから実践的なテクニックまで解説します。

yew.rs

Trunkとは

Trunkは、WebAssemblyアプリケーションに特化したビルドツールです。そして、以下のような特徴を持ちます。

  • ホットリロードによる高速な開発体験
  • アセット管理の自動化(画像、CSS、その他静的ファイル)
  • 最小限の設定で開発環境の構築が可能
  • プロダクションビルドの最適化機能

trunkrs.dev

環境構築

まず、必要なツールをインストールします:

# WebAssemblyターゲットの追加
rustup target add wasm32-unknown-unknown

# Trunkのインストール
cargo install trunk

trunkrs.dev

プロジェクトの作成

以下のコマンドで新規プロジェクトを作成します:

cargo new yew-app
cd yew-app

Cargo.tomlに必要な依存関係を追加:

[dependencies]
yew = { git = "https://github.com/yewstack/yew/", features = ["csr"] }

yew.rs

シンプルなカウンターアプリの実装

src/main.rsにカウンターアプリのコードを実装します:

use yew::prelude::*;

#[function_component(App)]
fn app() -> Html {
    let counter = use_state(|| 0);
    let onclick = {
        let counter = counter.clone();
        move |_| {
            let value = *counter + 1;
            counter.set(value);
        }
    };

    html! {
        <div>
            <button {onclick}>{"+1"}</button>
            <p>{ *counter }</p>
        </div>
    }
}

fn main() {
    yew::Renderer::<App>::new().render();
}

yew.rs

HTMLテンプレートの準備

index.htmlをプロジェクトルートに作成:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Yew Counter App</title>
    </head>
    <body></body>
</html>

開発サーバーの設定と起動

Trunk.tomlで開発サーバーの設定をカスタマイズできます:

[serve]
# 開発サーバーのアドレス
address = "127.0.0.1"
# ポート番号
port = 8080
# アセットディレクトリ
assets = ["public"]
# プロキシ設定(APIサーバーなど)
[[proxy]]
backend = "http://localhost:3000/api/"

開発サーバーを起動:

trunk serve --open

これでhttp://localhost:8080にアプリケーションが立ち上がります。

アセット管理のベストプラクティス

静的ファイルはpublicディレクトリで管理します:

public/
  ├── images/      # 画像ファイル
  ├── styles/      # CSSファイル
  ├── fonts/       # フォントファイル
  └── favicon.ico  # ファビコン

trunkrs.dev

プロダクションビルドの最適化

本番環境向けのビルドでは、以下の最適化が可能です:

# リリースビルド
trunk build --release

# WebAssemblyコードの最適化
trunk build --release --filehash

デバッグトラブルシューティング

開発中によくあるトラブルの対処法:

  • ビルドエラー時はtrunk cleanでキャッシュをクリア
  • アセットが反映されない場合はtrunk serve --watchで監視を強化
  • WebAssemblyのデバッグには開発者ツールのConsoleを活用(フロントエンド開発初心者で学びが多かった⋯)

おわりに

Trunkを活用することで、Yewアプリケーションの開発体験が大幅に改善されます。特にホットリロードとアセット管理の自動化は、開発効率を向上させる重要な機能です。

参考リンク




以上の内容はhttps://syu-m-5151.hatenablog.com/entry/2025/02/01/120804より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14