Kaigi on Rails 2024に参加した

有明で開催された Kaigi on Rails 2024に参加した。

kaigionrails.org

ざっとになるものの感想です。2日分まとめてこちらに書きます。

1日目 (2024-10-25)

乗り換えでやや道を迷ったのもあり、ぷぽさんがいわれているとおり想像の3倍くらい遠い感じのところ、スポンサートーク2本目に入っているところで到着。

このエリアは、日本Rubyカンファレンス 2006 (RubyKaigi 2006) という、Ruby カンファレンスはじまりの地であると同時に、そこで DHH が「制約が自由をもたらす」キーノートをした地でもあった。また江渡さんが題材にされた「インターネット物理モデル」が今年でクローズされるうえ、さる筋の情報によるとその江渡さんは現在は DHH の故郷であるデンマークにいるかもしれないということで、時空を超えて Kaigi on Rails に集約されていく壮大な背景にイメージを膨らましつつ参加した。

オープニングキーノート

palkan のオープニングキーノートで出てきた「Think as a framework author, not a custom application developer」というフレーズは、自分が過ごした Kaigi on Rails 全体をとおして一番響いたフレーズでした。

OSS をメンテナンスしていると、作者の気持ちを読む重要さや、作者のプロダクト方針を汲み取る力が求められるけれど、DHH とその背後にある Matz の圧倒的なデザイン力のうえに我々は乗っかっているんだなあというのを思い出されました。

個人的には、12月の RubyWorld Conference の登壇準備で、広い意味で「Rails とは何か?」というテーマで悩んでいたタイミングということもあって、行間から色々と創発を得たトークでした。

夜には palkan にも本人に直接伝えられる in-person しぐさができて良かったです (yahonda さんフォローありがとうございました) 。

RailsのPull requestsのレビューの時に私が考えていること」

yahonda さんの話は特に後半に出てきた、OSS メンテナーとしてのコントリビュータからの PR への対応といった関心事や優先付けといったものに共感を持ちつつも、yahonda さんのお気持ちが入っているあたりなんかは特に興味深く聞くことができました。

JRubyのパワーを解き放つ:パフォーマンスと多様性向上のためのRailsアプリ」

竜堂さんの発表は JRubyOracle ということもある以上に、事前にパッチを見ていたことも含めながら聞いていました。自分の場合はまだ Ruby (というか Rails) の市民権がビジネスで今ほど強くなった頃に、MRI をランタイムにインストールできないけれど、JVM で動くということで JRuby なら OK という案件に携わったこともあり、そのあたりの体験を踏まえて聞いていました。

たしかに JRuby は起動が遅いものの、いちど起動すれば (メモリ消費量はトレードオフに) 高速に動く環境を手に入れられるというポイントがあって、そのあたりの特色をうまくまとめられたお話でした。あと、発表の最後に JRuby 開発者の headius への支援というのを呼びかけていたあたり、竜堂さんの優しさと Rubyist の繋がりが出ていて良かったなあ。

夜には Oracle enhanced adapter のリードメンテナーの yahonda さんから竜堂さんに、Oracle enhanced adapter のリポジトリ状況を伝えてもらう機会を作れて良かったです。

そのほか

カフェスペースで ogijun のコーヒーを楽しみながら、yahonda さんや kamipo さんとパッチ会的な感じの話をしたり、近況やはじめましてをしたりして過ごしていました。ogijun のコーヒーでは多彩な味わいをいただいてごちそうさまでした。

あとはひたすらテックトークなどを肴にした夜でした。モリスさんが namespace の test-all をパスしたお祝いは、Ruby 4.0 にまたひとつ近づいたということで、キーマンを囲んだマイルストーン達成をお祝いできて良かったです。公式パーティーや2次会ではいろいろな人と話せた気がします。

ちなみにこれは2次会のワンシーンで、オープニングキーノートの palkan に声かけをしてくれたのは、ydah さん。彼はすっかり Ruby コミュニティになくてはならない存在ですね。

2日目 (2024-10-26)

このワトソンさんの「明日も対戦お願いします( ˘ω˘)」ツイートから一夜明け2日目。前日の飲み過ぎのダメージを引きずってスタート。ydah さんの発表に間に合うように頑張った。

「作って理解する RDBMSのしくみ」

ydah さんの発表は、予想と違ってコードが出てこずに、データベース実装のデザイン概略とアルゴリズムの性質とその歴史といった感じのお話でした。データベースの気持ちを知るにはデータベースを作るのが一番という意味では、ydah さんの話をきっかけに、そういった人が現れる足がかりになると面白そうですね。

お昼に a_matsuda さんと「そういえば分散ストレージの Fairy と Roma というのがかつて Ruby 製でありましたねえ」とインターネット老人会の方でも、往年の Ruby 製データベースを思い出すきっかけになるお話でした。

「Importmapを使ったJavaScriptの読み込みとブラウザアドオンの影響」

