RubyKaigi2026函館で発表しました
2026-05-01
EventRubyKaigi 2026 函館でRuby on NES - how to make a smallest ruby everという発表をしました。メインセッションでの登壇は2019年ぶり。
Day 0
松江から羽田経由で函館空港に飛ぶプランだったのだけど、羽田全体が管制トラブルでダウンするというまさかの事態に。仕方ないので東京から新幹線で函館まで。
Day 1
- When Can You Skip a Test? Tracking Test Impact - RubyKaigi 2026
- ある変更に対し、影響を受けるテストだけを実行させたいという話。定数の参照箇所を列挙するのは難しいが、YARV bytecodeを覗くとか頑張ってて面白かった。(TracePointにそういうイベントがあるべきという話なのかもしれないけど)
- これ実際どれくらいの精度でてるんかな?「必要なテストが実行されなかった」というケースがたまに発生するのであれば、結局全部動かさないといけなくて・・・みたいになりそうだが。
- mruby on C#: From VM Implementation to Game Scripting - RubyKaigi 2026
- Unityに組み込めるRubyを作った話。スライドが2時間話せそうなくらいあって面白かった。C#のasync/awaitとRuby側をうまく組み合わせるのどうやるんだろう(これだけで30分話せそうだが)
- mruby in the 8-bit world: mruby VM for Zilog Z80 - RubyKaigi 2026
- Z80 CPUで動くRubyを作った話。Z80用のCコンパイラがあり、それを使ってmruby VMを作ったということだった。自分のタイトルにsmallest everとか書いてしまったので抜かされたかと思っていたが、セガ・マスターシステムはメモリ8KBなのでセーフだった(?)。
- From Live Code to Sound: Building a Ruby Live Coding Engine - RubyKaigi 2026
- 音枠。TwitterでPure Dataを純粋にDAWとして使ってるという人がいて、Rubyでもそういうことしてみたいんだよな。
- Discordで「出力を16分割する理由がわからんかった」と書いたところ、夜のパーティで理由を教えてもらった。長すぎるとレイテンシが増えて、短すぎるとノイズの原因になる(だったかな?)ので、そのバランスを考えて16分割しているとのこと。
- TutorialKit.rb: interactive Ruby gem docs powered by Wasm - RubyKaigi 2026
- ブラウザ内で完結するRubyのチュートリアルを作る話。Rubyというか、Railsを丸ごと動かすためにいろいろ頑張っててすごかった。
- room Cにミラーボールがあることに気づく。
yhara — 2026/04/22 17:50
room C、ミラーボールがあるので、誰か使ってほしいな
Day 2
- No Types Needed, Just Callable Method Check - RubyKaigi 2026
- TypeProfと似ているが、TypeProfが「型を自動生成してくれる」もの(生成物はファイルとして出力され、そののち人間がそれをメンテする)なのに対し、これは生成された型は保存されず、「人間は型を意識しなくてよい」という方向に寄っているという、ツールとしての思想の違いみたいなものが面白かった。まつもとさんはこっちの方向性のほうが好きそう。
- Programming with a DJ Controller - not vibe coding - RubyKaigi 2026
- DJコントローラを「活用」する話。RubyKaigiっぽくて良かった。
- Pure Intonation on Browser: Building a Sequencer with Ruby - RubyKaigi 2026
- 音枠。シャサフ式が出てきてびっくりした。午後休憩では微分音音楽が大音量で流れてて良かった。
- From C to Ruby: Porting Doom - RubyKaigi 2026
- DoomをRubyに移植する話。グラフィックはGosu gemだけど、ほとんどの機能を使っていない(ピクセル単位で描画しているため)とのこと。あと、次はアセンブラでmruby VMを書いてレトロゲームコンソール(機種名忘れた)で動かすぜとか言ってた。Ruby移植バトルも新時代に突入か・・・!?
- Chasing Real-Time Observability for CRuby - RubyKaigi 2026
- 出力が3D映像なプロファイラの話。VRゴーグルつけてデバッグしてたらかっこいいよな。
- Integration of PRK Firmware and R2P2 - RubyKaigi 2026
- はすみさんがやりたいことを先にやってしまう話(ではない)。でもこういう話、リアルでいいよな。
- 松田さんから返信。せっかくなので最後のデモのときに点けてもらうようお願いする。
a_matsuda — 2026/04/23 16:37
そういえばミラーボールですが、ご要望あればふつうに稼働させられますよ。関さんのやつとかで使うのはアリだったかもですねえ
- スライドを手直ししてたら25時になってしまった。
Day 3
- 朝1でPicoRubyワークショップの整理券列に並ぶ。というか列の存在に気づくのが遅れて後ろに並んだところ、ラスト1枚をいただいてしまった。なんと。
- そのあとは通訳打ち合わせへ。2019年のときはスライドを印刷したものを用意されてたと思うのだけど、今回はタブレットを使う運用になってた。前日夜にスピーカーノートを微調整したところ、「それ(最新版)があったほうがいい」という話にあり、急遽再提出することに。タブレットになっててよかった・・・。すいません。
- そのあとはデモの練習をしていたが、ここにきてRUBY CATCHERのBGMがちゃんと鳴らないことに気づく。いろいろ試したところ、Mesenを前のバージョンに戻したら治った。うーむ。
- 昼休憩が始まったところでroom Cに行き、接続テスト。スクリーンを見ながらタイプする練習をしないと・・・と思っていたのだが、なんと卓上にスクリーンをミラーしたサブモニタがあった。すごすぎる。
- それ以外にも、卓上マイクとピンマイクを選べるようになってたり、進化を感じた。
- ミラーボールは、色は白のみだが回転速度を変えられるらしい。といっても相場がわからないので、そのままでお願いした。スタッフの操作で起動するため、最後のデモの流れを2回ほど練習。
- 今回はWindows機で、普通にやるとノーパソ側にOptcarrotのウィンドウが出てしまい手間取ることがわかったので、スクリーン側がメインになるようWindowsの設定を変更。事前に試しておいてよかった。
- 接続テスト、人がいっぱいいて、終わったらこれになった(なんだか安心した、の意)
- お昼ご飯は中庭で函館ナントカ食堂さんのモツカレーをいただく。これで3種類全制覇。おいしかったです。
- そのあと、PicoRubyワークショップへ。発表前だけど、さすがにもうやることもないので、気が紛れて良かった。Board43はLEDパネルだけでなくボタン、ビープ音、加速度センサと盛りだくさんで、管理画面も非常によくできててすごかった。
- Smalruby: Visualizing Ruby with Bidirectional Transpiration - RubyKaigi 2026
- 弊社の高尾さんの発表。Opal使ってるんだっけ?とか思ってたが、動くのはScratch VMだからRuby処理系は入ってない(あるいは、Scratch VM上でRubyが動く)のだった。
- Ruby on NES - how to make the smallest ruby ever - RubyKaigi 2026
- 自分の発表。スライドはGoogleスライドを使った。実機でプレゼンするという方向性もあるのだけど、説明に図や表を使いたいのと、実際に作業の流れを見せたかったので普通のプレゼンツールにした。
- 今回はデモがたくさんあったのだけど、特にトラブルなく動いたのでよかった。
- デモが4回あるので、それぞれをgitの別ブランチにした。ブランチを切り替えた際、ビルド時にゴミが残る可能性がゼロではなかった(rakeコマンドが冪等であるべきだが、そうなってる自信がなかった)ためrake cleanを念のため挟むようにした。
- ソースを見せるとき、デモによって見せたいファイルが違うので、vim内タブを4つ開き、それぞれ必要なファイルを開いた状態にしていた。
- room Cは席によってスクリーン下側が見づらいので、打ってるコマンドが見えなかったかも。まあ今回は見えなくてもそれほど問題ない内容だったけど。
- RUBY CATCHER、黒字に青矢印は見づらいなと思ってたんだけど、直し忘れた。
- PicoRuby for IoT: Connecting to the Cloud with MQTT - RubyKaigi 2026
- ピタゴラスイッチがかわいかった。
- Ruby the Hard Way: Writing Bytecode to Optimize Plain Ruby - RubyKaigi 2026
- YARV bytecodeをいじって最速を目指す(ネタ寄りの)話。YARV bytecodeはAPIではないのでpatchバージョンでも変化する可能性があるんだけど、その苦労はZIT開発勢も同じだよねという指摘があり、確かにとなった。
- 昔のmatz keynoteで、区間を区切って動的性を犠牲にするというアイデアが出ていた(要出典)のを思い出した。RailsでいうとARによる動的メソッド定義が終わってWebサーバを起動するあたりで動的性をオフにし、それ以降は基本メソッドの書き換え等がエラーになるというやつ。
Day 4
五稜郭とラッキーピエロと函館山に行った。桜がすごかったなあ。ほんとにいい時期でしたね。
来年は宮崎だそうです。行くかは未定だけど、今回は喫茶店でケーキセットを頼んでスライドが進むまで粘るみたいなことを繰り返したら体重がえらいことになったので、何か別のやり方を見つける必要がありそう。