2025年4月16日〜18日にかけて愛媛県松山市で開催された RubyKaigi 2025 に参加しました。
もちろん存在は以前から知っていたものの、平日の遠方開催ということもあり、これまでなかなか参加のタイミングをつかめずにいました。ですが、いろいろ縁あって今年初参加を果たすことができました!
RubyKaigi参加前の準備から当日の様子、印象に残ったセッションなどを振り返って記録に残しておこうと思います。
当日を迎えるまで
まったくの初心者状態からのスタートだったので、まずは事前勉強会に参加し、そこで得た知識をもとに予習を進めました。
参加したのは、SmartHR主催の RubyKaigi 2025事前勉強会 と、STORES主催の STORES.rb RubyKaigi 2025 直前スペシャル の2つです。
セッション中に「これ聞いたことある!」と感じられる場面があり、予習の成果を実感できて嬉しく思いました。ただ、やはり内容の理解には至らないことが多く、「内容が難しいのが普通」と事前に聞いていたとおりでした。
一方で、知識面以外にも勉強会に参加した意義は大きく、RubyKaigiの楽しみ方やスピーカーの方々の思いに触れられたり、知り合いが増えたりと、不安が軽減されてワクワク感が高まった状態で当日を迎えることができました。
印象に残ったセッション
Ruby Taught Me About Encoding Under the Hood
@ima1zumi さんによるKeynoteで、文字コードに関するお話でした。初日の一発目ということもあり、とても印象に残っています。
内容としては、Rubyの文字エンコーディングの仕組みを「内部的にどう動いているのか」という観点から丁寧に解説したものでした。普段何気なく使っている文字列やファイル入出力の裏側で、Rubyがどのようにエンコーディングを扱っているかを学ぶことができました。
印象に残っている点としては、今日に至るまでのストーリーが興味深かったことです。 最初から文字コードに関心があったわけではなく、偶然取り組んだタスクをきっかけに徐々に深掘りしていったという経緯が紹介されていて、探究心にとても刺激を受けました。
Dissecting and Reconstructing Ruby Syntactic Structures
構文解析の基礎から丁寧に説明され、勉強になりました。何度も耳にした parse.y の課題を、lrama を使ってどのように解決していくかが紹介されました。
抽象化によって構造がシンプルになる点は、日々のプロダクト開発にも通じる部分があり、とても共感しました。 この発表を通じて、Rubyの書きやすさや柔軟性は、パーサーの開発者の方々の努力の賜物であることがよく分かりました。
Speeding up Class#new
よく使う Class#new を高速化する取り組みの紹介でした。Ruby → C → Ruby と言語をまたぐ変換処理がボトルネックであり、引数の数によっては最大30%も遅くなるとのこと。 それに対して、inline cache などの最適化技術を用いることで最大5倍の高速化が実現されたという話には驚きました。
Class#newを使う機会は多くあるのでこのパフォーマンス改善がRubyにもたらす影響は大きいと感じましたし、これだけ使われているメソッドにもまだ改善の余地があったことが印象的でした。
Ruby Committers and the World
発表形式のセッションではなく、Rubyコミッターが壇上でRubyの現在の課題や今後についてディスカッション形式で語り合う企画でした。 「Static Barrier」や「Namespace」についてや「Ruby4.0では、どんな機能をdeprecateしたいか」「後方互換性を気にしないならどんな機能を変更したい?」など、幅広いテーマでディスカッションが行われていました。
特に後方互換性のテーマでは、気にしなくていいという前提がある中でも、後方互換性について触れられるシーンがあり、Rubyコミッターが日頃から互換性を如何に考えているかが印象に残りました。
Making TCPSocket.new "Happy"!
RubyのTCPSocket.newに「Happy Eyeballs」アルゴリズム(RFC 8305)を実装した経緯とその技術的課題、成果について詳しく解説されました。Happy Eyeballsは、 IPv6とIPv4の両方が利用可能な環境で、どちらか一方の接続が遅い場合でも、ユーザー体験を損なわずに素早く接続を確立するためのアルゴリズムです。
普段何も意識しないで使っているTCPの裏側の仕組みを知れて勉強になりましたし、特に印象に残っているのは、デバッグの過程です。時系列に沿って発生した課題と解決に至った経緯を聞いたときに、普段自分がやっていることと大きく変わらず、「コミッターレベルの開発者でも地道にバグを潰していくんだ」ということが印象的でした。
On-the-fly Suggestions of Rewriting Method Deprecations
Rubyやそのライブラリで発生するDeprecation(メソッドの非推奨)を、より効率的かつ自動的に解決するためのアプローチを提案した内容でした。 日々の業務の中で非推奨のメソッドを修正する手間を感じることは少なくなく、仕方ないものだと受け入れていたのですが、それをより簡単にできる仕組みに感激しました。
仕組みとしては、ライブラリの作者が非推奨メソッドの変換ルールを定義するだけで、利用者側は実行時に自動でパッチを受け取れるようなものでした。
より広く普及するためにはまだ課題(このライブラリ自体が3rdパーティのライブラリに依存している点や組み込みのGemではないので各ライブラリ開発者がこのGemをインストールする必要がある点など)があるとのことでしたが、普及すればライブラリの作者と利用者双方よしだと思うので、今後が楽しみです。
Matz Keynote
Matzによるクロージングキーノートは、「AI時代のプログラミング言語」がテーマでした。
「人間が主役であるべき」という言葉が印象的で、AIを使って人間がより楽しくプログラミングできるようにする、という姿勢に強く共感しました。
他にも「コミュニティの力がRubyの力」という言葉が印象的で、Rubyはコミッターだけでなくユーザー全体で盛り上げていく文化があると再認識できましたし、Rubykaigiに参加したことでそれを肌で感じられたことは大きな収穫であると感じました。
技術や効率だけでなく「楽しさ」を大切にするRubyの精神が、多くの人に支持され続ける理由だと感じました。
Rubyistとの交流
参加前は知り合いがほとんどおらず不安でしたが、ブースや公式のパーティ、各社のドリンクアップなど、交流の機会が豊富に用意されており、たくさんのRubyistと話すことができました。Rubyに関する話題はもちろん、さまざまな情報交換を通してモチベーションが高まりました。
また、スピーカーやRubyコミッターの方と直接話せる機会も多く、感激の連続でした。今の自分では深いディスカッションは難しいと感じたので、次回の参加までにもっと学び、成長して臨みたいと思います。
ちなみに、Official PartyではMatzと写真も撮らせていただきました。嬉しかったな〜
おわりに
RubyKaigiの熱量と、Rubyistの温かさを感じた3日間でした。
セッションの多くは難しくて「何もわからない」状態でしたが、初日に比べると3日目には少し理解できることが増えていたように思います。この機会をきっかけに学習を継続し、次回参加時にはさらに深く楽しめるようにしたいです。
また、Rubyを支える方々をこれまで以上に身近に感じることができ、大きな刺激を受けました。 これからも「わからない」を楽しみながら、一歩ずつRubyとの距離を縮めていきたいです!