Rust

RustでWebAssembly開発!最新ツールによる手順とサンプルコード

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Rust WebAssembly 開発手順 入門:最新ツール链で実践する方法

RustでWebAssembly(WASM)を開発するのは、高性能なWebアプリケーション開発の切り口として注目されています。しかし、「環境構築が面倒」「JavaScriptとの連携が難しい」という悩みを持つエンジニアも多いです。本記事では、2023年現在で最新のツール链を活用したRustによるWASM開発フローを体系的に解説します。具体的な手順・サンプルコード・トラブルシューティングまで網羅し、読者が実装できるようサポートします。


Rust環境の構築方法

RustでWebAssemblyを開発するには、まず安定した開発環境を整える必要があります。最新のツール链を使用することで、スムーズな導入と効率的なデバッグが可能になります。

rustupによるインストール手順

なぜrustupが必要か?
Rustはバージョン管理やターゲット環境の切り替えにrustupを使うことで、複数のプロジェクトや開発環境で一貫した設定を実現できます。以下が具体的な手順です。

  1. rustupのインストール
    以下のコマンドでrustupをインストールしてください:
    bash
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

    インストール後、~/.cargo/envにパスを通すことで環境変数が反映されます。

  2. ツールチェーンの確認
    bash
    rustup show

    出力結果でstablenightlyなどのバージョンを確認し、必要に応じて更新します。
    bash
    rustup update

注意事項:古いバージョンのツールチェーンを使用している場合、WebAssemblyターゲットがサポートされていない可能性があります。


WebAssemblyターゲットの有効化

RustでWASMを生成するには、wasm32-unknown-unknownという特殊なターゲット環境が必要です。最新版のRustでは自動で有効になるケースもありますが、手動設定が必要な場合も含まれます。

wasm32-unknown-unknownの追加手順

なぜこのターゲットが必要か?
JavaScript環境と互換性を持たせるために、WebAssemblyはwasm32アーキテクチャでビルドされる必要があります。以下のコマンドでターゲットを追加してください:

これにより、cargo build --target=wasm32-unknown-unknownなどのコンパイルが可能になります。

ターゲット 説明 対応環境
wasm32-unknown-unknown WebAssembly向けの標準ターゲット ブラウザ、Node.jsなど

エラーハンドリングのポイント:ターゲットが未登録の場合、「target not found」などのエラーが発生します。この場合はrustup target addコマンドで追加してください。


Cargo.tomlでのプロジェクト構成

Rustプロジェクトでは、Cargo.tomlに依存関係を明記することで、WASM開発向けの設定を実現できます。特にJavaScriptとの連携に必要なwasm-bindgenは必須です。

wasm-bindgenの導入例

最新版確認方法
Rust Cargo サイトで最新バージョンを確認し、以下のようにCargo.tomlに記述してください。

補足wasm-bindgenは、RustコードをJavaScriptで呼び出せるインターフェースを自動生成するライブラリです。これがないとWASMモジュールの利用が困難になります。


RustコードからWASMへの変換

具体的なRustコードをWASMにコンパイルする手順について解説します。シンプルな加算関数を例に、プロジェクトを作成してみましょう。

簡単なサンプルコードの作成

目的と設計の背景:
このステップでは「RustでJavaScriptから呼び出せる機能」を作るための基本構造を学びます。以下が具体的な手順です。

  1. プロジェクトディレクトリ内にsrc/lib.rsを作成し、以下のように記述してください:
    rust
    use wasm_bindgen::prelude::*;

#[wasm_bindgen]
pub fn add(a: i32, b: i32) -> i32 {
a + b
}

  1. #[wasm_bindgen]アトリビュートでJavaScriptから呼び出せる関数を宣言します。

コンパイル手順

注意:リリース版でのコンパイルが推奨されます。
ターミナル上で以下のコマンドを実行してください:

出力された.wasmファイルは、target/wasm32-unknown-unknown/release/my_wasm_project.wasmに保存されます。


JavaScriptとの連携実装

生成されたWASMモジュールをJavaScriptから利用するには、wasm-bindgenで生成されるJSコードを使用します。以下に読み込み方法とテスト手順を示します。

WASMモジュールの読み込み方法

動作原理と注意点:
WASMはJavaScriptにロードされた後、関数呼び出しやデータ共有を行う必要があります。HTMLファイル内に以下のようにスクリプトを追加してください:

注意事項pkg/ディレクトリ内に生成されるJavaScriptファイルが必要です。このファイルはwasm-bindgenが自動で生成します。


開発でよくあるトラブルシューティング

最新ツールでも発生しうる問題とその解決策を解説します。特に、ターゲットコンパイルエラーやメモリ管理の注意点は重要です。

ターゲットコンパイルエラーの例

解決策rustup target add wasm32-unknown-unknownを実行してターゲットをインストールしてください。

メモリ管理の落とし穴

WASM環境では、Rust独自のメモリ管理(ヒープの確保/解放)が必要です。JavaScriptとの連携時に不適切なメモリ操作を行うとクラッシュする可能性があります。wasm-bindgenは自動で一部を補正しますが、複雑なデータ構造では手動で対応が必要です。


サンプルプロジェクトで体験

これまでに紹介した内容を実際に動かしてみましょう。以下のステップに従ってください:

準備されたコードの実行方法

学習目標:
この手順を通じて、WASMモジュールの作成からJavaScriptとの連携までの一連のフローを体験します。

  1. 新しいディレクトリを作成し、cargo init --libでプロジェクトを作成します。
  2. Cargo.tomlwasm-bindgenを依存関係として追加します。
  3. src/lib.rsに加算関数のコードを記述します(上記参照)。
  4. cargo build --target=wasm32-unknown-unknown --releaseでWASMファイルを生成します。
  5. HTMLファイルを作成し、JavaScriptからモジュールを読み込みます。

インタラクティブなデバッグ手順

目的:
開発者ツールを使ってWASMの動作を確認し、問題点を特定しましょう。

ブラウザの開発者ツール(DevTools)を使用して以下の確認を行ってください:

  • WASMファイルが正しくロードされているか。
  • JavaScript関数がRust側で呼び出れているか。
  • コンソールに期待通りの結果が出力されているか。

CTA:本記事で紹介したサンプルプロジェクトを実際に動かして、WebAssemblyの実装を体験してみましょう!

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Rust