番外編1 WebAssemblyって何? RustとVue.jsのどちらでWebを動かすべきか






WebAssemblyって何? RustとVue.jsのどちらでWebを動かすべきか

第2部 WebAssemblyって何?
RustとVue.jsのどちらでWebを動かすべきか

60歳からRustの勉強を始めてみると、不思議な現象が起きます。

Rustそのものの勉強を始めたはずなのに、突然見慣れないカタカナや略語が大量に現れるのです。

Vue.js。

React。

WebAssembly。

Yew。

Leptos。

Dioxus。

SSR。

SPA。

CSR。

私も最初は完全に混乱しました。

WordPress中心だった頃は、

「HTML、CSS、PHP、MySQL」

という世界で十分仕事になりました。

ところがRustの世界に入ると、見たことのない単語が次々に飛び込んできます。

しかし実際には、それほど複雑な話ではありません。

この記事では、Rust、Vue.js、WebAssemblyの関係を、ゲーム好きの60歳新人Rustプログラマーの視点で整理してみたいと思います。

まずWebサイトは誰が動かしているのか

現在のWebの世界はJavaScriptを中心に回っています。

Googleマップも、Gmailも、YouTubeも、Amazonも、画面が滑らかに動くのはJavaScriptのおかげです。

ブラウザの中でボタンを押したり、情報を更新したり、画面の一部だけを書き換えたりする処理は基本的にJavaScriptが担当しています。

Web開発の基本構造を整理すると次のようになります。

HTML

骨組み

CSS

デザイン

JavaScript

動き

長い間、この構成がWeb開発の王道でした。

そして現在もその王道は変わっていません。

Vue.jsは何者なのか

Vue.jsはJavaScriptのフレームワークです。

もっと簡単に言うなら、
「画面を作る専門家」です。

例えば次のような機能があります。

  • ボタン表示
  • フォーム入力管理
  • メニュー表示
  • リアルタイム更新
  • 一覧表示
  • 画面切り替え

こうしたユーザーインターフェースの構築が得意です。

ユーザー

Vue.js

画面表示

例えるなら、Vue.jsはレストランのホールスタッフです。

お客様に一番近い場所で働いています。

何が表示されるか、
どんな操作ができるか、
ユーザー体験を作る担当です。

Rustは何を担当するのか

一方のRustは少し違います。

Rustの得意分野は計算です。

  • ゲームロジック
  • AI処理
  • 画像処理
  • 動画処理
  • 暗号化
  • シミュレーション

つまり見た目ではなく、中身を担当します。

Vue.js

画面担当

Rust

計算担当

ここを理解すると頭の中が一気に整理されます。

Vue.jsとRustは競争相手ではありません。

役割が違うのです。

WebAssemblyという謎の単語

そして登場するのがWebAssemblyです。

略してWasm(ワズム)と呼ばれます。

名前だけ聞くと非常に難しそうです。

しかし本質はとても単純です。

WebAssemblyとは、

「Rustなどで作った高速なプログラムをブラウザの中で動かす仕組み」

です。

昔のブラウザはJavaScriptしか理解できませんでした。

JavaScript

ブラウザ

しかし現在は違います。

Rust

WebAssembly

ブラウザ

という経路が使えるようになりました。

これが世界中で話題になった理由です。

なぜ世界中がWebAssemblyに注目したのか

理由は非常にシンプルです。

高速だからです。

例えば昔のスペースインベーダーを考えてみましょう。

画面上の敵は数十体。
弾も少ない。
計算量もわずかです。

ところがゲームは進化しました。

ゼビウスになり、
レイストームになり、
3Dゲームになり、
物理演算を使うようになりました。

計算量は爆発的に増えています。

そうなると、
ブラウザの中でも高速な処理が求められます。

そこでRustとWebAssemblyの組み合わせが注目されるようになったのです。

初心者がハマる最大の誤解

私自身も最初に勘違いしました。

それは、

Vue.js vs Rust

という対立構造で考えてしまうことです。

しかし本当は違います。

レストランで考えてみる

レストランを想像してください。

Vue.jsはホールスタッフです。

  • お客様を案内する
  • 注文を受ける
  • 料理を運ぶ

ではRustは何でしょう。

厨房です。

  • 調理する
  • 下ごしらえする
  • 仕込みを行う

そしてWebAssemblyは、
ホールと厨房をつなぐ通路です。

Vue.js

画面表示

WebAssembly

橋渡し

Rust

高速計算

これが一番分かりやすい関係だと思います。

RustだけでWebアプリは作れないのか

もちろん作れます。

近年は次のようなRust製フレームワークが成長しています。

  • Yew
  • Leptos
  • Dioxus

これらを使えば、Web画面そのものもRustで作れます。

プログラマーとしては非常に魅力的です。

言語を一つに統一できるからです。

しかし初心者には少し難しい世界でもあります。

まずRust本体を学ぶだけでも十分大変だからです。

私ならこう学ぶ

60歳から始めるなら、私は王道ルートを選びます。

Rust基礎

CLIアプリ

簡単なゲーム

Bevy

WebAssembly

Vue.js連携

この順番なら無理がありません。

いきなり全部を覚えようとすると確実に混乱します。

まずRustを楽しむ。

ゲームを作る。

その後でブラウザに持っていく。

これが一番自然な流れだと思います。

それでもWasm一択ルートにはロマンがある

とはいえ、Rust好きとしては憧れてしまいます。

全部Rustで作りたい。

JavaScriptを使わずにWebアプリを書きたい。

そう考える気持ちはよく分かります。

なぜなら私たちがゲームセンターでインベーダーやゼビウスに夢中になっていた頃、
ブラウザでゲームが動く未来など想像もできなかったからです。

その夢が今では現実になっています。

Rustで書いたコードがブラウザで動く。

ゲームまで動いてしまう。

これは技術者として純粋にワクワクする出来事です。

まとめ

Rustを学び始めると、多くのカタカナ用語に出会います。

しかし最初に覚えるべき本質はシンプルです。

Vue.js
=画面担当

Rust
=計算担当

WebAssembly
=橋渡し役

まずはこの関係だけ理解すれば十分です。

そして60歳からRustゲーム開発に挑戦するなら、
焦って全てを学ぶ必要はありません。

まずRustを楽しむこと。

ゲームを作ること。

その先にWebAssemblyがあります。

結局のところ、WebAssemblyとは流行りの技術用語ではありません。

「自分で作ったRustのゲームを、いつかブラウザで動かしたい」

そんな夢を実現するための橋なのです。


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です