RubyKaigi 2024 にヘルパー参加してきた

こんにちは、 Qiita株式会社の @tomoasleep です。
今年も RubyKaigi に参加してきました。今年はヘルパー (当日に運営の手伝いをするスタッフ) として参加してみました。どうして参加したか、参加してどうだったかを書いていこうと思います。

## なんでヘルパーやろうと思ったか

これはもうズバリ **RubyKaigi, Ruby コミュニティ, Ruby を更に楽しみたい**、と思ったからです。

RubyKaigi への参加は過去３回 (仙台、三重、松本) 参加しているのですが、とにかく最高 (Ruby 言語自体の話、処理系の話が日本で聞ける、 Rubyist 同士で Ruby に関する話が色々出来る、Rubyist の知り合いが増える、知り合いと再会できる…etc) だし、 Ruby, RubyKaigi に貢献している人もすごいなあ、と感じていました。

そんな中、 RubyKaigi 2024 のヘルパー募集を見て、「貢献する側に回ってみたいな、サポートする側に回ることで更に楽しめないかな」と思って応募することにしました。

https://x.com/rubykaigi/status/1770251102375801221

…とはいえ、 RubyKaigi のセッションは色々聞きたいのもあり、それとヘルパー業が両立できるのだろうか…？という不安は大いに感じていたのですが、とりあえず1回やってみるかということで申し込んでみました。

## ヘルパーとして何をしていたか

ヘルパーには事前に主な担当箇所を割り振られるので、それぞれやる内容に違いがあったりするのですが、自分の場合は、

* 前日 (いわゆる Day 0):
    * 会場のあちこちの設営、たくさん届く荷物のブースへの運搬
* 会期中:
    * 担当箇所 (Large Studio) での参加者の案内、混雑時の誘導
    * 参加者からの問い合わせに答える
    * (トランシーバーで共有される) 荷物の運搬、誘導等、時々発生するタスクの手伝い
    * 最後の片付け

などを行っていました。

ヘルパー業の関係で聞くのが難しかったセッション (一部 Keynote 等) はあったのですが、同じ担当箇所のヘルパーの方々と内々で調整させていただいて、聞きたいと思っていたセッションは概ね聞くことが出来ました。

(調整していただいたヘルパーの方々、「ヘルパーも手が空いてるタイミングはセッションなど楽しんで」と楽しむ空気を作ってくださってた、松田さんと、cobachie さんにはめちゃくちゃ感謝です… :pray: )

## ヘルパーとして参加してどうだったか

設営に関わったり、誘導案内などをしたり、トランシーバーで運営のやり取りを聞いたり、他の方々か RubyKaigi の準備の話を聞いたりするなど、違った角度で RubyKaigi を見られてめちゃくちゃおもしろかったです。
なんというか RubyKaigi のソースコードをちらっと見ているというか、「こうして RubyKaigi は回っているんだなあ」 みたいな RubyKaigi の解像度が上がっていくような発見が色々ありました。

次参加者として参加するとしたらこの辺気をつけよう…みたいな発見(?)も色々ありました :innocent: し、大きなカンファレンスをバリバリ回している、毎年毎年楽しめる工夫を凝らしている Oraganizer, Local Organizer の方々、様々なスタッフの方々は本当にすごいなあ、と実感しました。

あとは、参加者の方々からも労いの言葉をかけてくださったり、様々なお願いにも快く応じてくださるなど、温かい方が多く、無事に最後まで楽しくヘルパーすることが出来ました。感謝です :pray: 

https://x.com/nemunemu3desu/status/1791632325811614051

## 参加したセッション、イベントの感想

個人的には型と開発ツールと、静的解析に関心が強いので、そのへんのセッションを多く回っていました。ここからは参加したセッションやイベントの感想を一部書いていきます。(すべてを書くには時間が足りないので一部だけにしてますが、どれもめちゃくちゃ面白かったです…！)

### [Long journey of Ruby standard library - RubyKaigi 2024](https://rubykaigi.org/2024/presentations/hsbt.html#day1)

Standard Library の gem への切り出しの話です。 Ruby アップデートなどをしていると、 gem に切り出されているのは見るのですが、何故やっているかの背景が聞けたのは良かったです。あと、こうした切り出しに関連して起こるエラーや非互換も、ユーザーに分かりやすく伝えている改善がとても良いなと思いました。 (ソフトウェア開発者としてこうした工夫は参考にしたいなと感じました)

