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
58
Ruby de Wasm
Kanazawa.rb meetup #144 のLT大会で発表した Ruby の Wasm 対応の概要、できること、個人的に期待していることの資料
wtnabe
August 24, 2024
Tweet
Share
More Decks by wtnabe
See All by wtnabe
Ruby de Railway Oriented Programming
wtnabe
0
30
Bindanのススメ
wtnabe
0
24
そのオブジェクト、何を保証してくれますか? - GuideRailのススメ -
wtnabe
0
36
Effective Jekyll
wtnabe
0
64
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
31
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
48
Decoupled System with Turbo Frame
wtnabe
1
130
join-kanazawarb-or-7years-passed-since-it-was-borned
wtnabe
0
800
let-me-edit-with-editor
wtnabe
0
340
Other Decks in Programming
See All in Programming
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
470
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
170
Pythonスレッドとは結局何なのか? CPython実装から見るNoGIL時代の変化
curekoshimizu
5
1.6k
Conquering Massive Traffic Spikes in Ruby Applications with Pitchfork
riseshia
0
160
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
230
Model Pollution
hschwentner
1
190
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
2k
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
450
iOSアプリの信頼性を向上させる取り組み/ios-app-improve-reliability
shino8rayu9
0
160
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.7k
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
チームの境界をブチ抜いていけ
tokai235
0
120
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Facilitating Awesome Meetings
lara
56
6.6k
Navigating Team Friction
lara
189
15k
Embracing the Ebb and Flow
colly
88
4.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
Why Our Code Smells
bkeepers
PRO
339
57k
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) | あーありがち