RubyKaigi 2024

2024-05-15〜17 と RubyKaigi 2024 が沖縄で開催されて行ってきたのでその記録。今月中に書いた。えらい!

0日目

以前は全国あちこちに出張してたんで、沖縄にも4回くらい行ったことがある。今回は12年ぶりの沖縄。 仕事終わりに飲みに行ってあちこち回って朝5時くらいにステーキで締めだった思い出が…。

しかし沖縄遠い。最近は出張することもないどころか家からほとんど出ることもないので余計遠く感じる。うちから6時間半くらいだった。

那覇空港からゆいレール。ゆいレールといえば開業2日目に乗ったことがあった。ホームの位置とずれて停まったり、わりと運転がひどかったりした。さすがに今はそんなことはない。Suica が使えるようになってて便利。

会場の「那覇文化芸術劇場なはーと」に行ってプレ受付。

ESM Night Cruise at RubyKaigi 2024

esminc.doorkeeper.jp

ホテルにチェックイン後、 ナイトクルーズへ。

永和さんの RubyKaigi ナイトクルーズは 2019 の福岡でもやってたことは知ってたけど、その時は乗れなかったので初。 天候はイマイチだったけど、海無し県民なので海というだけで高まる。良かった。

1日目

Writing Weird Code

rubykaigi.org

キーノート。

RubyKaigi ではときどき TRICK というおかしなコードの発表会がある。前回はたぶん 2022 だった。 TRICK 2022 (Returns) - RubyKaigi 2022

今回のキーノートはひとり TRICK だった。すごかった。変態だった(いい意味で)。 そのうち録画が公開されると思うので、これは Ruby に興味ない人にも見てほしい。

来年は TRICK が開催されるらしい。楽しみ。

Namespace, What and Why

rubykaigi.org

Ruby に名前空間を導入して、一つのプログラム内で同じ名前の異なるクラスやモジュールを使えるようにしようというもの。拡張ライブラリも対応するらしい。 同じライブラリの複数のバージョンを混在させたり、全然別のライブラリだけど同じ名前のを混在させたりできるようになりそう。

Ruby に変な名前のライブラリが多いのは名前空間が一つしかないからというのも理由だと思ってるんで、名前が重複してもよくなれば一般的な名前のライブラリが増えるかもしれないなーと妄想したり。

すばらしい。夢があるなー。楽しみ。

An adventure of Happy Eyeballs

rubykaigi.org

Ruby の Socket.tcp を RFC 8305 - Happy Eyeballs Version 2: Better Connectivity Using Concurrency をに対応させるやつ。

Happy Eyeballs は、ホスト名解決で DNS の A(IPv4) と AAAA(IPv6)の両方のレコードを返したり、複数のレコードを返したりする場合に、並列で接続を試みて最初に接続できたやつを採用してほかは切断するってものらしい。

こういう、課題が明確に決まっててそれを実直に解決するというの結構好き。

スレッド使って実装してたけど、リソース食いそうなのがちょっと気になった。Fiber で実装するわけにはいかないのかな。Fiber よくわかってないけど。

RubyKaigi 2024 Official Party

https://ti.to/rubykaigi/2024-party