<script defer class="speakerdeck-embed" data-id="3210569497c9475aa1e3d4a1ab12ee3c" data-ratio="1.7772511848341233" src="//speakerdeck.com/assets/embed.js"></script>

### [Namespace, What and Why - RubyKaigi 2024](https://rubykaigi.org/2024/presentations/tagomoris.html#day1)

現在開発を進められている Namespace (名前空間) に関する話です。 Namespace があると複数バージョンのライブラリの共存などが容易になるので、非常に有用そうで期待が持てる機能です。

どのように Namespace を実現するかの解説もされていたのですが、「後方互換にかなり気を使われているな」という印象を持ちました。 C拡張も Namespace 分離が行えるようにしているのは、素人目線、かなり大変そうに見えるのですが、実現すれば 「ライブラリ側で対応することなく namespace 分離が行える」 ことになるので、実現したときのリターンが大きく、かなり期待です。

FAQ 等は以下にまとまっています。

[https://gist.github.com/tagomoris/4392f1091f658294bd4d473d8ff631cb](https://gist.github.com/tagomoris/4392f1091f658294bd4d473d8ff631cb)

<script defer class="speakerdeck-embed" data-id="8557ec0291bb40b8948ef4900770d7a3" data-ratio="1.7777777777777777" src="//speakerdeck.com/assets/embed.js"></script>

<!--


### [The grand strategy of Ruby Parser - RubyKaigi 2024](https://rubykaigi.org/2024/presentations/spikeolaf.html#day1)

Ruby の Parser の改善を

-->

### [Embedding it into Ruby code - RubyKaigi 2024](https://rubykaigi.org/2024/presentations/soutaro.html#day2)

Ruby コード中にコメントとして RBS が書けるようにする [rbs-inline](https://github.com/soutaro/rbs-inline) の紹介、その背景、記法の紆余曲折について話されていました。

Ruby と RBS が分かれていることで、書く際に色々面倒なのは言わずもがなのですが、コメント内で書けることでそれが緩和され、 TypeScript, YARD, Sorbet などに近い使い勝手になるので、個人的にはかなり待ち望んでいました。

<script defer class="speakerdeck-embed" data-id="947fd12fb6d24adc8a362d76aeed2ee7" data-ratio="1.414516129032258" src="//speakerdeck.com/assets/embed.js"></script>

手前味噌で恐縮ですが事前の勉強会で勝手に [宣伝 LT](https://speakerdeck.com/tomoasleep/generate-rbs-inline) したり、 [YARD からの変換ツール](https://github.com/tomoasleep/yard_to_rbs_inline) 作るぐらいには個人的には待ち望んでいた存在です。

現時点では、rbs gem と別の gem (rbs-inline) として実装していて、コメントとしてどういう記法が良いかフィードバックを集めたいとのことです。実際にセッション後の休憩時間に会場の Hackspace で soutaro さんを交えて、記法に関するアンケートや質問タイムなども行われていました。 (RubyKaigi はこうした廊下 Kaigi が出来るのも楽しいなあと感じます)

[typeprof](https://github.com/ruby/typeprof) や [gem_rbs_collection](https://github.com/ruby/gem_rbs_collection) のセッションもそうなのですが、 Ruby の型周りは更に成長させていくために、フィードバックや Contribution が求められているなと感じます。
自分も Ruby で柔軟さと型による堅牢さを両立できればなあと思っているので、直接の Contribution や、実例を作って紹介していくなど、どんどん貢献していこう :muscle: という気持ちになりました。

### [Getting along with YAML comments with Psych - RubyKaigi 2024](https://rubykaigi.org/2024/presentations/qnighy.html#day2)

YAML の変換をコメントを残したまま行えるようにするライブラリを実装した、という話です。

個人的に興味深いなと思ったのが、既存の YAML ライブラリ (Psych) をうまく活用し、足りない機能を少量の実装で補いながら実現していることで、うまく責務が重複しないように分離している設計の工夫が非常に興味深かったです。

<script defer class="speakerdeck-embed" data-id="bce09354b65e4f879a7a87b87cf8c5a3" data-ratio="1.7772511848341233" src="//speakerdeck.com/assets/embed.js"></script>

### [An mruby for WebAssembly - RubyKaigi 2024](https://rubykaigi.org/2024/presentations/udzura.html#day2)

WASM 向けの mruby 実装の話です。  ruby.wasm はファイルサイズが大きくなってしまっている (モバイル環境で使ってもらうには不安があるレベルのサイズだし、読み込みに時間がかかる) のに対し、 mruby/edge はかなりファイルサイズが小さくできているので、その点がかなり魅力的だと感じました。 

https://udzura.jp/slides/2024/rubykaigi/

スピーカーの方が開発ブログを書かれているようなので、そちらの方も読んでみようと思います。 RBS を import, export の宣言用に使う、というアイデアもなるほど〜という感じました。

https://udzura.hatenablog.jp/entry/2023/12/24/174037

https://udzura.hatenablog.jp/entry/2024/03/28/141908

### LT: [Drive Your Code: Building an RC Car by Writing Only Ruby](https://rubykaigi.org/2024/presentations/lt/)

PicoRuby を使ったラジコンを動かす LT です。電子工作はこれまで触れてこなかったのですが、PicoRuby、かなりセットアップも簡単で、入力系も簡単なコードで実装できて、すごく敷居が低くそうで興味が湧きました…！

<script defer class="speakerdeck-embed" data-id="947fd12fb6d24adc8a362d76aeed2ee7" data-ratio="1.414516129032258" src="//speakerdeck.com/assets/embed.js"></script>

と思っていたら、 Rasapberry Pi Pico W を会場で譲ってもらって PicoRuby デビューすることができました :tada: 

https://x.com/nemunemu3desu/status/1791038254265098643

https://x.com/nemunemu3desu/status/1791272050331709520

(PicoRuby を扱った発表には [Adding Security to Microcontroller Ruby - RubyKaigi 2024](https://rubykaigi.org/2024/presentations/sylph01.html#day2) があって、残念ながら自分は聞けなかったのですが、こちらも試してみたいです…！！)



### LT: [The Journey of rubocop-daemon into RuboCop](https://rubykaigi.org/2024/presentations/lt/)

rubocop-daemon の作者による OSS を公開してから、 rubocop に取り込まれるまでにどういうことが会ったかの話。 初めて自分の作った OSS に人気が集まって大変な部分もあったという話ですが、それでも Pull Request とか Issue とか対応していたのが本当にすごいなと感じます。様々な OSS を開発されてる方々に頭が上がらない気持ちです。

https://speakerdeck.com/fohte/the-journey-of-rubocop-daemon-into-rubocop

<!--

### [Ruby Committers and the World - RubyKaigi 2024](https://rubykaigi.org/2024/presentations/rubylangorg.html#day3)

Ruby コミッターの公開ミーティングです。 Ruby の今後の機能だったり、他の言語の機能を Ruby にいれる是非などが話されていました。

個人的に面白いと思ったのは async/await と 

-->

### [コード懇親会/Code Party RubyKaigi 2024 Day 2](https://andpad.connpass.com/event/315564/)

Day 2 の夜のイベントで、その名の通り (?) テーマごとに分かれてコードを書いたり、見せあったりしながら交流するイベントです。テーマとして型を選んだのですが、 Sorbet の開発チームの方と話せたり、 Sorbet, RBS 触っている人たちと色々意見交換したりと、 RubyKaigi の廊下の延長線みたいな感じで非常に楽しかったです。

運営の方は、以前 [SEゼミ](https://www.clear-code.com/blog/2015/7/14.html) を運営されていてたのですが、自分が学生の頃にこのイベントでお世話になって、イベント後に近況等を話したりなどしました (RubyKaigi はこういう再会の場にもなっているのが素敵だなあと感じます…！)

## 参加してみてどうだったか (2)

最高でした！！

個人的に RubyKaigi は参加すればするほど、どんどん楽しみが増えていっていると感じます。
単純に CS で学ぶような言語の話が実践されている場としても面白いのですが、参加するにつれて Ruby に関する知識や触った経験が増えてきて、徐々に理解できてくる部分もあるのと (それでもわからないものが多いですが…) Ruby についての色々な話も出来る知り合いも増えてきて更に色々なことを知れて…という感じで、本当に年々最高になっていってると感じます。

来年の RubyKaigi でも色々やって最高にしていきたいなと思っています。 Matz-Yama でお会いしましょう :wave: