はじめに
こんにちは。オプティムの石原、石元、伊藤、菊池、斉藤、中村です!
OPTiMではRubyを採用した複数のプロジェクトを展開しています。
その中でも、2009年にサービスを開始したOPTiM Bizは今年で15周年を迎える長寿プロダクトです。コードベースはrails statsで10万行を超える規模に成長し、多くのユーザー様にご利用いただいています。
技術面では常に最新のスタックを追い求めており、次のリリースでは念願のRails 8.0およびRuby 3.4系への移行を予定しています!
オプティムは今年のRubyKaigi 2025にプラチナスポンサーとして協賛させていただきました! 現地に6名で参加いたしましたので、レポートいたします。
RubyKaigi 2025について
今年のRubyKaigiは愛媛県県民文化会館での開催です。道後温泉や松山城に近い立地で、瀬戸内海の温暖な気候にも恵まれました。
オプティムのブース出展について
今年はスポンサーブースを出展させていただきました!
出展の様子
ブースではRubyのコードを見てライブラリを当てる「Ruby Guessr」を開催していました。
Ruby Guessrは多くの方々にプレーして頂けました!
ノベルティについても幾つかご用意しました!
ブース出展を終えて
RubyKaigiにブースを出展するのは、弊社にとって初めての試みでした。
ブース出展を通して、多くのRubyistと交流させて頂け、非常に刺激的でした。
OPTiMブースにお越しいただいた皆様、ありがとうございました!
気になったセッション
現地参加したメンバーの内、セッションを回っていたメンバーから気になったセッションを一つ選んで感想を書いてもらいました!
石原
Performance Bugs and Low-level Ruby Observability APIsについて
このセッションでは、DatadogのIvo Anjo氏がRubyの低レベルな観測用APIを用いたパフォーマンスバグの発見と解析手法を紹介しました。 具体的には、GVL Instrumentation、TracePoint、 Postponed Job、Frame-profiling、Debug InspectorなどのCRuby内部APIを用いて、Rubyアプリケーションの「どこで何が起きているか」を可視化する方法を解説。 また、自作のlowlevel-toolkitというGemを用いて、オブジェクトの生成やGCタイミング、GVLの取得状況などをトレースし、最終的にはGVLのリリースにフォーカスした新しいプロファイラを構築するデモもありました。
Ruby VMの内部に用意されている低レベルな観測APIの活用方法を具体的に理解でき、大変有意義な内容でした。 特に、lowlevel-toolkitを用いたデモでは、オブジェクトの生成状況やGCのタイミング、GVLの取得・解放といった、通常のアプリケーションコードからは見えにくい情報を可視化できる点に強い関心を持ちました。 また、「Rubyが遅い」のではなく、「何が遅さの原因になっているのか」を把握し、適切に優先順位をつけて対処するという観点は、プロダクション環境におけるトラブルシューティングや性能改善において極めて重要であると再認識しました。
石元
Ruby4.0で実験的に導入されると予告されたNamespace(名前空間)機能についてのセッションである「State of Namespace」が印象的でした。
Rubyに既存のmoduleやclassとは別に、Namespaceという新しい機能の開発が進められています。Namespaceで区切られたコードは別の環境として区別されるため、それぞれでrequireされたgemやメソッドを上書きしても相互に影響を与えない環境となります。例として、Namespaceごとに同一gemの異なるバージョンを使うことも可能と紹介されていました。
RubyKaigi 2024のセッション「Namespace, What and Why」ではNamespaceの概念の説明がありましたが、今回は開発中に発生したバグと解決方法についての解説が行われました。
Namespaceは期待が大きい分、影響範囲も広い機能です。難しいテーマでしたが、スライドの説明はどれもわかりやすく、バグの原因調査と解決へのアプローチは非常に勉強になりました。プロダクトに組み込むことで様々な競合を防ぐことができるので、Namespace機能が正式に実装されたらぜひ導入を検討したいです。
斉藤
私は正徳 巧さんの発表の「Automatically generating types by running tests」が気になりました。
このセッションでは、テストを実行するだけでRBSのコメントを自動生成する、rbs-traceというgemについて解説が行われました。 rbs-traceの使い方から、rbs-trace開発時に遭遇した課題について触れられていました。
rbs-traceによってRBSの型生成が楽になったと思いました。今までは型の自動生成は限定的だったと思うのですが、rbs-traceだとテストを通った箇所は全てRBSのコメントが付与されるので便利だ感じました。
セッション後に、小規模なRubyリポジトリにrbs-traceを導入してみたのですが、引数としてgemのインスタンスを渡した時はそのgemの型まで生成されたので非常に感動しました。
rbs-traceを使いながら、弊社のOPTiM Bizにも徐々に型導入していきたいと思いました。
おわりに
RubyKaigiへの参加を通じて、Rubyの進化する様子を間近で見られただけでなく、コミュニティの温かさを肌で感じることができました!技術的な刺激はもちろん、Rubyistたちの熱意と創造性に触れ、私たちも自分たちのプロダクトをさらに磨いていこうという気持ちを新たにしました。
オプティムにはRubyが好きなメンバーが集まり、日々開発に励んでいます。ご興味をお持ちの方は、ぜひ一度お話しさせていただけませんか?
また、2025年5月14日(水)19:30より、Qiita 様、メドレー 様、OPTiMのRubyKaigi 2025スポンサー3社による、オンライン・オフラインハイブリットでのアフターイベントを共同で開催します!
是非、ご参加ください!