RubyKaigi 2024 参加レポート

こんにちは、YOUTRUST Webエンジニアの寺井(YOUTRUST/X)です。

2024年5月15日から5月17日に開催されたRubyKaigi 2024に参加してきたので、今回はその記録を記事にしたいと思います。

1. はじめに

私はオフライン開催のRubyKaigiには2022年から参加していて、今回が3回目の参加でした。

2022年は運営Helper(当時の記事)、2023年はSponsor(当時の記事)として参加していましたが、今年は一般のAttendeeとしての参加でした。

今回は会社から費用の一部を負担してもらい、業務として参加させてもらっています。

2. セッション

聴講したセッションの中からいくつか抜粋して書きます!

2-1. Unlocking Potential of Property Based Testing with Ractor

speakerdeck.com

SmartBank@ohbaryeさんによる、Ractorを用いたProperty Based Testingについての発表です。

私たちが普段RSpecを書くときに用いているExample Based Testingとは異なり、大量のランダムな値を生成してテストケースとするProperty Based Testingにおいて、デメリットの1つである実行時間の長さをRactorによって解消する試みに関する発表でした。

最初に聞いたときは、Property Based Testingの場合、Example Based Testingが持っている仕様書の役割を果たせない点がつらいのではないかと感じたのですが、発表の中ではすべてを置き換えることが正しいわけではなく使い分けが大切と説明されていました。

また、発表ではInteger型のデータを例に説明されていたのですが、ランダムなデータを生成する仕組みを作ってしまえばプリミティブな値だけではなくActiveRecordのインスタンスでもテスト可能なので、場合によっては十分有用性がありそうだなと感じました。

2-2. Long journey of Ruby standard library

speakerdeck.com

ANDPADに所属されている、Ruby core teamの@hsbtさんによる、Rubyの標準ライブラリについての発表でした。

Bundled gemsは独立したgemとして管理されるので、Ruby全体ではなくそのgemをメンテナンスするチームなどを作りやすいというメンテンス上のメリットや、依存関係を減らすことによって更新を容易にしサプライチェーン攻撃を防いだりといったセキュリティ上のメリットがあり、Ruby3.4以降ではDefault gemsからBundled gemsへの移行を目指しているそうです。

私がRuby3.3へのアップデートに取り組む際に調べて、いくつかの標準ライブラリがBundled gemに移行されるという理由で警告が出るようになったことは知っていたのですが、その背景を知ることができて良かったです。

また、gem同士に依存関係がある場合が現状問題になっており、@tagomorisさんが提案されているNamespaceが解決策になると期待されているという話で締めくくられていました。

2-3. Namespace, What and Why

speakerdeck.com

そしてその@tagomorisさんによるNamespaceのお話です。

Namespaceとは、apps/libsを独立した空間に分離し、他の空間における変更から隠蔽することを可能にする機能です。

NamespaceがないGlobal Onlyな空間では、異なる2つのバージョンのライブラリを同一プロセスで呼び出そうとした場合に衝突が発生しますが、Namespaceによってプロセスを独立した空間に分離すれば、それぞれの空間で異なる2つのバージョンのライブラリを呼び出すことが可能になります。

Namespaceは@tagomorisさんによって現在Rubyに対して提案中の機能で、MatzのKeynoteでも20年前に妄想した機能の1つと紹介されていて、Namespaceが実現されたらRuby4.0になるのではないかととても期待されていました。

このセッションではNamespaceの様々なユースケースが紹介されていたのですが、一番身近に感じたのは@hsbtさんの発表でもあったgem同士の依存関係を解消する点でした。

ただし、今はこの依存関係によってgemのバージョンを上げないといけないという健全な力が働いているとも捉えられるので、モラルハザードを回避するための対策を講じないといけないという点にも言及されていました。

3. 参加して良かったこと

