スペックの持ち腐れスペックの持ち腐れホームプロフィールMTPLLCNEMSlackチャンネルも参加してください!ホーム情報エンジニアリングRustのyewを使ってみる2020/01/18みなさん、Yewをご存知でしょうか(イュウみたいなユゥみたいな読み方をします)。RustマクロでReactのJSXのようなHTML表記をして、WebAssemblyに変換して動かすことができるライブラリです。https://github.com/yewstack/yew半年くらい前に実験的にこれを使って遊んでみたのを思い出したので書き置きしておきます。セットアップなぜかYewはnightly版のRustでないと動きません。nightlyこうしてやりましょう。つぎにWebAssemblyコンパイルを利用するために以下のようにします。wasm32-unknown-unknownそして後に使うコマンドのために、以下をcargo-webをインストールします。cargo-webセットアップはこれにて完了です。使ってみる以下のようにプロジェクト作っていきます。[プロジェクト名]そしてこのプロジェクトにYewを追加してやりましょう。yew+1ボタンを押すと数が1ずつ増えていくだけのクソサンプルコードが以下になります。yew::start_app::<Model>();}クセのあるところReactの場合、”class”がJavaScriptの予約語となっているため、”className”なる悪魔的な独自文を持ち出していますが、Rustを使っているYewはそのような心配はありません。テキストノードまず、上記のサンプルを見ていただければわかりますが、HTMLのテキストノードに当たる部分をナマで書くことができません。}</button>と書かざるを得ないのです。エディタのオートコンプリートがあればそこまで生産性に支障はないでしょうが、クセであることは確かです。属性ノード加えて、HTMLの属性ノード(いわゆるアトリビュート)を記述したあと、必ずコンマが必要になっています。これはおそらく、onclickなどのイベント記述にクロージャを使えるようにしていると構文解釈が複雑になりすぎてしまうからでしょう。慣れれば問題ないですが、HTMLとは結構離れてしまっています。まとめバンドルサイズは現実的な値ですが、処理速度や生産性の面でまだまだ実用に耐えるものではありません。Angularにお世話になります。WebAssemblyの可能性を知る一つの例としては面白いんじゃないでしょうか。余談ですが、Rustのこの本を家に置いてあります。