Rust

2024年版 Rust と WebAssembly のビルド手順とベストプラクティス

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

1️⃣ Rust ツールチェーンの準備

手順 内容
① rustup のインストール bash<br># 未インストールの場合のみ実行<br>curl https://sh.rustup.rs -sSf | sh<br>source $HOME/.cargo/env
② 安定版ツールチェーンの更新 bash<br>rustup update stable # 例: rustc 1.78.0 (2024‑04‑01)
③ WebAssembly ターゲットの追加 bash<br># wasm32-unknown-unknown をインストール<br>rustup target add wasm32-unknown-unknown

ポイント:上記コマンドは一度実行すれば以降のプロジェクトで再利用できます。


2️⃣ wasm-pack の導入

2.1 インストール方法(公式推奨)

方法 コマンド
Cargo 経由 (最もシンプル) bash<br>cargo install wasm-pack
Homebrew (macOS / Linux) bash<br>brew install wasm-pack

インストール後は必ずバージョンを確認し、公式リリースページと突き合わせます。

2.2 2024 年版の主な変更点(v0.12 系)

  • --target bundler がデフォルトになる。
  • ビルド速度が約 10 % 向上(内部で Cargo のパラレル実行を最適化)。
  • wasm-opt への自動連携オプションが追加され、サイズ最適化が容易に。

参考: Rust and WebAssembly Book – https://rustwasm.github.io/book/


3️⃣ Cargo プロジェクトの作成と依存クレート設定

3.1 ライブラリテンプレートの生成

src/lib.rs がエントリーポイントになるので、#[wasm_bindgen] を直接記述できます。

3.2 必要なクレートを追加

Cargo.toml の抜粋

ポイント: バージョンは cargo add が自動で最新の安定版を取得します。


4️⃣ Rust コード実装例と wasm-pack ビルド

4.1 基本的なエクスポート関数

4.2 推奨ビルドコマンド

生成物 (pkg/ ディレクトリ)

ファイル 内容
my_wasm_app_bg.wasm 実体 Wasm バイナリ
my_wasm_app.js ES モジュールラッパー(デフォルトエクスポート)
my_wasm_app_bg.js バインディング実装

5️⃣ JavaScript 側での利用

5.1 ESM インポート例(Vite 推奨)

5.2 CommonJS(Node.js 等)向け例

結論:モダンフロントエンドは ESM が標準です。プロジェクト全体を ESM に統一すると、ツリ―シェイキングや HMR の恩恵が最大化します。


6️⃣ 開発サーバーの構築(Vite を例に)

6.1 Wasm パッケージの配置

vite.config.ts はデフォルト設定で問題ありませんが、MIME タイプの正しい配信を保証するため public/ 配下に配置しておくことがポイントです。

ファイル保存 → Vite が自動リビルド → ブラウザが即時更新されます(HMR)。


7️⃣ 本番向け最適化と CI/CD

7.1 バイナリサイズの削減 (wasm-opt)

pkg/ に上書きすれば、フロントエンドは自動的に圧縮版を利用します。

7.2 デバッグビルド

開発時はデバッグ情報付きでビルドし、リリース時だけ最適化ビルドを行うとトラブルシューティングが楽になります。

7.3 GitHub Actions による自動ビルドパイプライン

このワークフローは push → ビルド → アーティファクト を自動化し、GitHub Pages や npm へのデプロイを追加ステップで拡張できます。


8️⃣ まとめ(チェックリスト)

  • rustupwasm32-unknown-unknown ターゲットをインストール
  • ✅ 最新の wasm-pack(v0.12 系)を公式手段で取得し、バージョンを必ず確認
  • ✅ Cargo で my-wasm-app を作成し、wasm-bindgenweb-sys を追加
  • #[wasm_bindgen] による関数エクスポートを書き、wasm-pack build --target bundler でビルド
  • ✅ ESM (import) 形式でフロントエンドに組み込み、Vite で HMR 開発環境を構築
  • ✅ 本番は wasm-opt -Oz でサイズ最適化、デバッグ時は --debug オプションを活用
  • ✅ GitHub Actions 等 CI にビルド工程を組み込み、成果物を自動配布

これらの手順を踏めば、Rust → WebAssembly → モダンフロントエンド の一連フローが 2024 年版の標準環境として確実に機能します。ぜひプロジェクトやポートフォリオで試してみてください!

スポンサードリンク

-Rust