RubyKaigi 2026
はじめに
今年も RubyKaigi に行ってきた。開催地は函館。北海道には何回か行ってるけど函館は初だったのでそれも楽しみの一つだった 🦑
今回は会社でやってた事前勉強会に行けてなく、運営にも関われていなかったからいきなり当日を迎えた感じになっており、行く直前はぼっちにならないかな〜とか、セッションの内容分かるかな〜といった不安が強かったのが正直なところ。結果的には久しぶりに再会した RubyFriends と話せたり、セッション聞いて刺激をもらったりとなんだかんだ楽しんでいた。カンファレンスはそういうもので、行ってみないと分からない。
セッションの感想は気になったものを抜粋して書きます。セトリはこちら → RubyKaigi Schedule.select - My RubyKaigi 2026 set list
Day 0
飛行機で前乗り勢だったんだけど、航空管制システムに障害があって遅延や欠便になったりでめちゃくちゃ大変だった。。。運良く自分が乗る便は 20 分遅延で済んだけど、欠便になって新幹線で向かう人とか、前日の地震で船で行くイベントが中止になったりと開催前から試される RubyKaigi になってた。
まずは函館を感じないとということでうに専門店 世壱屋に行ってうに本鮪 5 種食べ比べ丼を食べた。当然美味しかったんだけど、このあと出てくる別のお店のほうがもっと美味しかったので食べるならそっちをおすすめする。

その後は末広町にあるWhite Seedでクラフトビールをめちゃくちゃ飲んだ。RubyFriends ができたり地元の人がご馳走してくれたりして Day 0 からめちゃくちゃ飲んでしまった。お店の人は 3 年くらい前に池袋のビール屋で働いていたらしく、東京のおすすめ情報も教えてもらえてありがたい!


ちなみにオフィシャルパーティーにあったクラフトビールの一部はこことのコラボビール。1500 リットル作ったらしい。 ここは五稜郭公園の方にも店舗があって、期中はそっちの店舗が賑わってた。
Day 1
会場の函館アリーナに到着。入口前で恒例の撮影。

