🗂
RustとWASMでフロントエンド開発してみたら、意外と現実的だった話
最近Redditでこんなコメントを見かけました:
“I hate JS. I’ve done the HTML and CSS, but I’m stuck. I want to use Rust instead.”
正直、すごく共感しました。長年JavaScriptを使ってきて、特に大規模な開発では「型がない」「ツール壊れる」「謎エラー多い」と疲れることもしばしば…。
そこでふと考えました。
Rust + WASM(WebAssembly)でフロントエンド開発って、現実的に使えるのか?
この記事では、実際に小さなプロジェクトで試してみた体験と、よかった点・つらかった点をシェアします。
Rustでフロントエンドって技術的に可能?
はい、技術的には可能です。RustはWASMへコンパイルできるので、ブラウザ上で直接Rustのコードを動かすことができます。
主なフレームワーク:
- Yew:Reactライクな構文。比較的成熟。
- Dioxus:マルチプラットフォーム対応。活発なコミュニティ。
- Sycamore:SolidJSのような高速差分レンダリングが特徴。
主なビルドツール:
-
wasm-pack
:npmパッケージを作るのに便利。 -
trunk
:Viteのようにホットリロードとビルドに対応。 -
cargo-leptos
:Leptos向けの統合ツール。
実際に開発してみた感想
✅ よかった点:
- 型安全と静的解析:安心感がすごい。
- 性能:大規模なデータ処理やグラフ描画はJSよりスムーズ。
- 構造が明快:状態管理やUIロジックがRustらしく整理されている。
⚠️ つらかった点:
- 学習コスト:Rust + WASMのツールチェインは複雑。デバッグも一苦労。
- DOMとの連携:WASMから直接DOMは触れず、JS経由が必要。ここがボトルネック。
- エコシステムの未成熟さ:UIコンポーネントライブラリが少ない。
ローカル開発環境の改善に「ServBay」が便利
Rust + WASMの開発では、ローカルサーバーの立ち上げやHTTPS対応が地味に面倒です。
そんな時に役立つのが ServBay です。
元々はPHPやNode.js向けの開発ツールですが、静的HTML+WASMでも快適に使えます。
💡 ServBayのメリット:
- ✅ 自動HTTPS対応 → ブラウザのセキュリティ制限を回避
- ✅ サーバー設定不要 →
nginx
不要、ポート設定も不要 - ✅ Windows対応済み
TrunkなどでWASMアプリをビルドして、ServBayのWebサーバーにディレクトリを指定するだけで、即座にhttps://localhostで確認できます。
Rustを使うのに向いてるケース/向かないケース
向いている:
- データビジュアライゼーション、計算負荷の高いUI
- 組み込みWebUI(IoTデバイスなど)
- Rustバックエンドと統一したいとき
向かない:
- JSエコシステムに強く依存するUI(既存のライブラリなど)
- チームで高速開発したい時(Rustの習熟度が求められる)
- SEOやアクセシビリティ重視のWebサイト
WASM × Rustの未来は?
まだ“主流”とは言い難いですが、将来的には以下のような進化が期待できます:
- Interface Types提案 → JSとの連携がもっと簡単に
- GC対応 → DOMを直接扱える日も近い
- Dioxusなどの成長 → 開発体験がさらに良くなる
まとめ
Rust + WASMは今すぐにJSを「完全に置き換える」わけではありませんが、特定のニーズには確実にフィットします。
まずは小さなプロジェクトから試してみては?
ServBay のようなツールを使えば、驚くほど簡単にRustフロントエンドのプロトタイプを作れます。
💬 あなたはRustでフロントエンド開発したことがありますか?
ぜひコメントで体験談や意見を教えてください 🙌
推广呢?
Discussion