RustでWebAssemblyやってみた
3021 ワード
TL;DR
- Rustにちょっと触りたかっただけという噂
だいたいWebAssemblyとは
- ざっくりいうと、バイナリプログラムをブラウザ経由で実行できる
- 小さいファイルサイズ、持ち運びしやすい、ネイティブに近い速い実行速度
- watファイルとwasmファイルがあり、watは人が読めるwasmはバイナリぐらいの理解で大丈夫
- ざっくりじゃない説明が欲しい方はこちら
- WebAssemblyをつくるにはc/c++/rustが対応しています
- 今回は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名入れろって言われるので適当に入れる
ビルド
wasm-pack build
npmでの簡易表示
npm init wasm-app www
cd www
npm install
npm run start
- ブラウザで
http://localhost:8080/
にアクセス
- やたー表示できたー
- ざっくりいうと、バイナリプログラムをブラウザ経由で実行できる
- 小さいファイルサイズ、持ち運びしやすい、ネイティブに近い速い実行速度
- watファイルとwasmファイルがあり、watは人が読めるwasmはバイナリぐらいの理解で大丈夫
- ざっくりじゃない説明が欲しい方はこちら
- WebAssemblyをつくるにはc/c++/rustが対応しています
- 今回は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名入れろって言われるので適当に入れる
ビルド
wasm-pack build
npmでの簡易表示
npm init wasm-app www
cd www
npm install
npm run start
- ブラウザで
http://localhost:8080/
にアクセス
- やたー表示できたー
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- これも公式に書いてあり通りです
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名入れろって言われるので適当に入れる
ビルド
wasm-pack build
npmでの簡易表示
npm init wasm-app www
cd www
npm install
npm run start
- ブラウザで
http://localhost:8080/
にアクセス
- やたー表示できたー
cargo install cargo-generate
- 割愛しますね
- nodebrewとかnパッケージを使ってインストールしてください
テンプレートからプロジェクト作成します
cargo generate --git https://github.com/rustwasm/wasm-pack-template
- project名入れろって言われるので適当に入れる
ビルド
wasm-pack build
npmでの簡易表示
npm init wasm-app www
cd www
npm install
npm run start
- ブラウザで
http://localhost:8080/
にアクセス
- やたー表示できたー
cargo generate --git https://github.com/rustwasm/wasm-pack-template
wasm-pack build
npmでの簡易表示
npm init wasm-app www
cd www
npm install
npm run start
- ブラウザで
http://localhost:8080/
にアクセス
- やたー表示できたー
npm init wasm-app www
cd www
npm install
npm run start
http://localhost:8080/
にアクセス
感想(あくまで個人の感想です、感じ方には個人差があります)
- できたwasmファイルが297バイトには恐怖を感じるほど小さい、キロバイトじゃなくてバイト
- コンパイルめんどくさい(PHPやりすぎですね)
- jsでは重い処理(画像とか動画)を代わりに任せられそう
- unityから呼び出すとかいう使い方が合っているような気がする
- WASIという技術も今開発されているのでそちらでコンテナ技術側で活路を見出すのかもしれない
Author And Source
この問題について(RustでWebAssemblyやってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Taichi-yzrh/items/3017de7a0ce9e946b360著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .