1
/
5

RubyKaigi 2022 参加記 #1 - Ruby meets WebAssembly(Day1 Keynote)

こんにちは!2022 年にWantedly に新卒入社し、DX Squad でエンジニアをしている大森です。

今回は、日本最大の Ruby に関するカンファレンスである RubyKaigi に Wantedly がスポンサードし、いくつかの講演を聴講しています。Wantedly はスポンサーブースを設けていて、Twitterをフォローしてくださった方には技術書や開発に役立つ Engineering Handbook をプレゼントしています!

WantedlyはRubyKaigi2022にプラチナプランとして協賛し、技術書と開発に役立つHandbookをブースでプレゼントしています #rubykaigi | Wantedly, Inc.
こんにちは!Wantedlyで技術イベント企画まわりを担当しています竹内みずき (@amanda__mt)です! いよいよ本日から3日間、 RubyKaigi 2022 が開催されますね!私たちはこの度プラチナスポンサーとして協賛させていただき、三重県現地にて参加する運びとなりました。 直近2年間はほぼすべてのカンファレンスやイベントがオンラインでの開催となり、今回は久しぶりの ...
https://www.wantedly.com/companies/wantedly/post_articles/430335

Wantedly では Ruby が多く使われており、Ruby に関する最新情報を聞けてとても参考になりました。

本記事では、1日目のKeynoteである Ruby meets WebAssembly について紹介させていただきます。

Ruby meets Webassembly

RubyKaigi公式ページ: https://rubykaigi.org/2022/presentations/kateinoigakukun.html#day1
スライド: https://speakerdeck.com/kateinoigakukun/ruby-meets-webassembly

Ruby 3.2 から Webassembly がサポートされます。本発表は、実際に Webassembly サポートの実装を行った Ruby コミッターの方の発表でした。

発表は二部構成になっていました。

  • WebAssembly 上で動く Ruby の紹介
    • Introduction to Ruby on WebAssembly
  • Ruby インタプリタを WebAssembly 上に移植する際の技術的詳細
    • Technical details: How to port the Ruby Interpreter

WebAssembly 上で動く Ruby の紹介

モチベーション

まず、Ruby を WebAssembly 上で動かすことへのモチベーションが語られました。

WebAssembly とは、最近のウェブブラウザ上で動作するスタックベースの仮想マシンのバイナリ命令フォーマットのことです。ブラウザ上でプログラムを実行したい場合、基本的には JavaScript を実行する必要がありました。しかし、WebAssembly を利用することで、Rust や Go といったプログラミング言語から生成したバイナリをネイティブに近い言語で実行する事ができます。

Ruby は開発者フレンドリーに設計されており、プログラムを高速に書くことができます。しかし、Ruby を実行する環境が限られていることや、インストールすること自体が難しいことから、初心者が学ぶ言語としては難しいと言われていました。

そのため、どんな環境でも簡単にRuby を動かしたいというのがモチベーションになったようです。

Ruby on WebAssembly

Ruby のインタプリタ(CRuby) が WebAssembly で実装され、最近のブラウザ上で Ruby のコードが実行できることのデモが行われました。

https://irb-wasm.vercel.app/
上のURLから irb がブラウザ上で動作していることを確認することができます!

ライブデモで行われていたように、https://github.com/DannyBen/victor/tree/master/examples#examples を動作させてみました。


上のスクリーンショットから、svg がブラウザ上にレンダリングされている事がわかります。

このように、手元に環境がなくても GitHub 上の gem の example を実行できることは初学者だけでなく、慣れているユーザにとっても便利なものであることが体験できました。

この後、ブラウザだけでなく edge の WebAssembly 上で Ruby を動作させるデモと、仕組みの説明が行われました。

デモへのリンクはこちらです。
https://ruby-compute-runtime-demo.edgecompute.app/


アクセスするたびに表示される時間が変わります。
このコードは https://www.fastly.com/products/edge-compute 上で実行されているようです。

WebAssembly Support

Ruby3.2 から WebAssembly サポートが行われるようになり、https://github.com/ruby/ruby.wasm リポジトリで npm package と、WebAssembly 向けにコンパイル済の Ruby を配布しているそうです。

Ruby インタプリタを WebAssembly 上に移植する際の技術的詳細

Ruby をブラウザと edge の WebAssembly で動かすデモのあと、Ruby インタプリタを WebAssembly 上に移植する際の困難だった事柄などの説明が行われました。

CRuby を WebAssembly に移植する際に、3つの困難があります。

  • Exception
  • Fiber
  • Conservative GC

これらの困難を一挙に解決するのが Asyncify という技術だそうです。
Asyncify については web.dev に記事があったので後で読んで勉強しようと思っています...!

感想

WebAssembly が昨今取りざたされていますが、具体的にどう便利なのかはつかめずにいました。しかし、今回のデモのように触れる形で示して頂いたおかげで、実際に便利さがわかりました。

WebAssembly や、それに関連する技術について興味がでてきたのでこれからもウォッチしていこうと思います。

また、ブラウザだけでなく edge サーバで動く Ruby についても、なにか面白い用途がありそうだなと思っています。

興味深い発表をありがとうございました!

まだRubyKaigiは始まったばかりです。
Wantedlyから参加したエンジニアが他の記事をどんどん出していきます。そちらも御覧ください↓↓↓

初日に公開した振り返りブログ#2~5

RubyKaigi 2022 参加記 #2 - YJIT 開発チームからの発表 (Day1) | Wantedly Engineer Blog
こんにちは、ソフトウェアエンジニアの千葉です。RubyKaigi の発表を聞いて心が踊ったり、明日の Splatoon 3 発売を控えて心が踊ったりしていて、心が三重とバンカラ地方を行ったり来たりしています。 今回、日本最大の Ruby に関するカンファレンスである RubyKaigi に Wantedly がスポンサードし、いくつかの講演を聴講させていただいています。(Wantedly はスポンサーブースを設けていて、エンジニアが執筆した技術書の配布等を行っていますので、もし興味があれば是非...🙏)
https://www.wantedly.com/companies/wantedly/post_articles/430807
RubyKaigi 2022 参加記 #3 - Types teaches success, what will we do?(Day1) | Wantedly Engineer Blog
こんにちは、Wantedly で Web エンジニアをしている池田です。 弊社は RubyKaigi 2022をスポンサーしており、現地に5名のエンジニアが参加しています。先着でノベルティの Wantedly Handbook を配布しているのでもし興味があったらブースに遊びに行ってみてください。 自分はオンラインでの参加ですが、Types teaches success, what will we do?
https://www.wantedly.com/companies/wantedly/post_articles/430812
RubyKaigi 2022 参加記 #4 - Tools for Providing rich user experience in debugger(Day 1) | Wantedly Engineer Blog
こんにちは!Wantedly でエンジニアをしている新谷です。RubyKaigi に参加すると自分の英語力のなさに痛感します。早くほんやくコンニャクできてほしい... 今回は、日本最大の Ruby に関するカンファレンスである RubyKaigi に Wantedly がスポンサードし、いくつかの講演を聴講しています。Wantedly はスポンサーブースを設けていて、Twitterをフォローしてくださった方には技術書や開発に役立つ Engineering Handbook をプレゼントしています! 本記事
https://www.wantedly.com/companies/wantedly/post_articles/430813
RubyKaigi2022 参加記 #5 - Making *MaNy* threads on Ruby (Day 1) | Wantedly Engineer Blog
こんにちは!Wantedly でプロジェクトマネージャ兼バックエンドエンジニアをしている鴛海です。 今回は、日本最大の Ruby に関するカンファレンスである RubyKaigi に Wantedly がスポンサードし、Wantedly のエンジニアも参加しています。また、Wantedly はスポンサーブースを設けていて、Twitterをフォローしてくださった方には技術書や開発に役立つ Engineering Handbook をプレゼントしているので参加されている方はぜひお立ち寄りください! 久しぶりの
https://www.wantedly.com/companies/wantedly/post_articles/430779
Wantedly, Inc.では一緒に働く仲間を募集しています
5 いいね!
5 いいね!
同じタグの記事
今週のランキング
Wantedly, Inc.からお誘い
この話題に共感したら、メンバーと話してみませんか?