何でも屋エンジニアのブログ

ソフトウェア関連技術、コミュニティ、日々の雑貨

RubyKaigi 2024に参加してきた

昨年に引き続き、所属しているGMOペパボ株式会社の参加支援を受け参加しました。(去年に引き続き本当にありがとうございます。)

セッション

特に印象に残ったセッションについて書きます。

Writing Weird Code

rubykaigi.org

@tompng さんによる1日目のキーノート。初日のキーノートがMatzではないのは初とのことでしたが、本当に素晴らしかったです。発表内容の技術分野については度肝を抜かれるというか、「???」「すげー」「???」「すげー!おー!」みたいな繰り返しで、こんな書き方あるのかと思いつつ、理解できない部分も多かったのですが面白かったです。その中で沖縄にまつわる内容・その後のセッションの内容なども盛り込み「RubyKaigi 2024絶対おもしろいぞ!わくわくする!」と思える発表でした。例えばフィヨルドブートキャンプさんからの参加者などビギナーの方も一定数いたかと思いますが、どのようなレベルの人でもここから始まるRubyKaigi 2024がすごく楽しみになるような発表だったと思います。

The depths of profiling Ruby

rubykaigi.org

@oshoyu さんによるGitHub - osyoyu/pf2: A sampling-based profiler for Rubyに関する発表です。C拡張ライブラリによる呼び出しのプロファイルもできるようになったおかげでHash#[]でのボトルネックを発見した話がとても印象的でした。他のprofilerとの比較を見る限り、実用性が高く今後が楽しみになる発表でした。

オブザーバビリティの観点で、OpenTelemetryで使えるとより細かい分析が可能になり、可用性向上・パフォーマンス向上への打ち手が打ちやすくなるだろうと思いました。どうやらOpenTelemetryでのprofilingの標準化の試みも進んでいるようなので、将来的にOTELで使えるようになると嬉しいなと思いました。

github.com

An adventure of Happy Eyeballs

rubykaigi.org

@coe401_さんによるRubyのsocketライブラリの改善に関する発表です。Issueについて「そんな実装になっていたんだ、たししかにのびしろがある」という印象を抱きました。その解決策としてRFCに規定されているアルゴリズムを実装するという方法をとっていて、素晴らしいなぁと思いました。

ところで、この課題はどのように発見しどのように RFC 8305 - Happy Eyeballs Version 2: Better Connectivity Using Concurrency にたどり着いたのか気になりました。

発表内でも名前が出ていた松下氏が2020年に同様の内容でRubyアソシエーション開発助成に採択されているので、この系譜を継ぎ進めた形なのでしょうか。

www.ruby.or.jp

どちらにしろ素晴らしいことで、Rubyアソシエーションの開発助成についてきちんとウォッチしておくべきだなぁと意識させられました。

Finding Memory Leaks in the Ruby Ecosystem

rubykaigi.org

Rubyは停止時にメモリ開放しないので、Valgrindでメモリリークを検知するには偽陽性が多すぎる、ruby_memcheck ではheuristics approachで偽陽性を検出しているので根本解決にならず、停止時にメモリ開放をするように実装しその機能を利用するオプションをつけたという話です。

偉業!新しいRubyを使い恩恵を受けたくなるようなものでした。Valgrindも使ったことないので触って活用したいなと思える発表でした。

An mruby for WebAssembly

rubykaigi.org

もともと興味があった発表の一つで、多少予習をして臨みました。Day1のOfficial Partyの移動の際、たまたまうづらさんとお話できて発表について説明を聞けてとてもありがたかったです。そのときの話と発表を聞いてめちゃくちゃ夢があるという印象を受けましたが、その時点では正直細かい部分などあまり内容を理解できませんでした。

この記事を書きながら改めてスライドや以下を始めとするうづらさんのブログ記事などを読みChatGPTに色々聞きながら復習していたら、そもそもmrubyにおけるRiteや.wasmのバイナリについての仕様についてわかってきて、なるほど!という感じだった。バイナリ楽しいですね。(ほんとに?)

udzura.hatenablog.jp

udzura.hatenablog.jp

udzura.hatenablog.jp

wasmバイナリにどんなセクションがあるか、とか、使い方とは、みたいな話は以下の本をサクッと読んでください。

www.oreilly.co.jp

とのことで、興味が出てきたので読んでみようと思った。

LT

rubykaigi.org

