4月16日(水)〜18日(金)にかけて松山市で開催されたRubyKaigi 2025に参加してきました。
RubyKaigiへの参加は2018, 2019, 2023, 2024に続き5回目です。
また、4月18日(金)、Day.3に「Porting PicoRuby to Another Microcontroller: ESP32」というテーマで登壇もしました。
熱い気持ちが冷めないうちに、書き綴ります。
聴講
3つくらいに絞って書こうと思っていたのですが、絞りきれませんでした。
Ruby Taught Me About Encoding Under the Hood
Between Character and Character Encoding - RubyKaigi 2025
@ima1zumi さんのKeynoteです。文字コードという一見するとすでに枯れているようにも見える技術を深堀りする楽しさについてのお話でした。
些細なことをきっかけに、自分の好きなことを見つけてそれにのめり込んでいく過程にとても共感しました。また、家族の絵文字が人間の絵文字を4つ組み合わせて表現されていることは全く知らなかったので、シンプルにとても勉強になるトークでした。
文字コードは1つの文字に1つの番号を割り振ることで文字を扱いやすくするものと認識していたのですが、こうした組み合わせで表現される文字があると、それを処理するプログラムを書く人からすると大変だなあとも思いました。irbをはじめとする文字に関わるOSS開発者にあらためて感謝したいです 🙏
このKeynoteはDay.1の一発目だったこともあり、RubyKaigiに初めて参加した人にとっても「これがRubyKaigiの、技術の楽しさです」ということが伝わる内容になっていたところも良かったです。
MicroRuby: True Microcontroller Ruby
MicroRuby: True Microcontroller Ruby - RubyKaigi 2025
@hasumikin さんのトークです。Prismを活用したコンパイラとmruby VMを組み合わせることで必要なメモリを減らすことで、従来ではmrubyが動かないとされていたデバイスでmrubyを動かせるのではないか?というお話でした。
PicoRubyのリポジトリで何かが開発されていることは察知していたのですが、内容や意図は全く知らなかったので、当日の発表を聞いて断片的な情報が1本の線につながった気がします。VMとコンパイラの組み合わせパターンが複数あることには気づきつつも、自分の頭の中で整理できていない状態だったので、あらためて整理するきっかけとしても助かりました。
自分はかねてより「PicoRubyに開発リソースを集中するとmrubyが置き去りになってしまうのでは?」という要らぬ心配をしていたのですが、思っていた以上に関係者のみなさんが密にコミュニケーションをとりながらよりよいものを目指していることがわかって、安心しました。そして、自分自身もコミットしていくぞという気持ちになりました。
Making TCPSocket.new "Happy"!
Making TCPSocket.new "Happy"! - RubyKaigi 2025
@coe401_ さんのトークです。昨年発表されていたHappy Eyeballs Version 2 (RFC8305)の話のその後についてでした。
昨年発表されていた内容に課題が残っていることがわかり、それに対応すべく課題の分析や実装を進めつつ、Ruby 3.4のリリースに間に合わせるために奔走するという緊迫感のある内容でした。聞いているだけで胃が痛かったです😅
状態遷移図がそれなりに複雑で、特定の順番で状態遷移すると想定しきれていない問題があることが判明する、という経験は自分にも覚えがあり共感できました。また、何かを実現するために、そのベース部分となる大きめな実装から準備しないといけないことがわかる、というくだりもPicoRubyのESP32対応でよく直面した事象だったので、ひたすら「大変だなあ」と思いながら聞いていました。
資料は280ページあったらしいのですが、説明の順番がきちんと整理されていたり、図がふんだんに使われていたりといった工夫のおかげでとてもわかりやすかったです。御本人にもお伝えしましたが自分の今回の登壇にあたり、@coe401_さんの昨年の発表資料を参考にさせてもらいました。ありがとうございました。
Running ruby.wasm on Pure Ruby Wasm Runtime
Running ruby.wasm on Pure Ruby Wasm Runtime - RubyKaigi 2025
@udzura さんのトークです。WarditeというRubyで実装されたwasmランタイムを開発するお話でした。WASMはいつか触れてみたいと思いつつ、後回しになってしまっているトピックなので、RubyKaigiでは積極的にセッションを見に行くようにしています。
このような方針で実装してみました→実際にやってみたらこんな問題が起こり、こういう方法でトラブルシュートしましたという構成になっていて、確実に強引ですが組込みの開発とちょっと似てるかもと思いました。
最終的にruby.wasmを動かすことまでたどり着いたとのことで、Rubyでカバーできる範囲がまた一つ拡がる取り組みに感銘を受けました。
Matz Keynote
MatzのKeynoteです。メインの話題は「当たり前のようにAIを扱う時代において、最も適したプログラミング言語は何か?」(正確な言い回しは少し違ったかも🙏)というお話でした。
話者がMatzということで最初からある程度結論が見えているという前提はありつつも、自分は大いに共感しました。普段、CursorやClineを使うにあたり「より正確な回答が得られるようにプロンプトの書き方や単語の選定に一定のルールを設けよう」といった話を時々耳にしますが、そのルールを突き詰めた先は「ドメイン特化言語」なのでは?という疑問を、自分は以前から持っていました。
もちろん、今後AIがどこまで賢くなるかは現時点で未知数なので、そうしたルールがそもそもいらなくなる可能性もあるのですが、「より正確な回答を得たい」という欲求はどんなにAIが進化しても失われることがないようにも思えます。一般的なプログラミング言語から型情報のようなAIで推論できそうな情報を削ぎ落として、極限まで自然言語に近いプログラミング言語であるRubyの方がAIが学習しやすいという話も、自分は一理あると思いました。
いずれにせよAIとは適切な距離を保ちつつ、楽しくプログラミングすることを忘れずに、エンジニアとしてお仕事をしていきたいですね。
イベント
基本的に毎日何かしらのイベントに参加したのですが、今年はシンプルなドリンクアップだけではなく、特色あるイベントが多かった気がします。
Leaner Board Game Night at RubyKaigi 2025
Leaner Board Game Night at RubyKaigi 2025 - connpass
Day.2の夜に参加しました。ボードゲームをしながら飲食を楽しむというイベントで、自然と他の参加者と打ち解けることができる素晴らしいイベントでした。ボードゲームをするとその人のキャラクターが見えてくるのも面白かったです。
遊んだのは「Not My Fault!」と「コヨーテ」、「カタカナーシ」等です。
ちなみに、ボードゲームがメインで飲食に関しては軽食だろうなーと思っていたら、ビュッフェスタイルで美味しい食べ物・飲み物がたくさんあったところもありがたかったです。
Code Party RubyKaigi 2025
コード懇親会/Code Party RubyKaigi 2025 - connpass
Day.3が終わった後に参加しました。自分はmrubyのテーブルに座って、MatzとはすみさんがmrubyやPicoRubyの今後について話しているのを見ていました。今振り返っても貴重な時間だった...!
開発も行い、2件のPRをマージしてもらいました。いつもオンラインでのコミュニケーションでもどかしさを感じていたので、対面でコミュニケーションしながら開発できて嬉しかったです。
コード懇親会で2件のPRがマージされた。#rubykaigihttps://t.co/EU1FmjgaLlhttps://t.co/ZhvV2wzK1O
— yuuu (@Y_uuu) 2025年4月18日
@.bookstore at RubyKaigi 2025
@.bookstore at RubyKaigi 2025 | @. bookstore
同人誌委託ができるとのことで「AWSとRubyではじめるサーバーレス入門」を10部ほど置かせていただきました。
@.bookstore at RubyKaigi 2025で委託販売させてもらう「AWSとRubyではじめるサーバーレス入門」を準備中。10冊ほど置かせてもらう予定です。 pic.twitter.com/vCjJM39LNm
— yuuu (@Y_uuu) 2025年4月6日
登壇もあったため、自分ではあまり宣伝できなかったのですが、終わってみれば10部すべて完売していました。購入してくれた方や販売に携わってくださった方々に本当に感謝です。
登壇に全力投球していて、宣伝らしい宣伝はほとんどできなかったのですが、自分が販売委託した同人誌10冊も完売してました✨購入してくれた方、販売に携わってくださった方、そして @_ko1 さん、ありがとうございました! https://t.co/jmRNGnQFfY
— yuuu (@Y_uuu) 2025年4月19日
登壇
無事にRubyKaigi登壇の実績を解除しました🎉
プロポーザルがacceptedされてからというもの、「RubyKaigiでトークできるチャンスは最初で最後になるかもしれない」と考えるようにして全力で準備をしてきました。
実は資料も2月のうちから少しずつ書き溜めていき、3月終わり頃には一通り完成させていました。社内でも2回ほど発表練習をさせてもらい、なんとなく話しづらい箇所は資料を手直ししたり、ノートを厚めに書いたりといったこともできていました。
それでもやはり本番が近づくにつれ緊張感は高まっていきました。Day.1, 2は無意識に現実逃避をしていたのか「いつも通りRubyKaigiに参加している気持ち」で楽しめていたのですが、さすがにDay.3は定期的にトークのことが頭を過ってしまいました。
今日トークするという実感がまだ定着してなくて、参加者として #rubykaigi を楽しめている時間と、登壇のことを思い出してアワアワする時間が交互に訪れている
— yuuu (@Y_uuu) 2025年4月18日
転機は本番直前にPearls Roomの壇上に立ったタイミングです。自分がメンターをしているフィヨルドブートキャンプ関係者、はすみさんをはじめとするRubyと組込みの属性を持った方々が目の前の席に集まってきてくださり、あまりのホーム感に自然と緊張はほぐれていきました。本当にありがたかったです。実は自分のトーク中に4回ほど画面が瞬断するトラブルがあった(結局このトラブルの原因は不明)のですが、こうしたホーム感のおかげもあり落ち着いてトークを続けることができました。
感想
気づけばRubyKaigiの参加も5回目となりました。回を重ねるごとに「楽しい」「来年もまた参加したい」という気持ちが強まっている自覚があります。
そして、5回目にして「スピーカーとして参加するRubyKaigiはこんなにも楽しい」ということを知ってしまいました。「RubyKaigiでトークできるチャンスは最初で最後になるかもしれない」という前提のもと準備をしてきましたが、トークを終えた今「これで最後にはしたくないなあ」と思っている自分がいます。
かつ、ちょうどこの記事を書いている最中にこんなポストを拝見しました。
スピーカーもコミッタもゴールではないので、目的と手段と鍛錬の方向を間違えない生活を送れることを祈っています
— 炬燵(kotatsu) (@sakahukamaki) 2025年4月20日
スピーカーはゴールではない、まさしくその通りだと思います。ここで燃え尽きたり、足を止めたりすることなく、PicoRuby や R2P2-ESP32 を進化させていきたいです。(今日もちょっとだけ開発を進めました) その結果として、来年またみなさまの前で、1年間の進捗をお見せできる機会が得られればいいなと思います。
というわけでまた来年、函館でお会いしましょう👋
追伸
松山市がある愛媛県の隣県は、自分の生まれ故郷である山口県です。山口県出身のRubyistがこんなに集まることは今後ないぞ、ということで写真を撮りました。意外と6人もいました(笑)
俺たち何?え?チーム山口🐟#rubykaigi
— neko+@B4A (@neko314_) 2025年4月18日
みなさんありがとうございました! https://t.co/c2bvOmgZsv pic.twitter.com/D2KSxoXmYm