2021/05/12に開催した社内向けハンズオンの資料です。
![Rustハンズオン第5回 WebAssembly編](https://cdn-ak-scissors.b.st-hatena.com/image/square/14801d5bfcd4e36ac3cdb561b88b8f7d667cdd16/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F945ce930d8c7427b86c3f4b22053ea99%2Fslide_0.jpg%3F18064283)
概要 最近はWebAssemblyに興味があり、勉強していたんだけど仕様を読み始めても頭に入らないのでインタプリタを作ってみることにした。よくわからないものは作ってみるのが一番よい。 github.com まだ残された課題は多いのだけれども、一つ目標にしていた「Goで書いたゲームボーイエミュレータを動かす」を達成できたのでここに書いておく。 うおーついにRustで書いた自作wasm interpreter上でgoで書いた自作gameboy emulatorが動いたー!けど1FPSくらいしかでない... pic.twitter.com/I5B2XL5E0W— bokuweb (@bokuweb17) 2020年2月24日 こツイートに貼られているのは残念ながら、静止画ではなく、動画でありパフォーマンスが悲しいことになっていることを示している。あまりに遅くてプレイ画面まで到達できない。今後これ
WebAssembly Summit というカンファレンスへ参加してきました。午後にあったセッションのまとめです。午前のまとめはこちらへどうぞ。 TD;DR; 午後は応用事例について扱いました。Web アプリケーションでの事例と Web 外での事例が 2 件ずつ紹介され、最後に WebAssembly のパイの拡大する様子を振り返りました。よくあるカンファレンスらしい内容だったように思います。 WebAssembly Music オーディオプログラミングの経験が長いスピーカーによる、ライブコーディング環境のデモと紹介でした。この Web アプリでは、SonicPi のように、パターンや音源をコードとして表現することで、音を使ったライブパフォーマンスができます。 ・音の再生パターンを AssemblyScript(?) として表現できる。 ・音色をコントロールは AssemblyScript
From the time it was announced, WebAssembly caused a huge buzz in the front-end world. The web community readily embraced the idea of taking code written in programming languages other than JavaScript and running that code in the browser. Above all WebAssembly consistently guarantees native speeds much faster than JavaScript. At eBay, we were no different. Our engineers were very excited about thi
Rust + Yew = WebAssembly でかんばんライクなタスク管理アプリを作ってみました。 YewはRustで書かれたフロントエンド向けのフレームワークです。 書かれたコードはWebAssemblyに変換されて、ブラウザ上で実行することができます。プロジェクトのREADMEに「ElmとReactに影響を受けた」と書かれているように、JSX風のHTMLを書けるようなマクロが用意されていて、Rustのコード内にHTMLっぽく表現でビューを書くことができます。 また、Elmアーキテクチャのように、モデルとビューがあり、メッセージによって状態の更新がされるようになっています。 というわけで、以前、このブログでsakiが書いた「Vue.js でかんばんライクなタスク管理アプリを作ってみました。」という記事を参考に、見ためがほとんど同じようなかんばんライクなタスク管理アプリ (タスクボード
1 row in 3 seconds is not impressive. 5 billion rows in 56 seconds is. Let’s see how we went from a to b: BigQuery strengths: Throughput, not latencyIf you are expecting results in less than one second, BigQuery is not the right tool: Usually BigQuery won’t return results in less than one second. This because BigQuery was built for throughput, not for latency. A race car will always be faster than
もう結構前になりますが、Rust で Emscripten を利用することなく WebAssembly の出力ができるようになりました。それにより、Rust を使った WebAssembly の開発が現実的な選択肢としてさらに力を帯びてきました。 自分の勉強で Rust から WebAssembly に出力するプログラムを書いてみたので、その道筋をご紹介することで自分のような Rust 初心者の方々の WebAssembly 開発の助けになればと思い、この記事を投稿しました。 もし記事中に間違い等がありましたら、是非 @tkihira までご連絡ください。 Emscripten との依存関係を切った Rust つい最近まで、WebAssembly の出力は Emscripten を使うことがほとんどでした。Emscripten は、元々は他言語のプログラムを JavaScript に変換す
Update: The Rust compiler now has native support for compilation to WebAssembly without Emscripten! This simplifies the process significantly. I may write an updated guide soon. For now, see this page for a minimal example of Rust and WebAssembly (without Webpack). I’ve been seeing a lot of really cool #wasm (WebAssembly) stuff on Twitter and Hacker News lately, but I didn’t know much about what i
Rust Advent Calendarの13日めです。 イントロダクション Rustを語るときしばしば「RustはWebフロントエンド開発もできる」ということが言われます。もちろん、RustはLLVMフロントエンドであり(LLVMから見てClangっぽく見えるように頑張っている)、emscriptenを使うことで用意にasm.js/wasmにできるわけですが、そこにとどまらずRust自体がオフィシャルにemscriptenバックエンドをサポートしています。更にごく最近、LLVM自体のwasm backendもサポートされました。 さて、では実際RustでWebフロントエンド開発はできるのでしょうか。もちろん、コストの掛かる何らかの特別な処理を行うためにJavascriptからRustの関数を呼び出したり、あるいはこちらの方がされているように、emscriptenのOpenGL imple
Compiling Rust to WebAssembly is still difficult. On macOS, there are weird bugs that require reinstalling LLVM and moving files around. On Linux, the official Emscripten binary in many cases isn’t bundled with the right LLVM, and the fix is to compile from scratch, a multi-hour process. In Travis CI, the standard “solution” is to install an Alpine Linux chroot to get the latest Emscripten. It’s a
WebAssembly をご存知でしょうか?2年前に突然発表された新しい仕様です。まだ登場して間もないため、実際に本格的に利用しているサービスは数えるほどしかありませんが、Twitter 等を見ているとじわりじわりと評判になっており、技術としての勢いを感じます。 一方で、WebAssembly について言及された資料がまだまだ少なかったり、技術のレイヤーが一般的なフロントエンドエンジニアの技術セットとは大きくかけ離れているなどの理由により、WebAssembly について誤解されていることも多々あることを感じました。 そこで今回、あまり技術的に詳細な所まで深入りせず、「専門外の方でもこの程度知っておけば良い」よりちょっと詳しいくらいの内容を目標にして WebAssembly を解説してみたいと思います。 WebAssembly とは WebAssembly(wasmとも呼ばれます)とは、ざ
CMU #51の発表資料です。 webブラウザでC/C++を始めとしたJavaScript以外の言語を使う謎テクノロジーWebAssemblyについて解説します。概要から始まり、Hello worldを通してWebAssembly APIの動作、C/C++ - JavaScript連携の方法について解説します。Read less
We have been experimenting with a couple of approaches to bring Mono to the web using WebAssembly - a technology that can efficiently and safely execute code in web browsers without being limited to Javascript. Running code written in C or C++ inside the browser has been a big motivator, but most major programming languages have plans to target WebAssembly as a platform. WebAssembly has been out f
Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are curr
学習記録 WebAssemblyとは ブラウザ上でクライアントサイドのスクリプトとして効率的に動くバイナリフォーマットです。 現在JavaScriptより軽量で高速な処理を提供するためにベンダー各社で開発されています。 現時点ではDOM, WebAPIへのアクセスとかできません。GCもない。なので現状使いどころは重い処理をWebAssembly部分に投げ出すイメージです。 スレッドとかもFuture Workらしい。 https://github.com/WebAssembly/design/blob/master/FutureFeatures.md#threads もちろんWebを意識しているが、最終的にはWeb以外でも使えるような思想です。一つのバイナリを作ってしまえばどんなところでも動くようなReact Nativeのようなところを目指しています。 https://github.co
WebAssembly is fast. You’ve probably heard this. But what is it that makes WebAssembly fast? In this series, I want to explain to you why WebAssembly is fast. Wait, so what is WebAssembly? WebAssembly is a way of taking code written in programming languages other than JavaScript and running that code in the browser. So when people say that WebAssembly is fast, what they are comparing it to is Java
Too Long; Didn't ReadNew year has just started and with it new resolutions to accomplish. How about learning how to use WebAssembly and get a performance boost? New year has just started and with it new resolutions to accomplish. How about learning how to use WebAssembly and get a performance boost? This article continues a serie of articles that we are writing about performance, go and check “How
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く