同僚の swamp09 のトーク。Kaigi on Rails という現場での地に足が着いた「面白いトーク」というプロポーザルという意味では、弊社でもっとも相性が良さそうな話と思いながら当日聞いていて、実に Kaigi on Rails っぽい話という趣で聞いていた。

本当はもっと Importmap まわりでの悩みを参加者と一緒に考えられる感じだと良さそうと事前に話していたけれど、そのあたりを公式懇親会で満足できたのかな?

「omakaseしないためのrubocop.yml のつくりかた」

エクスパさんの話は、タイトルから呼び出しされている感じだったので、きちんと最前列に着席して聞いていました。EM として RuboCop をプロジェクト (メンバー) に迎えるにあたるステップを丁寧に説明されていました。個人的にはタイムボックスとアカウンタビリティがしっかりしている話だなあと聞いていて、15分という枠の中でしか同期的に行わない。投票は非同期で行える Slack。アカウンタビリティが希薄になるリスクのある持ち回りではなく、自分が前に進める。というのがマネジメント感あるポイントで良かったです。話のくくり方としても「文化を omakase しない」というのは、良いフレーズだなあと思いました。

余談ですが、エクスパさんとは RubyKaigi 2024 で「終まで飲んで」いたひとりで、その際に EM としての話を聞いていたことから「エクスパさんの (考え方の) 話」としても関心を持って聞いていました (その際にもちろん ydah さんもしっかりといました) 。カンファレンスは繋がっていますね。

「Identifying User Identity」

そして去年の個人的ベストスピーカーの moro さんの話。今年もプロポーザルが採択されたというツイートの時点から楽しみにしていました。

User という曖昧な名前で終わらせないというユーザーストーリー的な話から始まり、User に相当させるテーブルには id しか持たせない (human_id と created_at くらいはあっても良い) というのは、個人的にそれを実践でやっているっぽいのがさすがなところでした。たとえば Devise なんかはビジネス情報と認証情報をごちゃまぜにする重厚なテーブル設計になる悲しみの代表例だと思っているけれど、そういったものではなく「正規化とは何か?」「情報の分類とは何か?」といったデータベース設計のあり方を問われているような話でとても良かったです。とりわけ一つのテーブルに「公開して良い情報」と「秘匿情報」が混ざっていると、そういった情報管理の部署から提出を求められた際の分別が面倒だったり、本番環境ベースのデータをステージング環境に、センシティブな秘匿情報をカスタマイズして投入などいった際の、人為的ミスへのリスクを減らす足場になりそうで良い話でした (これも「混ぜるな危険」パターンのひとつと言えそう) 。

また scope :withdrawn, -> { where.missing(:credential) } とか、意図を伝えるためのこれ以上削りようのないシンプルなコードで最高にクールな書き方 (で、それができるようになっていっているのが Rails の素晴らしさ) だと思っているのですが、そういった Ruby のキメ方を実現するためにもデータベース設計は大事というメッセージが伝わってきました。話を聞き終わったあとに yancya さんと「moro さん本人は言っていないのに、論理削除を避けようという話も背景に含まれていたね」という感じで、たくさんの行間を考えさせられるとても良いお話でした。来年の発表も楽しみにしています!

クロージングキーノート

最後のクロージングキーノートの島田さんのお話。良い Rails アプリケーションを書き続けられるようにするお手本は、Rails そのものを知るというのがオープニングキーノートの palkan のトークとも繋がっている感じがあって良かったです。Rails で仕事を始めた当時に角谷さんが「rails g scaffold で生成されたコードはこれ以上削りようのないシンプルなコードで、このコードを基準にシンプルさを維持するように頑張ろう。アプリケーションは放っておくと複雑性を増すので、気をつけよう。」といったことを話していたことを思い出したり、Rails 20 周年イヤーの Kaigi on Rails クロージングキーノートとしてとても良かったです。

Rails World 2024 での DHH も「私が心を込めて書いたコードだから良いコード」になっているといった感じの話をしていたようなので、コードアーティストでもある DHH のブレのなさが Rails 20 年の歴史に繋がっているんだろうなあと、今回のカンファレンス全体を通して感じたその締めくくりでした。

そのほか

Kaigi on Rails 2024 記念に RuboCop Rails 2.27 をリリースしておきました。内容的に 2.26.3 のどちらで出すか悩んでいたバージョニングでしたが、記念なのでマイナーバージョンを上げることにしました。

github.com

ジョーカーさん的にはこんな絵面だったようです。なるほど。

そんな感じで非常に楽しい時間を過ごすことができたカンファレンスでした。来年の会場は東京駅直結のようで、個人的には最高のロケーションでいまから楽しみです。

会期中に a_matsuda さんと「20年続く Web アプリケーションフレームワークは本当にすごい」と話していたのですが、カンファレンスとしても RubyKaigi 2006 から日本で続く多様な Ruby / Rails のカンファレンスのひとつのいまの「体験」と「共有」の場に参加できて幸せでした。

スタッフのみなさん、登壇者のみなさん、交流してくれたみなさん、そして今回も美味しい珈琲を提供し続けてくれた ogijun さん、どうもありがとうございました。