今回は RubyKaigi 2023 に NOC(#RubyKaigiNOC)として参加した。RubyKaigi 自体初参加だったが、今まで知らなかった Ruby 言語を取り巻く事柄について知ることができたり、同じ興味を持つような方々と知り合いになれたりして、心から楽しめた。day -1 から一日ずつ振り返ってみる。
day -1(5/9)
つくばから松本に行くためには 5 時間ほどかかった。
中央線は揺れると聞いていたが、たしかに西八王子駅から西側ではパソコンに合わせている焦点がブレる程度には揺れた。
夕飯にそばが食べたくて Google Maps で営業中の表示があったお店に行ってみたが営業しておらず無念の帰宅……。しかし、その後に他の NOC の方々とご一緒させてもらうことができ、居酒屋などへ行けた。この日から day 4 までは毎日飲んでおり、大学の友達には「ぱぶゆが会期中にずっと酒を飲んでいる様子が Swarm で観測できた」と帰ってから言われた1。
day 0(5/10)
朝からひたすらケーブルを引いたり AP を配置したりなどの L1 作業をした。持ち前の方向音痴スキルにより迷子になっている様子をトランシーバー経由でスタッフさんたちにブロードキャストしていた。
少し前までは八の字巻きが一切できず、難しすぎないか?と思い続けていたが、当日の敷設作業中にはスラスラとできるようになり、同時に八の字巻きの偉大さを体感できた。
外が暗くなるまで作業をしているのは高校の文化祭を思い出させてくれて、ヘトヘトになったが楽しかった。
day 1(5/11)
RubyKaigi 1 日目。朝に来て残っていた敷設作業を完了させ、様々な発表を聞いた。
https://rubykaigi.org/2023/presentations/yukihiro_matz.html#day1
Matz Keynote では Ruby の歴史を聞くことができた。特に、2005 年当時に Ruby on Rails を用いて 15 分で Web アプリケーションを作るデモの動画が公開され、それで Rails が画期的であることが広まったという話が印象的だった。おそらく https://www.youtube.com/watch?v=Gzj723LkRJY がそのデモの動画なんだろうと思う2。
ちなみに、私はどちらかというと static type believer です。
RuboCop's baddest cop
https://rubykaigi.org/2023/presentations/gsamokovarov.html#day1
発表者が勤める会社 Dext ではメソッド呼び出しのときにかっこを省略するというスタイルが運用されている。そのようなルールを RuboCop で強制させるようとすると考慮することが非常に多く、単純に実現できるようなことではない。例えば Array や Hash の中でのメソッド呼び出しではかっこが省略できない。
発表者はなんとかして RuboCop にかっこ省略用 Cop を登場させることができたが、以降に複数のエッジケースが見つかり、それぞれを修正していった道筋が発表されていた。
parser gem を使ってインタラクティブに「ここのかっこ抜いたらパースできないですね」を見せている様子が画面に映っていて、見る側としてもわかりやすい発表だった。
Understanding the Ruby Global VM Lock by observing it
https://rubykaigi.org/2023/presentations/KnuX.html#day1
GVL(Global VM Lock;今では Giant VM Lock と呼ばれている)の様子を gvl-tracing
gem と https://ui.perfetto.dev/ を用いて観測する様子が発表されていた。そもそもロックとは何か、という話からされていて丁寧だった。Ractor にはそれぞれに GVL があるので、CRuby 上で動作する Thread を用いた Ruby プログラムとは違って concurrency だけでなく parallelism も実現できるのだということを知り、使ってみたくなった。
お互いに自分の好きなことなどを話せる機会がたくさんあり、かなり有意義だった。RubyKaigi 参加者の中にそこまで知り合いがいた訳ではなかったので若干戸惑った場面もあったが、最終的には「○○の話題なら××さんがよく知っている」というような風にして知り合いの知り合いな方々と繋いでもらうことができ、こういったイベントの良さが味わえた。
そして、Official Party 終了後には coins の大先輩である Matz さんとのツーショットを得ることができた(とてもうれしい)。
day 2(5/12)
RubyKaigi 2 日目。
JRuby: Looking Forward
https://rubykaigi.org/2023/presentations/headius.html#day2
Android で JRuby を動かすための Ruboto というアプリケーションがあることを初めて知った。実行に必要とする permission の要求が多すぎるのでまだ Play Store にはリリースできていないが、新しいセキュリティの requirements に適合したら publish するらしい?というような話をしていた気がする(曖昧)。
JRuby は parallel な動作を最初からサポートしている(GVL の制約がない)ので、スレッドを利用している既存プロジェクトに導入できればそれだけで有効に働いてくれることが期待できるらしい。
Yet Another Ruby Parser
https://rubykaigi.org/2023/presentations/kddnewton.html#day2
https://github.com/Shopify/yarp に関する発表。すでに CRuby や TruffleRuby、JRuby 内のパーサーとして YARP を使うような実験的フォークがあるらしい。特徴として error tolerance を提示しており、例えば class A
の後には自動的に end
があったものだとみなし、解析中に missing token をできるだけ残さないようにすることで後続する正しそうなソースの解析に取りかかれるようにしているらしい。
YARP は CRuby の内部や外部パッケージ等には依存していないので portability が高いとのことだった。
曖昧性のある文法や unary/binary 演算子、スペース、do
キーワード、エンコーディングの扱いが大変らしい。
The Second Oldest Bug
https://rubykaigi.org/2023/presentations/jeremyevans0.html#day2
タイトルに惹かれて見に行った。
Ruby のバグトラッカーに 2 番目に古いバグとしてずっと残されていたものを完全に解消するまでの詳細が話されていた。
object_id(*1380888.times)
のように、大量の引数と共にメソッドを呼び出すと Ruby 1.9 以前までは core dump を吐いてしまっていた。Ruby 2.2 では Ruby で定義されたメソッドについては問題が修正されていたが、C で定義されたメソッドでは問題が残っていた。
修正 PR は https://github.com/ruby/ruby/pull/7522 のようだったが、CRuby 筋は一切ないので差分だけ見てもあまりピンと来なかった。事前に https://silverhammermba.github.io/emberb/c/ をサッと読んだが、それだけでは知識が足りず。
夜
この日は他の会社に所属している方々をランダムに集めて作成されたグループに入り込み、居酒屋へ行った。
ソフトウェア開発のあるあるが話題の多くを占めていて、どこでも似たような問題に悩まされているのだな〜と共感していたのは覚えている。しかし、ちゃんと酔っていたので詳細まではしっかりと覚えていない……。でも、これも普段なら絶対に知り合わなかったであろう人同士で会話ができたという点で、物理イベントの魅力が体感できた良い機会だったと思う。
day 3(5/13)
RubyKaigi 3 日目。
15 時前から撤収作業をしなければならなかったため、発表はあまり聞かなかった。バッヂを手に入れたかったので午前中はスポンサーブースを回っていた。
GMOペパボさんのブースでアイコンを印刷してくれるサービスが実施されており、これに興味があったので最初に向かった。
各社のブースを回っている途中でおみくじやガラガラを試しにやってみたら、アンドパッドさんと Fastly さんのところでそれぞれ大吉と一等を出してしまった。運を使い果たした感がすごい。
NOC の撤収作業は 20 時半ぐらいまでやっていたので After Party には行かなかった。
RubyMusicMixin 2023
なんと、RubyKaigi が終わった後にデカい音を聴くことができるイベントがあった。落ち着いて話せる場所も併設されており、そこで音ゲー考古学やネットワークの話をする機会があった。
終盤になって急に MOGRA などで聴くタイプの楽曲が大量に流れてきて完全に最高になってしまった。まさかネオンライトのアレが目の前で実演されるとは思わなかった……。選曲がずっとオタクを刺しに来ており、朝まで DJ してほしかった。
観客にはかなり勢いがあって、私が参加する普段のクラブイベントではここまで盛り上がっていた例は見たことがなかった。超楽しかった。
day 4(5/14)
文字通り「ダムに行くよ」という前情報のみを得た上でレンタカーに乗せてもらい、ダムや円筒分水を見て回った。この車内で流れている曲もまた自分のプレイリスト勝手に覗かれてるんか?と思うぐらい好みが overlap していた。
運転手の方と国道走破について雑談していたら片道GO!というレンタカーサービスの存在を教えてもらえたのでかなり使ってみたくなった。
自動的にぼざろや咲-Saki-の聖地巡礼ができて有意義なドライブだった。
全国的にそう多くない円筒分水が長野の一部地域で並んでいるという情報が得られ、複数の円筒分水を見る機会があった。交差点チェックインアプリを書いていたおかげで素早く円筒分水ズにチェックインすることができた。
長峰山山頂展望台から見える中央自動車道は綺麗だったが、ちょうどそのタイミングで一眼レフのバッテリーが切れてしまって撮影できなかった。機会があればまた行きたい。
長野県の治水勉強デーだった。
day 5(5/15)
午前中は残っていた撤収作業をした。信州そばを食べ、松本城へ。天守の階段がとんでもなく急だった。次の日は研究室での予定があり、早めに帰らなければならなかったので松本ブルワリーにいた NOC の人々に挨拶をして帰宅した。
帰りの特急あずさ46号は洗堀計の故障3で 2 回急停車し、また別の車両で異音を察知したため 1 回急停車した。その結果、98 分遅れで終点の新宿に到着した。一瞬帰れるか心配になったが、つくばの循環バスの終バスにギリギリで間に合い、帰宅できた。
急停車する電車に乗車した経験が今までなかったので、それらが積もって一気にやってきたのかもしれない。3 回も停まるとは思わなんだ。
RubyKaigi2023 を終えて
大学入学時にちょうど某が流行りはじめてしまい、こういったイベントに全然参加してこなかった人としては、RubyKaigi 2023 のおかげで物理開催のイベントの楽しさを知ることができてよかった。
NOC 関連の仕事は L1 作業のみしかやらなかったが、大きな会場では事前の計測に基づいた物理構成の錬成や、前日作業のための入念な準備が必要であることを知った。せっかくなので大学でも同じようなことを自分の手で試してみたいと思い、勢いで WLC や AP、スイッチを入手しているところである。
私が所属するサークルの一つには物品管理がまともにされていないところがあるので、以下のような作業風景を見ながらうちもいい感じに整えようと思った。
機会があれば後の RubyKaigi にもぜひ参加したい。本当に。これほど魅力的なイベントがあるとは知らなかった。
最後に、オーガナイザーの皆様とスタッフの皆様、そして参加者の皆様、ありがとうございました。特に、NOC に誘ってくださった id:sora_h さん、参加のための準備をサポートしてくださった id:tomo_ari さん、一般社団法人日本Rubyの会の皆様、そしてクックパッド株式会社の皆様には厚く感謝申し上げます。
追記(2023/05/20 13:50)
Timee さんの「オライリー書籍プレゼント!」キャンペーンでも当選してしまった。ここまで来ると運が良すぎて逆に怖い(ありがとうございます)。