Liberating Ruby's Parser from Lexer Hacks
同僚の ydah さんのセッション、英語で発表していてすごい。英語かつ内容も難しかったのでその場で理解するのはできなかった...
内容は Ruby の * や { が文脈によって全く異なる意味を持つという話から始まる。* は乗算にもスプラットにもなり、{ はハッシュリテラルにもブロックにもなる。それを lex_state という 13 bit のフラグで文脈を管理しながら対処してきたというのが現状の構造で、その結果として Parser と Lexer が密結合になって保守性が下がっているという問題意識の話。
From Live Code to Sound: Building a Ruby Live Coding Engine
去年の RubyKaigi でも asonas さんのセッションを見ていたので、今年も楽しみにしていた。
Ruby でライブコーディング音楽環境を作る asonas/strudel-rb の話。"bd hh sd hh" のような Mini-Notation と呼ばれる文字列からビートを生成する。sound("bd hh sd hh") を実行した瞬間に音が流れた。聞いている人も音がかかると若干首が揺れだす。asonas さんの発表は毎回テンション上がるんだよな〜。
中身は Mini-Notation のパースから、サイクルとタイムスパンへの展開、サブチャンク単位でバッファに流し込むスケジューラー、サンプルプレイヤーとシンセプレイヤーの実装…と、音が鳴るまでの仕組みが順番に解体されていく構成だった。120 BPM ÷ 4 = 0.5 サイクル/秒、つまり 1 サイクル 2 秒で BD HH SD HH が等間隔に並ぶ、みたいに数字で出されるとイメージしやすい。
track(:arp) で音が鳴り、_track(:arp) でミュートされるという細かい設計の話もよかった。コメントアウトじゃなくて _ で止めるのは洒落てる。これが成立するのは、シンタックスエラーが出ても音が止まらない仕組みが前提にあるから。エラーが起きたらその評価結果は捨てて「最後に成功したパターン」を流し続ける、という割り切った設計になっていて、だからコメントアウトみたいに戻し忘れる心配もないという話だった。
このセッション中に流れていた BGM もベース・ハーモニー・メロディ全部 strudel-rb で書かれているとのこと。「これも全部コードで書いてます」と言われると普通に痺れる...
2 日目の Afternoon Break でライブコーディングライブ(?)があったんだけどこれもすごすぎた。譜面のコードが超複雑そうに見えたけど、リアルタイムで編集して演奏するのかっこいい

ブース
書籍ブースで『技術記事を書く技術 ITエンジニアの価値を高めるアウトプットのすべて』と『エンジニアリングマネージャーお悩み相談室 日々の課題を解決するための17のアドバイス』を購入。1 冊目は Hello にも書いたけど、このブログを作るきっかけになった。2 冊目は sugamasao さんが選書した本でおすすめしていただいたので即買。目次を見てまさに!!というやつだったので読んで仕事に活かしたい。
Official Party
オフィシャルパーティーの会場は函館国際ホテル。マグロの解体ショーをやってて、捌いているところはチラッとしか見れなかったけど美味しかった。クラフトビールも北海道ならではのラインナップで良かった!Brasserie Knot 飲めたのラッキー!
次の日は朝からイベントに参加予定だったので二次会は行かずに直帰した、偉い。


Day 2
Dynamite Training
朝から hacomono さん企画の Dynamite Training に参加。30 人ほど集まってクロスフィットのグループワークアウトをした 💪
クロスフィットは日常動作をベースにした高強度ワークアウトをグループでやる種目(詳しくは CrossFit Omiya の説明 を参照)。
去年末からクロスフィットのジムに通っているので、RubyKaigi 中もトレーニングできてありがたい!海外の方も何人か来てたけど、英語が拙すぎて簡単なコミュニケーションしかとれず悔しい。。。一応 Duolingo は 600 日継続しているけどダメダメでした 😅
ワークアウト後は会場前の函館湯の川温泉に行って朝活完了。
No Types Needed, Just Callable Method Check
タイトルからして主張が強いw
最近の Ruby は RBS / Steep / Sorbet と型まわりが盛り上がってるけど、発表者の問いは「そもそも型のメリットって、結局 NoMethodError を防ぐところに集約されてない?」というもの。AI が大量にコードを書く時代になってガードレールは前より要るようになったけど、それが型注釈である必要はあるんだっけ?という整理だった。
型を書くメリットを
- ドキュメンテーション(メソッドの IF が分かる)
- インターフェースファーストで考えられる
- 型でエラーに気付ける
の 3 つに整理した上で、AI で書く・読むスピードが変わったなかで、人間が型注釈を書いて読むコストとリターンの収支が前と違うのかも、という視点はなるほど〜という気持ち。
その割り切りで作ったのが method-ray という gem。Rust 実装で、型注釈なしで「そのメソッドを呼べるか」だけを静的に検証する。型のメリットである NoMethodError 防止という一点だけにフォーカスしたもの。
自分は TypeScript をずっと書いてきてから Ruby を触ったのでずっと型が欲しいと思ってたけど、AI 時代で人が手でコードを書く頻度が下がるのなら確かに型は無くても静的解析する方法さえあれば良いのかも?という気持ちになった。新視点で面白いセッションだった。
ruby.wasm also enables JavaScript to call Ruby libraries.
発表者は 2023 年からずっとブラウザで Ruby アプリを動かす方向で発表を続けてきた人らしく、その流れで Ruby → JS 方向の API はだいぶ整っているそう。今年のセッションはその逆方向で、「JS から Ruby を呼ぶ」を実現したいという話。
JS と Ruby はお互いのメモリ空間を参照できない、だから Proxy Class を経由しているらしい。Ruby → JS 側はすでに .to_js で Ruby のオブジェクトを JS::Object というラッパーに変換できて、method_missing で JS のプロパティアクセスを実現していたり、new メソッドが呼ばれたら JS のコンストラクタを叩く(new は JS だと演算子なので Ruby からそのままだと呼べない)、ブロックを渡したら JS の callback に変換、みたいな細かい工夫が積まれている。
なかでも js_true / js_false 定数の話が面白かった。JS の falsy 値(0 や "" など)を Ruby の if 文に直接渡すと、Ruby から見ると false でも nil でもないので常に truthy 扱いになっちゃうという罠があって、それを js_true / js_false できちんと判定できるようにしているとのこと。同じ真偽値でも扱いが違うからこの辺は苦労しそう。メソッド末尾に ? がついていたら Ruby の真偽値に変換する設計も、JS のメソッドには ? がつかないから衝突しないし、Ruby 側の真偽値メソッドの慣習にも乗れて綺麗だなと!
JS → Ruby 方向の用途が広がらなかった理由として挙げられていたのは、Wasm バイナリサイズが大きいこと(31MB、圧縮後でも 8MB)と、JS 側のサポートがそもそも薄かったこと。それでも JS → Ruby が進めば嬉しいユースケースとして、マークダウン ⇔ プレーンテキスト変換みたいな共通ロジックの一本化と、Rails のロジックをブラウザでそのまま動かすケースの 2 つが紹介されていた。
特に後者がイメージしやすかった。Rails の金額計算まわりは Decimal を使っていることが多いんだけど、JS には組み込みの Decimal 型がないので、同じ計算をブラウザ側でやろうとすると、JS の Decimal ライブラリを選んで Ruby のエッジケースまで互換性が取れているか担保するテストを書くことになる。文字にするだけでも結構しんどそうで、Ruby をそのまま呼び出せるならこの不毛さが一気に消えるという話は夢がある。
実装中の API の名前のひとつが「Ruby's Blanket」で、これは函館出身の GLAY の曲名にちなんでいるらしい。
夜
Findy Drinkup へ。他社の AI 活用の話をたくさん聞けたのが良かった。
ここでもクラフトビールが飲み放題で最高だった... BREWMIN は初めて飲んだけどかなり美味しい。


Day 3
Ruby Releases Ruby
Ruby と RubyGems / Bundler のリリースを「Ruby のコードで」徹底的に自動化していく話。Ruby 本体のリリース回数は 2022 年に 9 回だったのが 2025 年には 14〜15 回(約 1.5 倍)まで増えていて、RubyGems 4.0 にいたっては「2 週間に 1 回」が目標だったところを今は 1 週間に 1 回ペースで回せているらしい。
それを支えてるのが、GitHub Actions で 1 コミットあたり 120 ジョブ規模の CI、In-source build と Out-of-source build を使い分けるビルド方式、Ruby 製の mitamae によるインフラ構成管理、chkbuild によるテスト、rubyci でのログ集計……と、見事に「全部 Ruby で書いてある」状態。「Ruby が Ruby をリリースする」という言葉が比喩じゃなくて文字通りの意味になっていてすごい(小並)。
リリース作業も以前は手動チェックリストやマークダウンの手順書を見ながら、特にセキュリティリリースは深夜まで作業……みたいな世界だったらしいけど、今は GitHub の Repository Dispatch でタグを push したら自動でワークフローが走るようになっている。さらに RubyGems と Bundler 側は、特定ラベル付き PR を自動で Cherry-pick → CI 通ったら自動マージしてバックポート、というところまで仕組み化されているとのこと。
夜
freee Drinkup へ。Ruby のメソッドビンゴでなんと優勝しました。使ったことないメソッドがたくさんあった。


ドリンクアップ後は White Seed の店員さんにおすすめしてもらった サクパマタパ でジンギスカンを食べた。シキンボ(鹿の肉)と生ラムが超うま。焼いてもらって食べるだけなのも良かった。

シメは養和軒のラーメン。まあまあ良い値段はするけど味はうーんという感じでリピ無しでした。煮卵はめっちゃ美味しかった、煮卵は。

Day 4
この日は観光&帰りデー。
五稜郭公園
午前中は五稜郭公園までランニングして桜を見てきた。桜めっちゃ咲いてて綺麗だった〜〜〜。五稜郭タワーには行けなかったけど満足。観光客が多い。
STRAVA の記録つけたら星型になるかと思ったけどそんなことはなかった。


海鮮丼
朝市にある海道でウニいくら帆立丼を食べた。Day 0 で食べたウニ丼のウニより全然うまくてビビった。また函館来ることがあったら絶対に来る。
会計は現金しか使えないので注意。自分は手持ちが足りずコンビニへガンダしました 😅

ビール
White Seed 納め。せっかくなので RubyKaigi とのコラボビールを 2 つ飲んだ。居心地いいお店だったので名残惜しい!

その後は徒歩 3 分くらいで行ける ozigi brewing へ。併設の醸造所で造られたビールが飲めるので安い、最高!常に 10 タップくらい繋がってるみたい。
アイヌネギの醤油漬けがうっますぎてこれだけで 3 杯は飲める。



ラストラーメン
RubyKaigi をシメる最後のラーメンは麺厨房 あじさい。函館駅内でシュッと食べれる割に結構美味しかった。

おわりに
今年も楽しい RubyKaigi でした!運営やスポンサー企業に感謝。来年は宮崎開催らしいのでまた行けるといいな〜