「Drive Your Code: Building an RC Car by Writing Only Ruby」ではラジコンを作りたくなり、「The Journey of rubocop-daemon into RuboCop」ではは Rubocop Daemon 導入の裏話的なものを聞けておもしろかったです。movさん主催のAfter Partyでは@forteさんとこれについて話せたのもよかったです。

Speeding up Instance Variables with Red-Black Trees

平衡二分木の一種である赤黒木を利用して高速化を行う話です。アルゴリズムの重要性やパワーを感じる発表でした。アルゴリズムやデータ構造、コンピューターサイエンスの基礎的な部分の知識の不足がボトルネックになっていると感じる場面が多く、腰を据えてやらねばと思っていた自分にはタイムリーな発表でした。

感想やセッション以外のできごと

コミュニティ

自分はStep-to-Rails-Expert.rbというRailsのコミュニティを立ち上げ2016年から5年ほどやっていました。(今は大倉さんが引き継いで開催してくださっている。)

そこで出会ったみなさんとかなり久々に再開できてStep-to-Rails-Expert.rbの同窓会みたいになったのが最高でした。当時初心者だった方はエンジニアとして活躍されていて、当時中・上級者だったみなさんは要職についてらっしゃって、年をとるはずだ...としみじみ。たくさん嬉しいことあったけど、参加者の方から「当時の中級者の集まる場所としてとても良い場所で、自分もとても楽しんでいた」と言ってもらえたのが特にうれしかったです。

また、当時初心者だったころ、スタッフしてくださっていた方に

のようなことを言ってもらえて「やっていてよかったなぁ」とすごくうれしかった。新型コロナウィルスの影響でリモート開催を余儀なくされ、徐々にモチベーションがなくなり開催しなくなってしまい、StepRailsExが自分の中で良い感じに終わった感じや区切りがついた感じがなかったのだけど、何年か経ちこんな形で報われるとは思ってなくてうるっときました。

あっきーさん、触れてくれてありがとうございます! note.com

僕も参加し再開したいなと思っていたので、今年何かしら動かしていこう。

Rasberry Pi PicoでPicoRubyを試した

やんちゃさんにRasberry Pi Picoを頂きました。hasumiさんの発表は聞けていないんだけど、ずっと触ってみたいなと思っていました。やんちゃさんが配っているのは知っていたがもっと適切な人がいるだろうと思っていたのでもらうつもりはありませんでしたが、Day2の夜に話す機会があり一枚余っているとのことで頂きました。会期中に試せず申し訳なかったのですが、この機会がなければ触ることなかったと思うので本当に感謝しています。帰ってすぐRasberry pi pico と picoruby でLチカさせる - ebihara99999 をやりました。面白いので何か作ろうと思います。

懇親会

そのきっかけとなった 株式会社万葉さんと 合同会社春秋さんとの懇親会もとても楽しめました。普段お仕事のお礼や挨拶、沖縄開催本当に楽しいですーという話、テックの話、エンジニアリングマネジメントの話などいろいろ話せてとても有意義な時間でした

その他各社との交流や社内メンバーとの懇親も時間をとってゆっくりできて、RubyKaigiならではだなぁと思いました。色々なトピック話せてとても面白かったです。特にmovさん主催のAfter Partyではたくさんの方と交流ができました。お話したみなさん・主催して頂いたmovさん、ありがとうございました。

KaigiEffect

学ぶこと・アウトプットすること・コードを書くことというのをもう少し気楽にやりたいなと思っていたところ、会期前に発見したしおいさんの GitHub - shioimm/til: Today I learned. がすごくいいなと思っていたので(どこかの文化かな)作り、 総合目次 - 苦しんで覚えるC言語 をやっている。

Rubyソースコードをはじめ、ミドルウェアなどもC言語で実装されているもの多く、ソースコードリーディングするときに困っていたのでやっている。「わからない」と思うとき、それはC言語が分からないということではないだろうことは自覚しているが、それはそれとしてやっておいたほうが良いと思うので。また、前述したアルゴリズムの話で、回答例・解説などがC++で実装されていることも多く、そこでもC系列の言語の記法に不慣れで読みづらかったりしてあきらめてしまう経験があったので、その意味でもよいかなと思っている。

また、雑に何か書くのやはりScrapbox(現Helpfeel Cosense)が良いなと思いちゃんと使うことにした。

あとmrubyは会期中にビルドして使えるようにしておいたのと上述のLチカ周りも取り組んだ。

これから取り組むネタや課題を見つけるというのが大きなテーマだったが、いろいろ持ち帰れたので復習したり色々試しつつ、何かしらに取り組んでいきたい。