Webアプリケーションを作りたい。しかもその全てをRustで開発。
そんなわがままな考えは通らないという直感が私にはあった。
Webアプリケーションには html css javascript が絶対に必須であるものだと考えるのは必然。
でも、現実はもっと素敵なものだった。
私と同じ考えをもつエンジニアたちは少なくない。ならばそのようなニーズを満たすものも存在する。
RustのWebフレームワーク達
Leptos
ハイブリッド性とパフォーマンス性を重視するWebフレームワーク。
2026-01-12現在、もっとも人気のあるWebフレームワークみたい。
サーバーサイドとクライアントサイドのレンダリングをシームレスに繋ぐ機能をもっている。
Signals という仕組みで変更された部分のみをピンポイントで更新する。
react の経験者ならば難なく使いこなせるだろう。
Axum というWebフレームワーク(バックエンド)との組み合わせが主流。
いつかこれを使った100%Rust製SPAを作ってみたいなぁ。
Dioxus
Learn once, write anywhere.
Webのみならず、一度書けばデスクトップやモバイルでも同じコードで動かすことができる。
react に近いプログラミングモデル (Virtual DOM) を採用していて、馴染みやすいクロスプラットフォームアプリケーションフレームワークのようだ。
Yew
質実剛健1な歴史あるWebフレームワーク。
react のクラスコンポーネントに近い設計をしている。
Virtual DOMを使用しており、安定感がある。
Sycamore
これらはどのようにして動くか?
記述するのも基本的にRustのみで、JavaScriptなどは基本的に使わない。(FFIは使う) Rust以外はあまり意識せず開発できる。
しかし、それらのフレームワークたちはRustコードを翻訳してWeb三銃士言語 + wasmに変換しているにすぎないとも言える。
私たちがやることは、 UIロジックや状態管理をすべてRustで記述すること。
Webフレームワークがやることは、JSのブリッジがwasmにある関数を呼び出し、wasmにある関数がJSのブリッジのJavaScriptにしか実行できないDOMなどのWeb APIを呼び出すこと。
web-sysというクレートを使えば、RustからはRustの関数としてJavaScriptの関数を呼び出すことができる。
これらがあるからこそ、開発者はRustしか触らずに開発できるようになっているということ。
とはいえ、Web三銃士の技術を前提知識として知っておかなければ、Webアプリケーションの開発はそもそも難しいが。
でもRustやるほどのひとはそこらへんの技術を触れるのはへでもねーよな?
Footnotes
-
素朴で信頼性があるってこと。 ↩