infoMore than 3 years have passed since last update.
RustでWebAssemblyやってみた
Last updated at Posted at 2021-04-08
TL;DR
だいたいWebAssemblyとは
- ざっくりいうと、バイナリプログラムをブラウザ経由で実行できる
- 小さいファイルサイズ、持ち運びしやすい、ネイティブに近い速い実行速度
- watファイルとwasmファイルがあり、watは人が読めるwasmはバイナリぐらいの理解で大丈夫
- ざっくりじゃない説明が欲しい方はこちら
- WebAssemblyをつくるにはc/c++/rustが対応しています
まずはRustのセットアップから
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- ~/.cargo/bin を PATHに追加しておきましょう
- すでにインストールしてるひとは、rustup updateで最新バージョンにアップデートしましょう
wasm-packをインストールします
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
cargo-generateをインストールします
- コンパイルするのでまあまあ時間かかります
- 私のmacbookproではファンがウィンウィンいうてました
cargo install cargo-generate
npmもインストール
- 割愛しますね
- nodebrewとかnパッケージを使ってインストールしてください
テンプレートからプロジェクト作成します
cargo generate --git https://github.com/rustwasm/wasm-pack-template
- project名入れろって言われるので適当に入れる
ビルド
npmでの簡易表示
npm init wasm-app www
cd www
npm install
npm run start
- ブラウザで
http://localhost:8080/
にアクセス
- やたー表示できたー
感想(あくまで個人の感想です、感じ方には個人差があります)
- できたwasmファイルが297バイトには恐怖を感じるほど小さい、キロバイトじゃなくてバイト
- コンパイルめんどくさい(PHPやりすぎですね)
- jsでは重い処理(画像とか動画)を代わりに任せられそう
- unityから呼び出すとかいう使い方が合っているような気がする
- WASIという技術も今開発されているのでそちらでコンテナ技術側で活路を見出すのかもしれない
List of users who liked
19Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
What you can do with signing up