18
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rust+WebAssemblyの超速フロントエンドフレームワークYewを15分くらいで味見

Last updated at Posted at 2018-07-15

Rust+WebAssemblyのフロントエンドフレームワークの Yewという奴が気になっていた。先日公式レポジトリのtodomvc exampleを動かそうとしてみたらまだ色々発展途上らしくセットアップでハマりまくって4時間くらい無駄にしたので、それを整理して15分くらいで味見できる状態にしたメモ。

yew
Yewの語源はこちら https://ja.wikipedia.org/wiki/イチイ

rustup を入れる。

https://rustup.rs/ ←このページに書いてある手順でインストールする。インストール中に何か聞かれたら、 Proceed with installation (default) 的なのを選ぶ。また、インストール中に出てくる手順に従って環境変数のパスを設定する。homebrewとかでも入るらしいが、個人的に使ったことがないのと、たぶん解説の分岐が増えるので今回は使わない。

rustupはrust公式が作っているrbenvとかnodenvみたいなやつで、今の所デファクトスタンダード。

cargo web をインストールする

Web開発用のいろんなのを自動でやってくれるツール。開発が活発で不安定な気がするので、バージョンを固定している。

cargo install --version 0.6.14 cargo-web

Yew のレポジトリをクローンして、動作確認済みバージョンのtodomvc exampleに移動

開発がまだまだ活発なので、動作確認済みバージョンをチェックアウトする。

git clone https://github.com/DenisKolodin/yew.git
cd yew
git checkout f077a9a0323dbda2335375ae97954366733396a5 -b master20180715
cd examples/todomvc

コンパイラをインストール

WASM出力はまだ安定版コンパイラでは使えないので、開発版コンパイラを入れる。開発版コンパイラはたまに壊れるので、バージョンとして動作確認した日付を指定する。

emscriptenを使えば安定版コンパイラでも動くが、emscripten自体のインストールが面倒なのとコンパイル時間が味見するにはけっこう辛いので今回はパス

rustup install nightly-2018-07-14

todomvc example を動かす

下記のコマンドを実行して成功すると、開発サーバーが立ち上がってブラウザが開く。ブラウザのオートリロードも有効になる。

cargo +nightly-2018-07-14 web start --open --auto-reload --target=wasm32-unknown-unknown

ちなみに、 --target=wasm32-unknown-unknown をつけないとemscriptenを使ったビルドになる。また、Web.toml っていう設定ファイルを書けば長いオプションは省略できるようになる気がする。

スクリーンショット 2018-07-15 15.30.13.png

ソースをいじってみる

src ディレクトリ内にソースがあるのでいじってみる。jsx的な記法があってびびった

スクリーンショット 2018-07-15 15.35.41.png

webpackとかと連携したりwasmをminifyしたりとかどうするかは未調査です。

18
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?