大阪Ruby会議04に参加しました

2024年8月24日に大阪・中之島フェスティバルタワーにて開催された大阪Ruby会議04に参加しました。

キーノートスピーカとして呼んでいただいたのですが、まったくの分不相応です。伝統的に、大阪のRubyコミュニティにはmruby好きな人たちがいるので、彼らの声によりわたくしが選ばれたのだろうと思います。

RubyKaigiっぽい熱気

自分のキーノートの内容にひとつ反省点があります。「地域Ruby会議」と「RubyKaigi」の違いについて、その場の全員がわかっているかのような前提で話をしてしまいました。実際には地域Ruby会議やRubyKaigiを未経験の人がいたはずなので、彼らをちょっと置いてけぼりにしたかもしれません。

簡単に埋め合わせます。RubyKaigiは年に一回、日本のどこかで開催される最も大規模なRubyのカンファレンスです。発表されるトークはすべてハードテックトークです。ソフトトーク、例えば「技術者のキャリア」「ワークライフバランス」などのテーマは絶無です。地域会議はソフトトークも受け入れられることが多く、この点でカイギの雰囲気が異なります。

さて今回の大阪Ruby会議04ですが、テックトークが非常に多いタイムテーブルでした。カンファレンス初参加の方々は、図らずもKaigi寄りの雰囲気を体験したことになります。初心者には少し難しかったかもしれません。でも、「わからない」って楽しいですよね。

ちなみに来たる10月5日には、筆者も運営に関わる松江Ruby会議11が開催されます。こちらはハードトークとソフトトークがいい感じにミックスされた「会議」らしいタイムテーブルです。ぜひご参加ください。

大阪でのトークはどれも素晴らしいものでした。その中から、筆者なりの感想を言えそうなものをいくつかご紹介します。

Keynote: 最高の構文木の設計 2024年版

無限にパーサの話をすることでおなじみの金子さんによるオープニングキーノート。パーサから一歩踏み出して、ついに構文木に手を出し始めました。ただ、これは意外なことでもなんでもありません。パーサを第一に利用するのはコードジェネレータです。コード生成になんらかの構文木が必要であることは全Rubyistの共通見解だと思うので、これはやっていかなければなりません。

金子さんのさすがなところは、関連技術をしっかり研究してくるところです。他言語の実装や理論を読み、現実の用法用量と見比べて、われわれの進むべき道を照らしてくれます。CRubyでは、Prismがいったんデフォルトパーサの地位を獲得しそうです(リンクしたプルリクは2024年8月30日現在では未マージ)。しかし、すべての理論や現実問題に決着がつくにはまだ時間がかかるでしょう。

筆者も、PicoRubyのパーサをいったんPrism化しているところです。他方、金子さんのユニバーサルパーサ計画にも参画しており、これはRubyKaigi 2024での発表の中心テーマでした。

たんなるパーサユーザではない、パーサとその周辺実装をともに改善していこうと考えている同伴者として、金子さんの今回の発表は大きな通過点でした。未来から振り返ったとき、みなさんにも納得してもらえるはずです。

dRuby 入門者による あなたの身近にある dRuby 入門

弊社アンドパッドの川原(@makicamel)によるdRuby紹介トークでした。dRubyってほんとクールですよね。筆者も大好きです。しかしわれわれロートルは、dRubyの存在を当たり前のものとしてしまっており、わざわざ話題にすることがなくなっています。川原のような若手が改めて掘り出して紹介してくれるのは実にうれしいことです。

いつまでも古びないdRubyのようなツールを自分も書いてみたいものだ、と思いました。

Re-line 〜 IRB・Reline 複数行編集の裏側

IRBは、ユーザが1文字入力するたびに、あるいはカーソルキーやタブキーなどを押すたびにターミナルエミュレータ上の表示内容を更新します。いままでの更新のロジックがユースケースごとに別々の実装だったものを、統一的に(ReactJS的に)差分計算するようなスマートな実装に一新した、という内容でした。

実は筆者もIRBとRelineのコミッタなのですが、最近はそちらの活動をサボっています(ごめんなさい)。サボっていて言うのもなんですが、差分更新というアイデアは、Relineコミッタになったころからわたくしも持っていました。いつかやりたいと思っていたのですが、ぺん!さんがやってくれたので、ああよかった、という気分です。ぺん!さんありがとう。

Minify Ruby Code

このトークは2部構成になっていました。前半ではMinifyの基本的な考え方から始まり、トークン列を入力とすべきか or 構文木とすべきかの検討、Rubyの文法やPOSIX準拠を踏まえた現実問題への対処、という流れでした。シニアプログラマの実力でわれわれを圧倒してくれました。

後半では「Minifyで壊してRuboCopで直す」という、koicさんならではの面白展開。そのなかで見つけたRuboCopのバグも修正。たんに面白いだけではなく、ああ、コンピュータいじりってこういうものだよな、と再認識させてくれました。

ちなみにPicoRubyからMinifyへ期待することですが、やはりMangle(メソッド名や変数名も短縮すること)がほしいです。ひととおりバグのとれたファームウェアは、マイコン上で人知れず淡々と動作するだけですから、変数名は読めなくなっても構いません。インスタンス変数のようにリテラルがVMコードに残るものは、短縮するメリットがありそうです。コードが短ければ、ファームウェアのオンライン更新時に通信量を削減できます。動的型付けであるRubyではとくに、「変数名は体を表す」べきであり、メモリ消費を心配して変数名を短くしてしまうのはナンセンスです。Minify技術にはたいへんに期待しています。

strscanなしで文字列をスキャンする

何度でも思い出したいクールな技術ナンバーワンがdRubyならば、いつでも何度でも話を聞きたいRubyistナンバーワンが前田修吾さんです。大阪Ruby会議04がカンファレンス初参加だった人たちに前田さんのトークが届いたことは、個人的に最もうれしいことです。聞かないとわからないし、何度も聞くことで味わいが深まるものですから、彼のトークについて無粋な解説はしません。

Keynote: 令和の隙間産業——PicoRubyはどこから来て、どこへ行くのか

筆者のトークは、今回唯一のソフトトークでした。あの場でしか通じなかったであろう内容ですから、やはりここでは解説しません。カンファレンスとは一期一会ですね。


チーフオーガナイザは弊社の@ydahでした。ちなみに、キーノートをやってくれませんか? と連絡をもらった時点では、筆者がアンドパッドに入社することを@ydahは知りませんでした。思いがけず、チーフオーガナイザと登壇者2名がアンドパッドから輩出されることとなりました。

とても楽しい地域Ruby会議でした。本稿で紹介しなかったトークもすべて素晴らしく、運営も実に安定感がありました。スピーカ専用のWiFi(SSID)が用意されたカンファレンスは、筆者にとっては初めてでした。すべての関係者に感謝いたします。ありがとうございました。


アンドパッドではプロダクト開発だけでなく、 Ruby の発展を支えたい Rubyist を熱烈募集中です。

hrmos.co