はじめに
こんにちは。ライブコミュニティ事業本部
Voice Pococha
部 バックエンドエンジニアの tatsuhiro.sato です。
桜が咲いたかと思えば半袖の出番があるなど、東京は気候的に忙しない日々が続きますね。
さて、DeNA は今年も RubyKaigi に参加してまいりました。後日振り返り会をオフラインで実施した際、話題になったセッションやブースについて、弊社参加者からの一言を交えてピックアップしてご紹介します。1
RubyKaigi
RubyKaigi は年に一度開催されている Ruby のカンファレンスです。
セッションは英語と日本語がそれぞれ半分ずつ程度で、全世界から参加者が集まる国際的なカンファレンスとなっています。
DeNA は
RubyKaigi 2025
でも プラチナスポンサー として協賛しています。
セッション
Keynote - Ruby Taught Me About Under the Hood
Ruby コミッター Mari Imaizumi (@ima1zumi) さんによる基調講演です。
狼煙から UTF までの文字符号化の歴史を振り返りから始まり、講演者が文字符号化と向き合うきっかけになった IRB の不具合の話から、徐々に Ruby における文字コード実装のディープな解説が進行します。途中で「書記素クラスタ」や「コードポイント」といった文字コードの関連概念を回収しつつ、最終的に Ruby に修正がコミットするまでの過程が語られています。
DeNA メンバーの声
- 文字符号化の歴史という大きなトピックから始まり、 Ruby の実装の複雑で深い部分まで滑らかにつながり、分かりやすさと、面白さ、話の構成の美しさに感動しました。 — takumasa.ochi
- 過去の職場で COBOL によるメインフレーム系開発に携わっていた身としては、RubyKaigi で EBCDIC に再会できると思わず感慨深かったです。 — tomonori.onuki
Make Parsers Compatible Using Automata Learning
Hiroya Fujinami (@makenowjust) さんによる、parser の互換性検証手法の検証についてのセッションです。
Ruby の parser の実装は複数存在します。講演者が「大パーサー時代(Great Parser Era)」と呼称するような状況下ながら、それらの parser どうしの互換性検証については、既存のツールでは網羅的な検証が難しいと言う課題がありました。この課題をオートマトン理論を用いて解決を試みる取り組みが紹介されています。
DeNA メンバーの声
- parser の互換性検証の問題を parser から生成したオートマトンの比較という問題に置き換えることで解決をはかるという切り口が、アカデミアと実世界との連携という観点で非常に興味深いと感じました。 — yusuke.sangenya
Automatically generating types by running tests
Takumi Shotoku (@sinsoku) さんによるセッションです。
テスト (rspec / minitest) を実行することで RBS の型定義を自動生成する仕組みとして
rbs-trace
が紹介されています。大枠には、プロファイリングやデバッグなどの目的で利用される TracePoint
クラスからの情報を、型定義の生成に活用することで実現しているとのことです。
DeNA メンバーの声
- 自分たちのアプリケーションへの適用可能性を強く感じられるトピックには引き込まれます。テストをしっかり実装してさえいれば型生成に繋げられるという点が、現在の開発に組み込みやすそうというところで強く印象に残りました。 — kenta.yamada
Modular Garbage Collectors in Ruby
(スライドは
こちら
)
Ruby コミッターの Peter Zhu さんによるセッションです。異なる GC の実装を Ruby に導入する余地を作るため、Ruby の GC の実装をモジュール化・分離可能にする取り組みが紹介されていました。
DeNA メンバーの声
- 今回の RubyKaigi ではいくつかの GC 関連のセッションがあり2、このセッションが最終日の最後でした。最終日にかけて GC への関心が高まったところで、 Ruby の GC、他の GC アルゴリズムの紹介といったトピックが整理のうえ解説されたので、関心を掴まれました。— tatsuhiro.sato
- 自分たちの扱うサービスの性質によって GC アルゴリズムに最適化の余地ができうる点に期待感が持てました。 — yusuke.sangenya
その他
他にもさまざまな講演がエンジニア間で話題に上がりました。講演内容の詳細は割愛しますが、コメントをいくつか抜粋してご紹介します。
-
The Evolution of the CRuby Build System
計測できる土台を整え、構成をシンプルに整理して、速度改善するという流れが美しく、見習いたいと思いました。 — takumasa.ochi
-
Speeding up Class#new
Ruby のプライマリーな実装である Class#new 自体を高速化するという視座が、アプリレイヤーの開発者としては斬新で印象に残りました。 — wataru.sasaki
ブース
mruby/c
mruby/c さんでは、組み込み開発に使える Ruby 実装、mruby/c についての展示が行われていました。ブースでは実際に mruby/c を使った製品のデモを見ることができたようです。
DeNA メンバーの声
- ruby コードを修正すると hot reload のような形で (ハードウェアの再起動ナシに) 即反映、ハードウェアの動作が即変更される…というのが目の前で実演されたのが、とても面白かったです。 — yusuke.sangenya
Cookpad
Cookpad さんでは、現在のサービスのアーキテクチャ図のパネル展示と、くじ引きを使ったサービス体験が楽しめました。
(ブース写真が手元に無かったため割愛いたします…)
DeNA メンバーの声
- クジを引くとある国のレシピ見せてもらえるという企画が、直近のグローバルサービス統合という出来事と、運用されている実際のサービスのデモにうまく絡められいて印象深かったです。 — kenta.yamada
- レシピ検索サービスのグローバルサービス統合という hot なトピックと、それに関連したアーキテクチャ前後比較のシンプルなパネル展示があったので、技術的な会話がしやすかったです。 — tatsuhiro.sato
番外編: SmartHR
SmartHR さんはブース出展はありませんでしたが、会場にいる社員さんからランダムにキーホルダーを貰えるというユニークな企画を実施されていました。
企画設計に感動したメンバーから興奮気味の感想が挙がったので、ご紹介します。
DeNA メンバーの声
- SmartHR さんはブースは無いのに接点が作れる仕組みが凄かったです!社員の方がランダムにキーホルダーを持っていることをビラ等で告知しており、キーホルダー収集を口実にさまざまな社員さんと会話するきっかけが作れるようになっていました。 — kenta.yamada
おまけ
セッション・ブースの他に、アフターイベントなどの懇親企画では、社内外のエンジニアと広くお話しする機会が作れました。
懇親会については、参加者から印象深いエピソードをいただきました。
カンファレンスの様子の写真と併せてご査収ください。
- 懇親会では Ruby コミッターの方とお話しする機会があり、「Ruby コミッターになるにはどうすればよいか?」という質問をぶつけたところ、「やはり C 言語は必要」等の具体的なアドバイスをいただきました。
RubyKaigi の会場では Matz さんから「舞台 (Ruby コミッター) までの距離は遠くない」という旨のお話がありましたが、その距離を縮めるための具体的なステップが見えてすごく嬉しくなりました。
— daiki.kato
部分集合写真
Official Party
折角の松山市、折角の愛媛県、ということで、ちょっとした観光も楽しめました。
道後温泉 (早起き was required
)
しまなみ海道
おわりに
今年の RubyKaigi も、例にも漏れず大変な情報量でした。セッションであり、その場に居合わせた人との会話であり、とにかく情報の流通量が多い。仕事とは違う刺激に溢れた 3 日間だったと振り返ります。
いちプログラミング言語開発の中心地のひとつが、私自身の根ざした日本という地域にあること、それがある部分で他言語にはない強みになりうることを、改めて印象付けられたイベントでした。
使い手として、あるいは作り手として、コントリビュートの方法は 1 通りではなさそうです。 少なくとも、Ruby を使って何かを作ることそのものが、壇上の皆さんに対する一つのエールになり得るでしょう。
来年の RubyKaigi まであと 1 年、日々 Ruby を使う中で、自分にできる関わり方を探し続けたいと思います。次は北の大地でお会いしましょう。
-
生成 AI で幾らでも講演内容の文字起こしや仮想的な感想が作れてしまう時代ですから、「具体的な個人のコンテクストに依存した感想を、具体的な個人がわかる形で世に出す」という構成を試みています。 ↩︎
-
この記事では扱えませんでしたが、GC に関連するセッションとしては他に Performance Bugs and Low-level Ruby Observability APIs , Toward Ractor local GC がありました。 ↩︎
最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。