地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

RubyKaigiへ行ってきた

愛媛県松山市で開催された RubyKaigi 2025 に参加してきました。その参加レポートです。

はじめてのRubyKaigi

インフラやSRE、Go関連のイベントにはこれまで何度か参加してきましたが、言語そのものにフォーカスしたカンファレンスは初めてでした。「自分には難しすぎるのでは…」という気持ちがあり、これまで参加するには至っていませんでした。

ただ、今回は会社としてブースを出展していたり、イベント企画や登壇者がいたりと、何かと関わりが深かったこともあり、せっかくの機会なので思い切って参加してみることに。Rubyコミュニティは何も行ったことがないというのもあって若干の不安を感じつつも、未知の世界に飛び込むつもりで参加してみました。結果としては知らないことが多すぎてもっと早く触れておくべきだったなと思いましたw

セッション

結論から言うと、ナニモワカラン時間がかなりありましたw

Ruby自体最近あまり書いてない&最新のアップデートもほぼおっていなくて処理系の話や言語アップデートの詳細などは、セッションを聞いていても「なるほど、わからん」となる場面が多かったです。ちょうど新卒1年目の頃、Javaのイベント「JJUG」に参加したときのことを思い出しました。周囲の発表についていけず、一日中「ナンモワカラン…」となったあの頃を思い出しました。(今もJava書いてないし何もワカラン気がするw)

とはいえ何も持ち帰れていないわけでもないので聞いたセッションの感想とかを書きます。

Ruby Taught Me About Encoding Under the Hood

rubykaigi.org

なぜ文字コードにハマったのかだったり文字コードの面白ポイント。Rubyコミッターになるまでについて話されていた。特定の技術分野に浸かってRubyに貢献していくというのはとてもかっこよく見習っていきたいと思いました。

ZJIT: Building a Next Generation Ruby JIT

rubykaigi.org

JIT自体は「Rubyのようなインタプリタ言語で書かれたプログラムを実行時にネイティブコードに変換し、パフォーマンスを向上させる」みたいな教科書的な理解しかしていませんでした。そういった技術でも実装方法には複数存在しそれぞれにメリット/デメリットがあります。その中でもこのセッションではZJITを実装しどういったメリットがあるのかについて話されていました。話されたいた内容のメモは以下です。

  • 目的
    • YJITの次世代版としてより大規模・複雑なコードに対応できるJITを目指して開発
    • YJITはインラインキャッシュベースで高速だが、複雑な制御構造には弱点があるため、それを補完する
  • アーキテクチャ
    • LLVMを使ったバックエンドを想定(ネイティブコード生成の柔軟性が高い)
    • 実行時最適化やプロファイリングベースの高度な最適化が可能になる予定

次世代Ruby JITのプロトタイプで20年後にも耐えれる設計でRuby 4.0では実験的に取り込まれるだろうという話をされていました。

github.com

こちら(ShopifyのYJITチームによって開発された次世代JITコンパイラであるZJITをRubyの公式に取り入れるプロポーザル)に導入背景とかは詳しく書かれていました。発表でもあったがYJITでは開発者がShopifyメンバーだけだったのはYJITが複雑すぎのが要因であった可能性もあり開発者を広く増やしていくためにZJITはより教科書的なアプローチで実装されているということでした。

bugs.ruby-lang.org

LT

note.com

こういう話が大好きなので公開されて嬉しいです。

(4) LTは「失敗しても大丈夫」という挑戦者のために生まれた

自分の最初の登壇もこれで今でこそそこまで緊張はしなくなっては来ましたが最初の1回目は死ぬほど緊張しました。5分で強制終了されるというのは失敗しても5分くらいなら聞いてる人もすぐ忘れるだろうと思うと登壇のハードルを下げるのにはとても有効だなと思っています。

ブース対応

会社でブースを出すみたいなことは経験がなかった(あった気もするが担当にはならなかった)のでせっかくならということで手を挙げてブース担当もやってみました。入社して半年くらい経つしインフラは完全に理解してると思っているのでいざブースの前に立ってアーキテクチャとかサービスの説明をするとそれっぽくは喋れますが鋭い質問とかされた時に返せないみたいなのが何回かありました。返せなかった質問はその日中に他のメンバーに聞いて喋れるようにしていくという感じでやっていたのですが普段触らない分野とかだと雰囲気しか分かってないといういのがあってこの機会に改めて知れたのがよかったです。

コンテンツとしては実際にIVRyで受けている電話の数をリアルタイムで出すというやつの裏側を実装していました。

こういうのもやってみたかったのでやれて嬉しい。

あとは酒豪伝説でIVRyと書くということを担当していました。

#rubymusicmixin

同僚が出るというので行ってみました。大音量で音楽聴くみたいなイベントに行ったのは10年ぶりくらいでそこまで得意ではなかったのですが内容がカッコ良すぎて最高でした。あまりにも良すぎて他の人が撮っていた動画とかを何回も見ながら帰っています。来年も行きたいです。

来年は函館

来年の RubyKaigi は函館で開催されるそうです。

今回は知識的には歯が立たない部分も多かったですが、こうした世界に踏み込めたのは大きな経験でした。来年はもっとセッションを楽しめるように、趣味レベルでも言語処理系のアップデートや Ruby の動向を追ってみようかなと思っています。とりあえず、コンパイラの教科書あたりから読み始めてみようかなと。

意外と遠い松山

仙台から向かうのですが行きは伊丹経由、帰りは名古屋経由になりました。直行便があるところが羨ましいですw

このブログは名古屋で乗り継ぎが2時間くらいあるので書いています。名古屋城でも見ようかなと思ったらセントレアからだと死ぬほど遠いんですね...

まとめ

Ruby書きます。とりあえずRuby 3.5.0_preview1をビルドしてZJITを有効化してみます。