こんにちは、ヘイ株式会社(2022年10月1日から STORES 株式会社と社名変更します*1)エンジニアの id:hogelog です。
Rubyist のみなさん、9月8日(木)〜9月10日(土)に開催された RubyKaigi 2022 は楽しみましたか? 私はおおいに楽しみました。今回多数の会社メンバーとともに RubyKaigi に参加し、熱も冷めやらぬ 9月12日(月)にふりかえり RubyKaigi 2022 というイベントを開催しました。
ふりかえりRubyKaigi 2022 - connpass
STORES は RubyKaigi 2022 のプラチナスポンサーです。
ヘイ株式会社(2022年10月1日から STORES 株式会社と社名変更します)は RubyKaigi 2022 のプラチナスポンサーです。 https://rubykaigi.org/2022/sponsors/
今回ヘイからは10名のエンジニアが現地参加し、オンラインで6名のエンジニアが参加しました。
スポンサーブースは応募多数で抽選になり、惜しくも出展できませんでしたがスポンサーボード、幕間 CM などは見ていただけたでしょうか。
#rubykaigi これはスポンサーボードと現地参加したヘイ社エンジニア達の落書き pic.twitter.com/FJNOBICG24
— hogelog(東京) (@hogelog) September 10, 2022
スポンサーブースを設置できなかったせめてものアピールにと現地参加社員は CTO 藤村がホストをする論より動くもの.fm のTシャツを来ていきました。
久しぶりの #rubykaigi 物理開催なので記念写真というやつを @yukihiro_matz にお願いして撮らせてもらった図(撮影時のみマスクを略) pic.twitter.com/nLIpohcq0I
— hogelog(東京) (@hogelog) September 9, 2022
会社アピールはささやかなデザインなので「あのシャツ来てる人達はなんなんだ?」と思った方もいたかもしれませんが、はい、私達でした。
Kaigi 中の社員の様子
RubyKaigi において最新の技術動向をキャッチアップする、技術的チャレンジをしている人達から刺激を受ける、Rubyist 達と交流する、会社を Rubyist にアピールする、さまざまな目的があって社員が参加し、会社でスポンサーしています。ですがそれと RubyKaigi を楽しむことはなにも矛盾しません。
久しぶりの物理開催 RubyKaigi ということもあり、参加する社員エンジニアもとても楽しんでいました。ほんの一部、各社員のツイートで紹介します。
はじまった #rubykaigi pic.twitter.com/IGXcmbYwg8
— 蜘蛛糸まな🕸️ / HolyGrail (@HolyGrail) September 7, 2022
地方を味わうというのもいかにも RubyKaigi
#rubykaigi 初日の感想: コンピューターとプログラミングやばい面白すぎる
— 藤村 (@ffu_) September 8, 2022
CTO というポジションの人がコンピューターとプログラミングの面白さを強く実感するのも会社にとって非常に大事ですね
超かわいい #rubykaigi pic.twitter.com/5Iq9sqHldU
— 蜘蛛糸まな🕸️ / HolyGrail (@HolyGrail) September 10, 2022
RubyKaigi はノベルティやおやつなどかわいいものが多くて素敵ですね
RubyKaigi勢のTwitter見てうらやましい〜ってなるのを無限に繰り返した3日間だった
— morihirok (@_morihirok) September 10, 2022
育休中(育児お疲れさまです!)のエンジニアもとてもうらやましがっていました
— tyabe (@tyabe) September 11, 2022
RubyKaigi 名物、川を堪能
発表のふりかえり
さてもちろん飲み食いと川だけが RubyKaigi ではありません。メインコンテンツは発表ですね。ここでは社内でも反響の大きかったり評判が良かった発表の ごく一部を 紹介させていただきます。
Ruby meets WebAssembly
Ruby meets WebAssembly - RubyKaigi 2022
Ruby meets WebAssembly - Speaker Deck
@kateinoigakukun さんによる Ruby を WebAssembly に移植したという発表だったのですが、すごかったです。 https://irb-wasm.vercel.app/ で実際に IRB を試せるのですが、まったく違和感がない IRB がブラウザの上で動いています。 一方でその移植のために欠けていたものはいくつもあったがこのような方法で解決しました、といくつもの偉業を淡々と語る kateinoigakukun さんの凄みを強く感じました。
Making *MaNy* threads on Ruby
Making *MaNy* threads on Ruby - RubyKaigi 2022
https://www.atdot.net/~ko1/activities/2022_rubykaigi2022.pdf
@ko1 さんによる、Ruby で > 100k
スレッドに耐えうるスレッド設計を目指すという話でした。
CRuby は 1.8 までは Ruby レイヤーで N 個のスレッドが OS レイヤーでは 1個のスレッドで動く 1:N モデルのスレッドでした。Ruby 1.9 からは Ruby レイヤーで 1 個のスレッドが OS レイヤーでも 1個のスレッドとなる 1:1 モデルに移行しました。そして *MaNy* Project とはここからさらに進み、Ruby レイヤーでは M 個に見えるスレッドが OS レイヤーでは N 個のスレッドの上でうまく動き、Ruby レベルではスレッドをいくらでも気軽に作成できるようにするという話でした。
Towards Ruby 4 JIT
Towards Ruby 4 JIT - RubyKaigi 2022
Towards Ruby 4 JIT / RubyKaigi 2022 - Speaker Deck
@k0kubun さんによる現在の CRuby に含まれている YJIT と MJIT の解説、そして MJIT の今後についてのトークでした。 MJIT の実装言語が Ruby になり、誰でも(誰でも?)自分の JIT を開発できるようになる BYOJ (Bring Your Own JIT) が始まっていくという話はとてもワクワクさせられました。今後の高速化の展望についても「Ruby にはまだこんなに最適化の余地があり、まだまだ速くできる」という非常にポジティブな意思を感じました。
TRICK 2022 (Returns)
TRICK 2022 (Returns) - RubyKaigi 2022
正直理解が及ばず解説は難しいのですが、とにかく楽しいコンテンツでした。 発表のアーカイブが公開されたらぜひ皆さんで見て楽しんでほしいです。
Matz Keynote
とても Matz らしい、そんなもの開発しても意味がないと言われながらもただ作りたくて Ruby を開発してきたこと、一方で現在 Ruby が生み出している価値などについて話すキーノートでした。
Packet analysis with mruby on Wireshark - dRuby as example
Packet analysis with mruby on Wireshark - dRuby as example - RubyKaigi 2022
Packet analysis with mruby on Wireshark - dRuby as example - Speaker Deck
@shioimm さんによる、ネットワークに興味がありWireshark を使い込みたくなったので mruby を組み込んで dRuby の通信を解析してみるという話でした。なぜそれをしたのか? に対し「してみたかったから」という、Matz のキーノートでもあった「ただそれをしたかったから」というモチベーションを感じる、RubyKaigi らしい発表でした。
Ruby Committers vs The World
Ruby Committers vs The World - RubyKaigi 2022
毎度恒例の壇上の Ruby コミッターが Ruby についてあれこれ話し合う時間です。今年は感染症対策の都合上マイクまわしができないことからワイガヤ控えめの進行でしたが、it 導入への議論、@jeremyevans によるバグをゼロにする発言など、見どころ目白押しでした。
Fixing Assignment Evaluation Order
Fixing Assignment Evaluation Order - RubyKaigi 2022
Fixing Assignment Evaluation Order
@jeremyevans さんによる、定数の多重代入時の CRuby の挙動のバグ修正をひたすら丁寧に解説するという発表です。自分は別セッションを聞いていたので評判を聞いて資料を眺めた程度なのですが、とにかく1つのバグとその修正について丁寧に解説している様子を感じ、vs The World でされた「CRuby のバグをゼロにする」発言は伊達じゃないのを強く感じました。 *2
String Meets Encoding
String Meets Encoding - RubyKaigi 2022
String meets Encoding - Speaker Deck
@ima1zumi さんによる CSV.read を高速化したという話だったのですが、その高速化のために実施したプロファイリングの話などが非常に丁寧で、Ruby プログラムと CRuby 高速化のとても良い理解に繋がる内容だと感じました。仮に文字列やエンコーディングに興味がなかったとしても高速化に興味があるなら聞いて損はしない内容です。
まとめ
久しぶりの物理開催の RubyKaigi ということで参加したヘイ株式会社(2022年10月1日から STORES 株式会社と社名変更します)のエンジニアもおおいに楽しんでいましたし、みなさんの発表の内容も非常に RubyKaigi らしく楽しいものでした。 また、会場で多くの人と出会い色々な立ち話をして交流を深めたり、技術について議論するなどは久しくしていなかったコミュニケーションであり、オンラインカンファレンスでは得難い刺激と楽しさが大きなカンファレンスでした。
RubyKaigi 2023: May 11-13, 2023; See you in Matsumoto! #rubykaigi
— RubyKaigi (@rubykaigi) September 10, 2022
来年は松本でお会いしましょう!
ふりかえり RubyKaigi 2022
と、RubyKaigi をおおいに楽しんだ直後の 9月12日(月)にふりかえり RubyKaigi 2022 というイベントを実施させていただきました。このイベントは実のところしっかり企画した上で開催したものではありませんでした。
こんな勢いで企画開催したふりかえりイベントでしたが、スピーカーやコミッター含む多くの方に参加していただき、とても楽しく RubyKaigi 2022 を振り返るイベントになりました。突然の無茶振りにも関わらず Zoom でパネリストとして話していただいた @shioimm @ima1zumi @sorah には特に深く感謝いたします。
次回予告: 深掘りRubyKaigi 2022 with ko1 & kateinoigakukun
正直 RubyKaigi の各発表はまだあまり理解できていないところも多く、より深く理解するためにはもう少し詳しくお話を聞いてみたいと感じるものもとても多かったです。
kateinoigakukun さんの WebAssembly の話は単に「ブラウザで Ruby が動くようになったね」では留まらない可能性も感じますし、kateinoigakukun さんは実際に WebAssemly をクロスプラットフォーム言語として移植に利用している GoodNotes でも働いていたり、聞いてみたいことはたくさんあります。
ko1 さんの *MaNy* Project の話はシンプルにいかにも Computer Science 王道の話で CRuby をどう変えていくかという話でワクワクしますし、実のところあまりちゃんと理解できていないので深く話を聞いてみたいです。
なんと、そんなあなたにうってつけのイベントがあります。
RubyKaigi でも登壇した Ruby コミッター kateinoigakukun さんと ko1 さんをゲストとしてお招きし、CTOの藤村や Ruby コミッターの卜部、hogelog がさらに深堀りすることで RubyKaigi 2022 セッションを180% 味わい尽くすイベントが 2022年10月5日 (水) 19:00 〜 21:00 に開催されます。
深堀りするためにしっかり理解しなければ、と今から緊張感高まっていますが、それと同時にとても楽しみなイベントです。kateinoigakukun さん、ko1 さんのトーク内容をさらに深く理解したい方、CRuby 内部の話が三度の飯より好きな方などにオススメできるイベントになっているのではないでしょうか。ぜひ皆さまのご応募お待ちしております。
*1:https://www.st.inc/news/2022-08-31-hey-to-stores
*2:jeremyevans さんは自分がオーナーとなっているライブラリなどでは本当に Open Issue を放置しない、徹底した運用をされており、いつ見ても尊敬します https://github.com/jeremyevans