番外編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のゲームを、いつかブラウザで動かしたい」

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


コメントする

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