見出し画像

RubyKaigi2024に行ってきました

って感じのお菓子よくあるよね。

最近あんまり行ってきました記事書いてなかったんですが、今年は特になんか充実感というか満足感というか、そういうのが強いのでなんか書くかーという気持ち。

だいぶとりとめもなく雑多に書いているので、何かすごく有意義な何かが欲しい人は今のうちに引き返していただいた方がいいかもしれません


Day 0

今回は前日入りなので Day 0 から。本当は日曜、月曜あたりから那覇入りしようかとも思いつつ、宿泊費がそこそこかかるし那覇でしたいことがあるわけでもないし(仕事あるし)、という感じでギリギリに那覇 in でした。

Day 0 は夜8時過ぎ着の飛行機にしてしまったので特に何もイベントらしいイベントはありませんでした。ありませんでしたというか参加できませんでしたというか。飛行機とか諸々取り終わった後で色々イベントが pop していてやっちまったなぁという感じでした。無念。

 時間も時間なので那覇空港内で沖縄そばを食べて夕飯としましたが、今思えばヒカルでステーキをキメるなどしてもよかったなぁ…

空港沖縄そば。悪くはないのだが…

書きながら思い出しましたが、ちょうど那覇でプロ野球の試合が行われていたようで、モノレールに試合後の観客が大勢押し寄せて地獄を見ました。車内に充満するアルコール臭。
あまりに人が多すぎて、しかもほとんど酔っ払いという状況、とても目的駅で降りる感じにならず…どうせ沖縄いる間に終点駅まで行くつもりだったので、空港から端のてだこ浦西まで行ってきました。

普通の Rubyist は特に行く理由がない駅のはずなのですが、どういうわけか観測範囲内で私含め3人ほどこの駅に行ってて面白かったです。なんでやろなぁ。

Day 1

というわけで気を取り直して Day 1。お天気はほどほどに晴れ。沖縄らしい感じの日差しを感じる日でした。

 会場のなはーと。綺麗な建物。
集結する(入場待ちの)野生の Rubyist
綺麗な大ホール

というわけでここからはセッションの話。全部書くと大変なので一部の発表だけ抜粋して。

Writing Weird Code

今回のキーノートは Matz からではなく @tompng さんから。 RubyKaigi 経験者の方なら TRICK の人といえば分かるはず。

キーノートも TRICK の話が中心で、あの金魚鉢の QUINE に始まり、今回のために作ったという新しい QUINE がなんと6つ。
どれも聴衆の度肝を抜く圧倒的完成度の作品でした。すごかった。
一部の作品は県庁前駅のデジタルサイネージに掲出されていたとか。

作品の凄さにみんな圧倒されていたという点でもすごい発表だったのですが、 Most Eternal とか発表の締め方とかなんかもうエモすぎて、この時点で「ああ、来てよかった」と思える最高のキーノートでした。本当に。

Let's use LLMs from Ruby 〜 Refine RBS codes using LLM 〜

@kokuyouwind さんの LLM で RBS をいい感じに生成する試み。

既存の RBS 生成はテンプレート生成 + α なので、それをベースにしていい感じの型定義を LLM で生成してやろうという感じ。
ちょうど OpenAI の GPT-4o が出たばかりのタイミングで、これを使うとだいぶ実用的になってきそう…という感じで聞いていました。Gemini 1.5 もよさそうなのかな。

まだ大規模コードベースには適用が難しそう(LLM にプロジェクト全体を食わせて精度を上げたいがトークンサイズの制約があるので)という感じではあるものの、Gemini 1.5 とかだとだいぶ拡大されてそこそこの規模のプロジェクトもイケそう?コードの食わせ方を工夫するとかもありそうですが、LLM の制約が緩く、高性能になっていくと大規模プロジェクトでも使えそうで夢が広がりますね。

個人的にプロジェクト名…リポジトリ名?の RBS Goose が好きです。ロゴというかアイコンの鳥が Duck なことも含めて。みんなセンスいいなぁ…

(余談ですが、同じ時間枠で発表されていた Namespace, What and Why も気になっていました どこかで追いかけよう)

After Kaigi

初日の Official Party は縁がなくチケットが取れなかったので、一人で美味しい肉を食べに行ったりしていました。

Day 2

Day 2 以降あんまり写真とか撮ってない(聞いたり参加するだけで割と精一杯)ので主にセッションの話だけ。

Community-driven RBS repository

キャーポッケサーン をしに行ってきました。半分冗談です。

それはさておき発表ですが、色々な gem に対応した型定義リポジトリ gem_rbs_collection (TS の DefinitelyTyped みたいなやつ)の運用に関するお話でした。

「様々な gem の」というところがやはり厄介で、当該リポジトリの人々だけで完結させることは当然不可能、なので外部の手を借りる必要があるが、
どういう形で関わってもらうのがよいのか…という悩ましいお話。

