Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@Taichi-yzrh

RustでWebAssemblyやってみた

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/にアクセス
  • やたー表示できたー

image.png

感想(あくまで個人の感想です、感じ方には個人差があります)

  1. できたwasmファイルが297バイトには恐怖を感じるほど小さい、キロバイトじゃなくてバイト
  2. コンパイルめんどくさい(PHPやりすぎですね)
  3. jsでは重い処理(画像とか動画)を代わりに任せられそう
  4. unityから呼び出すとかいう使い方が合っているような気がする
  5. WASIという技術も今開発されているのでそちらでコンテナ技術側で活路を見出すのかもしれない
3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Taichi-yzrh
アパレル社内SE→大手ゲーム→大手EC→シェアリングエコノミー→美容関係の社内エンジニア、社内SE→YUZURIHA AS400, Access, VB6, VBA, PHP(Ethna, Cake, Laravel), Java(6,7,Struts,PlayFramework), apache httpd, tomcat, nginx, varnish, PandraFMS, Flutter
yzrh
システムコンサルティングおよびシステム開発保守運用を行うスタートアップ

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?