夜は海辺の会場でオフィシャルパーティー。海無し県民なので海というだけで(ry

2日目

RuboCop: LSP and Prism

rubykaigi.org

rubocop --lsp 使ってる。チョー便利。

Good first issues of TypeProf

rubykaigi.org

VSCode の拡張で Ruby を便利にするやつ。 VSCode だけで便利になってもなーと思ったけど、なんか LSP を使ってるような雰囲気だったので Emacs でも便利に使えるのかもしれない。

Running Optcarrot (faster) on my own Ruby.

rubykaigi.org

Rust による Ruby 実装の話。

Leaner YAKINIKU Party at RubyKaigi 2024

leanertechnologies.connpass.com

夜は Leaner さんのパーティーに参加した。

3日目

Ruby Committers and the World

rubykaigi.org

frozen string literal

将来(Ruby 4 ?)文字列リテラルがデフォルトで frozen になるという話。 今まで "hoge" と書いたときは +"hoge" と同じだったんだけど、-"hoge" になる感じ。 YJIT とか Ractor には良さそうな雰囲気。

まあどっちでもいいんだけど、+"〜" と書かないといけないのはちょっとダサいというのはわかる。

あと Ruby 3.4 の対応はビミョーな気がする。

s = "hoge"
s.frozen?  #=> true
s.upcase!  #=> warning: literal string will be frozen in the future

frozen だけど変更可能というのが中途半端なんだよなぁ。

コメントで型指定

いまいち rbs に乗れないのは別ファイルだからなんだよなぁ。 自分は YARD 形式で型を書くようにしてるんで、それが静的にチェックされるようになったら嬉しい。 できれば人間にも読みやすい形式で。

GVL 要る?

Ruby で GVL がなくなるとマルチスレッドで動かなくなるやつたくさん出てくるだろうな〜。

async / await

async / await は JavaScript が並列処理できないから、コールバック地獄から抜け出すために苦肉の策でつけた構文だと思うんで、Ruby に欲しいという気持ちはわからない。 シングルスレッドで並行処理したければすでに Fiber があるしなぁ。

Speeding up Instance Variables with Red-Black Trees

rubykaigi.org

赤黒木はアルゴリズムの勉強をチラ見したくらいで何もわからん。

ERB, ancient and future

rubykaigi.org

ERB の話。松江でも聞いたような気がする。 自分は咳さんファンなので何度でも聞ける。

Using Ruby in the browser is wonderful.

rubykaigi.org

ruby.wasm の話。

require_relative が使えるようになるのは便利だなー。今までは組み込み済みの .rb ファイル以外を読もうとしたら、HTML に <script type="text/ruby" src="..."> で読むしかなかったんで、require_relative が使えるとかなり Ruby ぽく書けるようになる。

自分は最近プライベートで書くやつはブラウザで動くやつも JavaScript じゃなくて全部 ruby.wasm で書いてるので、どんどん便利になってほしい。

Matz Keynote

rubykaigi.org

Performance 重要 x 4

Ruby2(2.0 ではない)という言語を構想してたときの機能がだいたい今の Ruby には実装されているらしい。

Namespace がいい感じになったら Ruby 4 にしてもいいかもしれない。みたいなことを言ってた気がする。

Closing

次は愛媛の松山らしい。また遠いなー。うちからだと飛行機でも6時間くらい掛かりそう。

RubyKaigi 2024 After Party sponsored by mov

connpass.com

After Party は「のれん街」といういろんな店が入ってる建物を貸し切りにして行われた。

似たようなコンセプトの去年の松本の After Party を思い出して、また動けなくなるほどギュウギュウになるのか!?と思ったけど、結構余裕があってちゃんと椅子に座れてよかった。

4日目

遅めの飛行機にしたので、独りで那覇をうろうろしてた。

飛行機の到着が少し遅れると家までの終電に間に合わなくなるくらいのやつだったので、ちゃんと間に合ってよかった。しかし最初からもうちょっと余裕のある便にしとくべきだった。

ホテルチェックアウト後に「玉城豆腐のみそ汁屋」で遅い朝飯。

その近くの公園にでかい木があった。異国感ある。

海まで歩いた。見晴らしがいいかと思ったけど道路が視界を横切っていてイマイチだった。水が綺麗。

12年ぶりに首里城にいった。2026年に再建完了らしいので、その後にまた行ってみたい。

その他

エス・エム・エスさんのブースで缶バッジもらった。RubyKaigi 終わった後も使えそうで良い。

2日目の午前中は弊社のブース番してたけど暇だったので他のブース回ってたら、マイベストさんのところで何か高級そうなものがあたった。

家族に聞いてみたけど価値がわかるのが別居の一人だけだったのであげることにした。

3日目にして弁当とブルーシールアイスにありつけた。

3日目くらいから喉の痛み。人と喋りすぎたせいかと思ってたら、4日目くらいから咳。6日目の夜に37.4℃くらいの微熱。と思ったら翌日には平熱に戻ってた。 まぁ、1000人以上一箇所に集まって毎晩飲み会してたら何かしらに感染もするわなー。 症状としては軽い風邪っぽいけど、他の人のツイートを見てると自分も COVID-19 だったのかもしれない。 各位ご安全に。

所属会社がスポンサーになって二桁人数の社員が参加してブースも出してわいわいやる RubyKaigi は今回で3回目だったんだけど、いまだに慣れない自分がいる。