ねこものがたり

いちにちいっぽ

RubyKaigi 2025に参加しました(その2)

前の記事はこちら

RubyKaigi 2025に参加しました(その1) - ねこものがたり

前回書ききれなかったセッションの感想を書いていきます。

Memory, GC

RubyKaigi全体的に一番ときめいたのがメモリ周りの話でした。 特にメモリアロケーションGCは日頃Rubyでコードを書いている時点では全然意識しない領域の1つなので「全然わかんなないなー未知の世界だな」と思っていたため「こういうのCがわかればわかるかな」と思って去年Cを少し勉強して知識がついたから、話が少しわかったり自分で考えたりする量が増えたのがときめいた大きな要因かもしれません。

と言ってもセッションは難しくてわかったのはほんの一部です。@tenderloveさんの話はinitializeをインライン化することでClass#newを早くするという話だったはず。 その中で印象的だったのは、位置引数とキーワード引数の話で、キーワード引数はメモリ上で並び替えが発生するから位置引数に比べて遅いという問題があるそうです。@tenderloveさん曰く、キーワード引数でも速くするから待っててとのことでしたがどうやって速くする案があるのか質問してみればよかったです...(この点が印象に残ったという感想だけは伝えました!)

発表の序盤に、「コード読む前に、自分ならどう実装するか考えることで、知りたいポイントを明確にしてからコードを読むようにしている」ということをおっしゃっていて、めちゃくちゃ共感しました。それと同じような感じで「自分だったらキーワード引数の処理が遅い問題をどうやって解決するかな」と考えてみていますが、全然何も浮かびません!笑

@peterzhu2118さんの話も全然わかってないのですがRubyGCには足りないものがあって、より効率の良いなんとかというアルゴリズムを使いたっり並列化したりして今より良くしたいという話だったと認識しています(ほんまかいな)。

最後の方は「MMTKっていうのがあるから自分のGC作って楽しんでな!」みたいな感じの締めだった記憶。MMTK自体は以前も何かでみた記憶があった気がしたけど、その記憶よりMMTKのイニシャルコミットの方が新しいので記憶が捏造されたんでしょうね。どういうことなんだ。

GCというキーワードで言うとToward Ractor local GCこそ聞きたかったのですが、うっかり時間を過ぎてしまい聞けませんでした。超残念。お昼後のセッション間に合わないがち。。。

Continuation is to be continued by @fetburner

Continuationってなんだ?って思って全然想像つかなかったので「一番わからないやつだから聞いてみよう」と思って選びました。 話の内容はイマイチ理解してないんですがcallccの話について楽しそうにしている@joker1007さんの姿を目撃したので「そういう系か」ということはわかりました。

State of Namespace by @tagomoris

きっと今一番注目されているであろうNamespaceのお話。 なるべくはやくマージしてしまいたい・できそう、みたいな話があったのでとっても期待しています。

というのと同時に「Namespaceって便利そうだけど、使う側がちゃんと使わなかったらカオスになったりするのかもしれないな。イメージとしてはダークローンチフラグを中途半端に残しまくって秩序がなくなる感じ」という疑問が浮かびました。まだ正確なIFがわからないので話を聞いた上での想像でしかないですが、バージョン違いの同一gemを同時にバンドルして使いたい時というのがNamespaceの使い所の1つという理解をしてるのだけど、それの積み重ねでNamespaceによってバージョン違いを大量稼働させちゃって、本当は全体で1つのバージョンにできるのにしきれてない状態とか起きそうとふと思ったのでした。

この懸念は的外れかもしれないけど合ってるのかもしれないので、今後お会いしたら質問してみたいと思います!

dRuby on Browser Again! by @youchan and @ledsun

@youchanさんと@ledsunさんが2人で登壇するとか聞かないわけにはいかない。

私が@youchanさんと知り合ってまもない頃は@youchanさんがOpalの話をたくさんしていた記憶があります。dRuby on Browser ”Again”というタイトルについて、Opal以前はdRubyをブラウザで動かすぞという話があったんだと紹介してくださっていました!

私全然dRuby触ったことがないんですが、dRubyって分散処理が得意なのだから、データ処理を効率的に行いたいとき、つまりあまり目に見える部分じゃない処理で使うっていう先入観を持ってしまっていて、複数ブラウザでデータを同期的に表示させるというのは私にとっては目から鱗な感じでした。でもリモートのオブジェクトを操作したり共有したりするのがdRubyというのを考えると、もしかしたら王道な用途だったりするのかもしれません!

@youchanさんと@ledsunさんではやりたいことが一緒でアプローチが違うっていう話だったんですが、何がどう違ったのかちょっと朧げになってきたので、ゆっくり見返したいと思います。

Running JavaScript within Ruby by @hmsk

@hmskさんはずっとRubyKaigiのスタッフをされていて、意外と初登壇らしいです。 で、セッションはなんかいろいろ面白いなーって思ったはずなんですけど、終盤のRubyのコードなのにJSが動いててraise Errorで例外投げてるのにそれをtry ... catchしてて!?!?!?ってなったことしか覚えてません。登壇前にはすれ違えたので挨拶はできたのだけど登壇後は話せてなくて感想を伝えられなかったです。伝えるとしても「なんか最後不思議でした」くらいしかなかったけどでも伝えられたらよかったな。


書き切ろうかと思ったけどまだまだあるので参加ブログ(その3)に続きます....