Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby de Wasm
Search
wtnabe
August 24, 2024
Programming
0
5
Ruby de Wasm
Kanazawa.rb meetup #144 のLT大会で発表した Ruby の Wasm 対応の概要、できること、個人的に期待していることの資料
wtnabe
August 24, 2024
Tweet
Share
More Decks by wtnabe
See All by wtnabe
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
9
Decoupled System with Turbo Frame
wtnabe
1
59
join-kanazawarb-or-7years-passed-since-it-was-borned
wtnabe
0
710
let-me-edit-with-editor
wtnabe
0
270
google-photos-and-storage-and-rclone
wtnabe
0
360
one case of how to begin vuejs
wtnabe
2
400
Kanazawa.rb meetup #56 Coderetreat Intro
wtnabe
0
390
lightweight authenticity of microservices
wtnabe
0
400
Automate WordPress deployment with WordMove
wtnabe
1
440
Other Decks in Programming
See All in Programming
AWS Lambda Web Adapterを活用する新しいサーバーレスの実装パターン
tmokmss
6
5.6k
Frontend Magic mit CSS Houdini
joergneumann
0
420
DevFest Android in Korea 2024 - 안드로이드의 문단속 : 앱을 지키는 암호화 이야기
mdb1217
1
120
2024-10-02 dev2next - Application Observability like you've never heard before
jonatan_ivanov
0
160
선언형 UI를 학습할 때 알아둬야하는 키워드들
l2hyunwoo
0
110
Flutterアプリを生成AIで生成する勘所
rizumita
0
250
Subclassing, Composition, Python, and You
hynek
3
110
データサイエンスのフルサイクル開発を実現する機械学習パイプライン
xcnkx
2
470
個人開発で使ってるやつを紹介する回
yohfee
1
670
Cloud Adoption Framework にみる組織とクラウド導入戦略
tomokusaba
2
300
perl for shell, awk and sed programmers
mackee
0
210
[KR] Server Driven Compose With Firebase
skydoves
2
150
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
A Philosophy of Restraint
colly
202
16k
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
The Pragmatic Product Professional
lauravandoore
31
6.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
25
650
VelocityConf: Rendering Performance Case Studies
addyosmani
324
23k
Debugging Ruby Performance
tmm1
73
12k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
Faster Mobile Websites
deanohume
304
30k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
What's new in Ruby 2.0
geeforr
341
31k
Transcript
Ruby de Wasm Kanazawa.rb meetup #144 2024-08-24 (Sat) at ITBP武蔵
@wtnabe
Ruby 3.2からWASM標準対応 って知ってた? Ruby 3.2.0 Released GitHub - ruby/ruby.wasm: ruby.wasm
is a collection of WebAssembly ports of the CRuby.
TryRuby playground ブラウザでRubyが動くやつ Opal と Wasm の Ruby が動く あの_Whyたんが起源のサイト
ruby.wasmの特徴 RubyでWasmプログラムを書ける RubyがWasmプログラムとして動く RubyがWASI環境で動く RubyがJavaScript環境で動く
ブラウザでただ動かす場合 npmからwasm版rubyをロードすればおk <html> <script src="https://cdn.jsdelivr.net/npm/@ruby/
[email protected]
.. <script type="text/ruby"> require "js" puts
RUBY_VERSION # (Printed to the Web browser console) JS.global[:document].write "Hello, world!" </script> </html>
めっちゃ簡単
でも… JSで書けばよくない?
じゃあ何が嬉しいのか?
ruby.wasmの特長 RubyでWasmプログラムを書ける RubyがWasmプログラムとして動く RubyがWASI環境で動く RubyがJavaScript環境で動く
Wasm/WASIについて WasmはVMのバイナリフォーマット WASIはWasmアプリケーションのAPI ( ABI )
RubyそのものがWasm/WASI対応する ということは コードは何も変えずに自分の書いたRubyコードがWASI環境で動く Ruby本体とスクリプトを一体にしてportableに! コンテナ(dockerとか)のWASI対応も進んでいる CI/CDでもいきなり動く可能性
うまい話ばかりではない (当然)既存のコードが全部そのまま動くわけではない Wasmからネイティブに変換が走って起動が遅くなるケースも 特にRubyの場合、Rubyが起動してアプリが動作可能な状態になる までのスピンアップが重い(その前の変換が走るとさらに重い)
最近のWasmのトピック より高速なRubyのWebAssembly実装「Ruvy」 、Shopifyがオープン ソースで公開。Ruby仮想マシンとRubyアプリを組み合わせてビル ド - Publickey Google、Google Sheetsの計算エンジンをWebAssemblyに最適化 し、2倍の性能を実現したと発表
- Publickey Wasm版PostgreSQLに生成AIを組み合わせた「Postgres.new」無料 公開。自然言語でクエリ、エンベディングの作成、CSVからテーブ ル自動生成など - Publickey
Rubyに限らず Wasmで何ができるか、という動きは とてもアクティブで面白い。
個人的に期待していること JSON, YAML, Date, Timeなどが扱いやすい高級sh scriptとしての RubyのコードをWasm moduleとして動かしたい jqとかyqとかムツカシイ WASIネイティブコンテナサービスで動くならCI/CDでちょっとし
た加工のためにDockerfileやawkで工夫したりしなくて済む Linuxまるごとコンテナじゃないので準備もpullも動作も軽い
結局WASIと ruby.wasmの進歩任せになるのでは? WASI/Proposals.md at main · WebAssembly/WASI RubyGems on ruby.wasm
- Speaker Deck
ぐぬぬ
参考 Wasmで少しだけ手軽にRubyとRubyスクリプトを持ち運ぶ (2024- 05-25) | あーありがち