Gakken LEAPで働いていますkoboriです。普段はShikaku Passというオンライン学習サービスの開発を行っております。
スキルアップ支援制度という会社の制度を利用し、先日開催されたRubyKaigi2024に参加させていただきました。今回はひとりかつ初参加だったこともあり、英語や発表内容の理解など、不安な点は多々ありました。しかし、実際に参加をしてみて、「行ってよかった」 という気持ちでおります。来年以降も、今回の私と同じように、初めてRubyKaigiへ参加しようと考える方がいるかと思います。そんな方の背中を押すことができればと思い、今回の参加体験を記事にすることにしました。
事前準備
チケット
今回私は2月の中旬ごろに、Early Birdという枠でチケットを購入しました。今年は1月30日に発売のアナウンスが投稿されていることを確認しています。来年の発売開始時期は分かりませんが、RubyKaigi公式のXのアカウントをフォローしておき、年明けあたりから注視しておくと発売のアナウンスを見つけることができるのではないかと思います。
また、今年はナーサーリースポンサーのSTORESさんより、RubyKaigi参加者向けに託児サポートもありました。来年以降も同じサービスが提供されるかは分かりませんが、子育て中の方は託児サポート提供の可能性も視野に入れて参加を検討してみてはいかがでしょうか。
心構え
RubyKaigiオーガナイザーのa_matsudaさんより、「初心者のためのRubyKaigi入門」という記事が公開されていました。事前勉強会にて発表された内容のようですが、私はイベントには参加できず。しかし、必要な心構えが全てスライドに詰め込まれているように感じました。
今年に依存した内容ではないため、来年以降に参加を予定される方が読んでも間違いなく参考になる情報が詰まっているかと思います。
参加前に資料を読んだ際、自分の中で特に印象に残ったフレーズを以下に抜粋しました。
・トークの内容自体は、「わかる」か「わからない」かで言えば、ほぼ「わからない」
・「わからない」けど「気にしない」
・Rubyユーザーズカンファレンスではない
・じゃあなんのために参加するのか
・自分が普段使っている道具が、こういう人たちがこういうことを考えて作ってるんだ!みたいなのがわかるようになる
必要な情報が簡潔にまとめられた資料になっているので、参加を検討される方は一読してみることをおすすめします。
事前勉強会
STORESさん主催の事前勉強会に参加しました。概要としては、スピーカーの方が雑談ベースで当日の発表について話していくものでした。ここで私は「私の知っているRubyではない」ということを身をもって体感し、上に書いた「心構え」で学んだことが確かなものとなりました。参加しておいてよかったです。
勉強会ではありませんが、Rubyのしくみを読む、気になる発表は事前に分からないワードは調べておく、などの準備も行いました。全てを理解して臨もうとするとおそらく時間が足りないので、焦点を絞って準備を進めることをおすすめします。
英語
私は英語に全く自信がありません。一番の不安の種でした。参加以前、RubyKaigiの公用語は英語のみだと思っていたのですが、実際は英語と日本語が公用語とのことでした。受付やブースは日本語で会話してもらえるので、英語が分からないと入場できないということにはなりませんでした。(よかった)
発表は日本語スピーカーの方を中心にスケジュールを組みました。しかし、スライドは英語で作成されているので、理解しきれないページは翻訳カメラを利用しながら聴講したり、発表後に公開された資料を確認するなどしました。
外国の方の英語の発表にもいくつか挑戦しましたが、あえなく撃沈しました。懇親会で海外の方との会話があまりできなかったことも悔やまれます。
弊社で開発しているShikaku Passを利用して、継続的な学習を重ねていこうと思いました。
テーマと目標の設定
ここまでの事前準備を踏まえ、RubyKaigi2024に参加のテーマを設定しました。
「分からないこと」を知る です。
RubyKaigi参加後に何かしら自分の行動を変えるきっかけを掴むために「分からないこと」を知り、自分が見えている世界を広げようと思った背景があります。
当日
発表のこと
RubyKaigi2024で私が聴講した発表をいくつか紹介します。おそらく、RubyKaigi2024のアーカイブ動画が後日公開されると思います。アーカイブ動画を視聴してRubyKaigiの雰囲気を知りたい方の動画選定の参考となれば幸いです。
Writing Weird Code
IRBとRELINEのメンテナーをしているIshidaさんによる、奇妙なコードを書くことに関する発表でした。
TRICK2022で金賞を受賞した作品の紹介に始まり、「ひとりTRICK2024」が開催されていました。TRICKとは、Rubyで書かれた難解なコードで作品を作り、審査員に驚きや笑いもたらせたかどうかを競うプログラミングコンテストです。つまり奇妙のコードで書かれた作品が集まるコンテストと理解して差し支えなさそうです。
TRICK2022金賞の作品は、Rubyで書かれたコードを実行をすると、水の中でゆらゆらと泳ぐ魚のアスキーアートのアニメーションが描画される作品でした。さらに、一度実行を止め出力された文字列をRubyのコードとして実行すると、前回実行したアニメーションの続きが描画されるというものでした。
ひとりTRICK2024でも、様々な超絶技巧な作品が紹介されていました。その中のひとつ、Most Floralを紹介します。花が描かれたBMPファイルがあり、これがそのままRubyコードとして実行できるというものでした。実行をしてみると、同じ構図が描かれたアスキーアートが描画されるという。会場は終始驚きと笑いに包まれており、まさにひとりTRICKという盛り上がりでした。
と、文章にしてみたものの、超絶技巧すぎて訳が分からないと思いますので、公開されているコードを手元で実行してみることをおすすめします。
初めてのRubyKaigiで初めて聴く発表としては刺激が強すぎる内容で、思い出に強く残りました。
また、来年にはTRICK2025が開催されるとのことで、今から非常に楽しみです。
Unlocking Potential of Property Based Testing with Ractor
SmartBankのOhbaさんによる、Property Base TestingをRubyで行うために作成したgemに関する発表でした。
冒頭で、Property Base Testingとは何かについて丁寧に話されていました。Property Base Testingについては事前に調べてきてはいたものの、Example Base Testingとの対比やShrinkの動きなど、非常に勉強になる内容が盛り込まれていました。
その上で、Property Base Testingを効率的に実行するためになぜRactorが適しているという仮説に至ったか、実際に作成したgemの解説とデモ、仮説の検証結果という流れで発表進んでいきました。
仮説検証の結果は、Sequentialな処理が多くのユースケースで最も実行速度が速いという結果でしたが、設計の意思決定の過程を詳しく知ることができ、とても楽しい発表でした。
また、発表の進め方と話し方が非常に上手で内容が分かりやすい印象を持ちました。いつか登壇してみたいという方には、そのあたりにも注目をしてアーカイブ動画を観られることをおすすめしたいです。
当日の資料が公開されていましたので、リンクを貼っておきます。
余談ですが、この発表はSmall Hallという会場で行われたのですが、実際は全然Smallではなく大変驚きました。
Embedding it into Ruby code
RBSの開発を主導しているSoutaroさんによる、rbs-inlineというgemに関する発表でした。RubyのコードとRBSの型宣言は別のファイルに書かれているのが現状です。それを1つのファイルに集約したいというモチベーションで開発されたとのことでした。rbs-inlineを利用することで、通常別ファイルに書くRBSの型宣言を、Rubyコード内のコメントとして書くことができるようになります。
これにより、型宣言+実装 --> 型生成 --> 型検査 --> 実装 --> ... という1連の開発サイクルを1つのファイル内で完結できるようになるとのことでした。
本発表の翌日の「Ruby Committers and the World」では、rbs-inlineの記法に関するアンケートが実施され、発表と併せて楽しむことができました。また、SoutaroさんからMatzさんへ、rbs-inlineについてどう思うかという質問が投げられ、「1つのファイルで完結させたい気持ちはよくわかるので黙認」とのことでした。型の議論に限らず、Rubyコミッターの中でも、設計や言語の方針に関する意見が分かれていることを知ることができた点も良かったです。
当日の資料が公開されていましたので、リンクを貼っておきます。
Good first issues of TypeProf
MRIコミッターであるEndohさんによる、TypeProfというRubyに同梱されている静的解析ツールに関する発表でした。発表時点で、TypeProfはほぼEndohさんひとりで開発をしているため、一緒に開発をしてくれる人を探したいというモチベーションでの発表でした。
TypeProfとは何か、どのように遊ぶかなど、TypeProfを知らない人向けの説明にも時間を使ってくださっていました。それから、開発の方法、内部構造についての解説、最後に取り組むissuesの例を紹介されていました。
発表の中の、TypeProfで遊んでみて上手く動かなかった挙動のシナリオテストを追加するPull Requestを作るだけでも、貢献になるという話が強く印象に残っています。
当日の資料が公開されていましたので、リンクを貼っておきます。
ひとつ前に紹介した、rbs-inlineの発表と併せて、Rubyの開発者体験の未来に思いを馳せる時間となりました。
発表全体を通して
RubyKaigiの初日、時間の限り発表は全部聴くぞスタンスで臨みました。実際に初日を終えてみて、疲れが先行して集中して聴くことができない発表があったことに気づきました。知らない土地で、知らない沢山の人の中、難易度の高い発表を聴き続けたと考えるとそれもそのはず。お昼休憩が長めに取られていたり、午後の休憩があるものの、自分にとってはそれだと少し足りなかったようでした。
来年以降初めて参加される方は、「頑張りすぎない」ことで、より興味のある発表を集中して聴くことができ、結果的に楽しむことができるかもしれないです。
発表外のこと
スポンサー企業さんにから出展されたブースやノベルティもバラエティ豊かで楽しむことができました。ブースや空きスペースで、雑談や技術的な議論など、多くの方が交流されている光景も印象に残っています。
各日の夜には、ドリンクアップイベントが開催され、そこでも参加者同士の交流が盛んに行われていました。私は、マイベストさんのゆんたくNightとちゅらデータさんのChura DATA Drinkupに参加させていただき、料理、お酒、会話、沖縄の音楽と文化、全て楽しむことができました。
こういったRubyist間の交流や、現地を満喫することも、RubyKaigiの楽しみ方のひとつなのだと感じました。
まとめ
記事の内容をグッとまとめると、Webサービスを開発している英語が苦手な普通のエンジニアが、RubyKaigiにひとりで初参加してみた結果、ちゃんと楽しむことができましたという話でした。自由に動けたという点で、ひとりでの参加も良かったですが、同僚と服を揃えて参加している姿は少し羨ましくもありました。
次回のRubyKaigiは愛媛県松山市で開催されることが決まっています。来年は処理系に関する発表も楽しめる準備をして臨み、さらに新しい世界を広げていきたいと考えています。
Gakken LEAP では教育をアップデートしていきたいエンジニアを募集しています。今回のRubyKaigi参加に利用したスキルアップ支援制度や日々の開発の話など、ぜひカジュアル面談でお話できればと思います。
https://gakken-leap.co.jp/recruit/