初めてオフラインのRubyKaigiに参加した三重のRubyKaigi 2022のときは本当に驚きの連続で最高の3日間でしたが、松本で開催されたRubyKaigi 2023はもっとおもしろくて、今年はさらに過去2年よりも楽しかったです!!(人生で一番楽しかったかもしれません…)

それにはいくつか要因があったと思います。

3-1. はじめましての人とたくさん交流できた

これまで以上に楽しめた理由の1つに、この1年間でRuby界隈での知り合いが増えたことがあったと思います。

ただ、1年ぶりに直接会ってお話できるのはRubyKaigiの楽しみの1つだとは思いますが、それ以上にはじめましての人との交流がRubyKaigiの大きな醍醐味だと思います!

今年も各社のイベントに参加して、コミッターの方からこれからエンジニアになる方まで、たくさんのはじめましての人とお話することができました。

私は幸運なことに、エンジニアになった一番最初の頃に@ogijunさんから「とにかく外の世界に出て、自分の知らないことを知っているようなエンジニア、とてつもない刺激をくれるようなエンジニアと会ってきなさい」と教えてもらって今があります。

私自身この数年間を通して本当にその通りだなと感じているので、もし今年のRubyKaigiを会社のメンバーで固まって過ごした人は、せっかくなので来年はこの3日間はどんどんはじめましての人たちと交流してみてはいかがでしょうか!

それに、意外と勇気をもって話しかけた人は友達の友達みたいな形でどこかで繋がっていることが多いので大丈夫です!

ビーチで開催されたOfficial Partyの様子(なんと約800人…!)

3-2. 感謝の言葉を伝えられた

実はYOUTRUSTはRubyKaigiの直前に資金調達を発表し、RubyKaigiのDay0と同日に普段お世話になっているクライアントさんをお招きしてユートラ感謝祭を開催させていただきました。

「感謝祭に行きたかったんですけど、RubyKaigiと重なってしまって行けなくて残念です」と話しかけてくださったいつもYOUTRUSTを使ってくれているクライアントさんや、エンジニアイベントなどでいつもお世話になっている感謝祭にはお呼びできなかったエンジニアのみなさんに、YOUTRUSTのメンバーとして直接感謝の言葉を伝えることができて良かったです!

3-3. モチベーションがすごく上がった

1つ目は、2日目のLTセッションの@chobishibaさんのLTがきっかけでした。

speakerdeck.com

@chobishibaさんは、業務で役立つgemなどとは違って、自分が書いていて楽しいものをクリエイティブコーディングとして続けているお話でした。

作業を効率化したい、他の開発者の役に立ちたいという動機ではなく、本当に自分がやりたいことをやっている姿がすごく印象的で、当たり前のことではあるのですが、そういう形もあるんだな〜と改めて感じさせられました。

自分も、好きな将棋に関する何かを作って来年LTに応募したいなと思いました!


2つ目は、Day3の最後にたまたま一緒に飲むことができた@koicさんと@ydah_さんとのお話です。

私はYOUTRUSTではgemのアップデートをよくやっていて、RuboCopRuboCop RSpecのバージョンを上げるときにいつもリリースノートで2人の名前を見ており、自分でカスタムコップを作ったりとRuboCopへの関心が強かったこともあって、いろいろお話できた時間は本当に嬉しかったです!

@koicさんからは、パッチを送られる側のリアルな話や、パッチを送ってOSS活動に挑戦したいときに一番最初にやると良い内容を教えてもらいました。

@ydah_さんからは、RuboCop RSpec teamのメンバーになるまでの話や、どんな思いでRubyKaigiで発表しているのかを聞かせてもらって、熱い話に感動して泣きそうになりました。(人柄でさらにファンになりました)

こういった機会もやはりオフラインで直接参加して偶発的に生まれるものだと思うので、RubyKaigi 2024に参加して本当に良かったです!

RubyKaigi 2025は愛媛の松山で開催されるので、みなさん松山でお会いしましょう!!

RubyKaigi 2025は松山開催です!

herp.careers