それこそ最初はメンテナのぽっけさん一人が頑張る体制だったが当然追いつかず、徐々に体勢を見直して、今は積極的にコミュニティの力を借りるような体制にしているとのこと。
外部の人を多く入れると当然セキュリティ的な問題や型定義のクオリティの問題など、色々考えることは出てきてしまうものの、確実に前進している様子が分かってとてもいい話でした(こなみ

それはそれとして人手は全然欲しいので協力してくれる方は引き続き絶賛募集中とのこと。

以下完全に余談。

最前列で待機してたら急にぽっけさんに手招きされたんですが、自分が呼ばれているとは微塵も思わずしばらく固まってしまってました。
(プレゼンがちゃんと全画面表示にならなくてあれー?という感じのトラブルが発生してた感じでした)

結局私は特になんの役にも立てなかったので無力…無力…

It's about time to pack Ruby and Ruby scripts in one binary

Ruby のワンバイナリ化の話 by @ahogappa0613 さん。

別言語でアレですが Go のワンバイナリで動く感じは結構好きなので、似たようなこと出来ないかなぁ、みたいな気持ちで聴きに行ってみました。

全然知らなかった…いや、忘れてただけかもなんですが、既に色々なワンバイナリ化ツールは存在しているものの、Ruby3 系対応がされていなかったり、 gem 対応が甘かったり、色々な問題があってなかなかこれというツールがないのが現状らしい。

ので、ないなら作ればいいじゃないの精神で新しいものを作ったとのこと。
目指したのは Ruby ワンバイナリ化ツールの決定版。素晴らしい。

まだまだ課題は色々あるものの、現時点でも結構ちゃんと動くものになっているらしいので、Ruby で何か簡単なツールを作りたいときに使ってみたい気がします。

個人的には名前が好きです。梱包。

After Kaigi

2日目は Leaner さんの Leaner YAKINIKU Party にお邪魔しました。お肉おいしかった(写真なし)。 Leaner さんありがとうございました。

私そんなにコミュニケーション取るの上手くないというか苦手なんですが、今回はめっちゃ喋った記憶があります。いや同卓の方がいい方だったからなんですが。
色々思わぬ出会いとか思わぬ繋がりが発覚したりとか、オフラインならではの楽しみがあって行ってよかったです。楽しかった。業界は狭いね。

あ、そういえば。
なぜか妙にプチバズってしまった以下の「rubykaigiで自分しか撮ってない写真」はこのイベント中になんとなく撮ったものでした。

Day 3

YJIT Makes Rails 1.7x Faster

@k0kubun さんの YJIT がどんどん早くなってるよやったね!という話。
発表の最初に 1.7倍じゃなくて 1.8倍だったわガハハwというのがあったのがハイライトかもしれない。

なんで早くなったのかについての細かい話はここではしないのですが、JIT で処理できる範囲をより拡大(最適化?)することで無駄を減らして高速化した…みたいなイメージだと理解しています(間違ってるかも)。

Ruby3x3 の話懐かしいなぁと思いながら聞いてました。RubyKaigi 広島の頃とかでしょうか。あの頃は3倍なんて本当に…?って思ってましたが、いやはや。Optcarrot はめっちゃ早いけど Rails は全然、みたいな話も聞いたなぁ、とか。そんなことを色々思い出しつつ、そこから今や Rails が YJIT で2倍弱早くなってしまうということに思いを馳せてしまいます。

社のアプリも個人的にやってるアプリもまだ YJIT 有効にできていないので、
ちょっとここは早めに取り入れたい気持ち。(メモリ消費量に影響がそこそこ出るので様子は見つつにはなりますが)

それにしても Shopify の Ruby チューニングに関する取り組みは本当にすごい…

Finding and fixing memory safety bugs in C with ASAN

正直全然理解できてないし、自分がこの辺りに関わることはまずなさそう…なのですが、発表の終盤で「想定外のセグフォったときとかに ASAN 有効にすると情報が色々見れていいよ」的な知見が得られたのでメモ。

Ruby 書いてると良くも悪くも細かいメモリ周りの話を気にしないので、この辺は別言語とかで一定基礎を固めておきたい気持ちはありつつ…

Matz Keynote

というわけであっという間の最終キーノート。
最終日大トリの発表は Matz でも嫌とのこと。それはそう。

今年は Ruby is Dead が出てこない…と思ったら終盤で言及されましたね。
海外の(主に初学者?)にマジだと思われてややこしいからやめろと苦情があったとかなんとか。
(まあ結局今年も言及しちゃったんですが)

Ruby がより発展するために大事なことは Performance, 次に Performance, そして Performance, 最後に Performance。大事なことなので4回言いました。
4回繰り返されてはいるものの中で言及されていることはそれぞれ違った切り口で、実際それらを向上させていくのは大事だよなぁという納得感あふれるものでした。

多分関係ない気はするんですが、4回の繰り返しからの次は四国か!?みたいなのが当たってしまって預言者になってしまいました。やったぜ。

まとめとか

毎年参戦する度に着実に速度も、開発体験も、色々な進化が感じられて、そういう意味でも毎年参戦するのが楽しみなのが RubyKaigi というイベントだと思います。個人的に今年は特にそれを感じられた気がしてとても充実してました。

私の RubyKaigi 歴は 2017 からで、物理開催は今の所毎回行ってるので今年で5回目の RubyKaigi なのですが、毎年行ってるとじわじわと分かる範囲が広がっている感覚があって楽しいです。最初のマジで何も分からなかったあの頃が懐かしい。もちろん今でもなんも分からんになる発表はたっぷりあるのですが…

また、流石に5回も参戦し、転職も数回やったので知り合いもぼちぼち増えてきました。おかげで今回はいろんな人と話したり、思わぬ出会いが色々あったりしてこれまた充実した時間になりました。一部話せなかった人も居るのが悔やまれる…のですが、また来年もあるので。

きっと来年の RubyKaigi でも、ますます進化していく Ruby が見られて、色々な話が聞けるんだろうなと期待し、楽しみに1年弱を過ごしていこうと思います。

写真とか色々撮ったんですが載せるスペースもタイミングもなかったので、それは別途タイミングがあったらまとめる…かもしれません。たぶん。

[PR]

ついでに宣伝なのですが私の所属しているブルーモ証券株式会社がついに正式にサービスリリースをしたので、皆様よかったら見てみてください。
投資に興味あるけど踏み出せてない…みたいな私のような人にオススメです。

この記事が気に入ったらサポートをしてみませんか?