ハイサイ!

2024/05/15 - 17、沖縄県那覇市で開催されたRubyKaigi 2024に参加していました。この記事は那覇空港のビジネスラウンジで書いています(書き終わったらHeliosだ!)

Day 0はあいにくの雨、Day 7は梅雨入りで雨でしたが、それ以外は好天に恵まれ、Kaigiも沖縄も満喫することができました。

印象に残ったセッション

Writing Weird Code / tomoya ishida

RubyKaigiで開催されるたびに衝撃と爆笑が巻き起こるTRICKの2022 チャンピオンがひとりTRICKをたっぷり6本見せてくれる、という最高のキーノートによって、RubyKaigiは面白いよ、Tech Conferenceだよという強烈なメッセージで開幕しました。

実際のコードを見ても、なるほどわからん…。それぞれのリポジトリにはGit Logが添付してあるので、それを見ながら読み込んでみようと思います。

Most Floralだけは昔取った杵柄でちょっとだけわかりみがありました。なんでバイナリにコードを埋め込むと左下の画素が影響されるかというと、BMPフォーマットの画素データは左下から右上に、つまり上下反転して記録されているのです。コードを読むときはヘッダの構造も参照しながらがよいでしょう。

Cross-platform mruby on Sega Dreamcast and Nintendo Wii / Yuji Yokoo

家庭用ゲーム機でmrubyを動かすシリーズ第3弾、Dreamcast用プレゼンテーションソフト「Dreampresent」をWiiで動かす、という話です。

RubyKaigi 2022Megarubyの話を聴いて以来Yuji Yokooさんの一方的なファンになってしまい、今回も楽しみにしていました。

だいたいDreamcastとWiiは世代もアーキテクチャも周辺デバイスもなにもかも違うじゃん!とか思ってたのですが(Wiiはコントローラーが特徴的)、それがまさかオチになってるとは…。

プレゼンの元データはこのへんで見ることができます。画面に表示されてたテキストはcontent.txtに記述されてます。このエスケープシーケンスみたいな独自の記法が含まれるテキストデータは、ゲーム開発の頃を思い出して感慨深い気持ちになりました(キャラやテキストを制御するシナリオスクリプトというものがあってな)。

Day4にひとりでビールを飲んでたらその店にYokooさんが入ってくるというミラクルがあるのもRubyKaigiのすごいところ。一方的なファンだったのにすっかり仲よくしていただき、そのあとも何度か一緒に飲みに行く機会がありました。Yokooさん、ありがとうございました!

Namespace, What and Why / Satoshi Tagomori

RubyにNamespaceの機能を導入しよう、という試みの現状報告でした。ライブデモ、動いてるすごーい!

個人的には昔Padrino開発をしていたので、Namespeceの具体的なご利益はすぐ思い当たりました。PadrinoにはSub Applicationという仕組みがあり、複数のアプリケーションをパスでルーティングしながら動かすことができるのです。大変便利ですが、マウントしたアプリケーション同士で名前衝突が起こるため、ご利用は計画的に、という機能です。

このセッションはMatzのクロージングキーノートの伏線になっていた、というのがDay 3にわかったのもエモくて最高でした。また、夜のPartyやそのあとの飲み会でスピーカーのtagmorisさんが「Namespaceどうだった?」と感想やユースケースの聞き込みをしているのも、RubyKaigiのオンサイト開催ならではの素敵な光景でした。

It’s about time to pack Ruby and Ruby scripts in one binary / ahogappa

Rubyのプログラムと関連ミドルウェアをワンバイナリにして配布したいという欲求を、自分でバリバリ実装して実現した、というかっこいい内容です。Rustで仮想ファイルシステムを書いてる?すごくない?(Rustなんもわからんがあとでもう少し読む)

そういえば昔、なにかの自動化ツールがRuby2exeによって提供されてて、便利だけど壊れると作者のメンテ待ちになった記憶が蘇ってきました。今ならわかるんだけど、ないものは作ればいいんですよね。それを思い出させてくれるセッションでした。

スピーカーのahogappaさんは以前の同僚です。新卒入社のタイミングを知ってるエンジニアがRubyKaigiのスピーカーになる、という点でも感慨深いセッションでした。

Porting mruby/c for the SNES (Super Famicom) / Ryota Egusa

mruby/cをSNES(日本ではスーパーファミコン)で動かす、という話。アーキテクチャから調べて実装していてすごい…。拡張カートリッジとか、存在は知ってたけど仕組みは全然だったので、めっちゃ勉強になりました。

ちょっとちらつきがありながらも実機で動くデモが成功したのもポイントです。スマートフォンアプリを開発したことがある方はちょっとわかるかもなのですが、エミュレータではなく実機で動くことには、エンジニアとしての強い快楽があります。

さきほどのYokooさんのMegarubyの話にインスパイアされてやってみた、というのもエモがありますね。ホールでは偶然Yokooさんのすぐ近くに座っていたのですが、デモが動いた瞬間誰よりも早く大きく拍手をされていたのが印象的でした。

See you in next RubyKaigi in Matz-Yama! ⛰️

来年は愛媛県松山市での開催です。四国は去年初めて行ったんだけど、徳島と香川をちょっと回っただけで愛媛は未体験。楽しみです。