🪐

Kaigi on Rails 2025に参加してきました!

に公開

2025/09/26,27の2日間開催された、Kaigi on Rails 2025に参加してきました。
今年も面白くてためになるお話がたくさん聞けたり、いろんな方とお話しできたりしてとても楽しかったです!
どのトークも最高でしたが、特に印象に残ったトークなどについて感想を書いていきます。

Keynote: dynamic! by moro

発表資料

1日目のスタートを飾ったmoroさんのキーノートです。
トークの中では、Ruby、Rails、チーム開発と徐々にスケールを変えながら、それぞれにおける動的さや、動的さをスケールしていく方法について、そしてなぜ動的な開発が良いのかについて語られていました。
Railsのフェーズでは、具体例として「利用者がカンファレンスに参加登録できる」という機能の開発を動的に進めていくモデルケースを説明されていて、まずはハッピーパスの実現をすることが重要であるとのことでした。
また、その後のチーム開発のフェーズにおいても、ドキュメントではなく動くソフトウェアで会話することができるようになるという点で、ハッピーパスの重要性を説明されていました。
私自身も、まずは最短経路で動くものを作って、それを触りながら要件を盛り込んでいくのが一番いいと考えていたので、勇気づけられる内容でした。
去年の基調講演アジャイルマニフェストに繋がっていくのもすごくよかったです。
他にも、「どのように判断を保留し、resumeするかが重要」「ソフトウェアは静的な構造物ではなく、関わる人たちの皆の、現在の理解の表現である」など、とても的確な言葉遣いが多くて素敵なトークでした!

Railsによる人工的「設計」入門 by Yasuko Ohba (nay3)

発表資料

設計はコードを書いていく中で「自然に」身についていくものだと思っているけど、AI生成の登場によってそれが難しくなってきているのではないかという危機感から、「人工的に」設計活動を起こす方法について説明されていました。
設計を体得できていない人は、具体的なコードのレイヤーを起点に考えてしまいがちだったり、単に習った手順を繰り返すだけになってしまっている可能性があるとし、そこから脱却させるため「逆算」の進め方を提案されていました。
逆算とは、具体的には

  • まず完成したシステムを思い浮かべる
  • 思考の基点となるゴール(=本質的なことがら)を決める
  • それを達成するために必要なことを順々に考え、すべて考えた状態にする
  • (仕上げとして、開発内容を領域分けして全体像を整理する)

というアプローチです。
また、設計の中で洗い出された各ステップの実現方法について、すべての選択肢を一気に探索すると大変なので、「デザインパーツ」を仮置きして一本道にすることで整合性の取れた思考ができるようにするということでした。
私は設計に自信がないので、「教わる側」としての気持ちで聞いていましたが、逆算の思考、勇気を持って短い名前をつけること、デザインパーツを理解・把握することなど、まだまだ身につけていかなければならないことがたくさんあるなと改めて思いました。
耳とお腹が痛くなるけどとても参考になるトークでした・・・!

Range on Rails ― 「多重範囲型」という新たな選択肢が、複雑ロジックを劇的にシンプルにしたワケ by 梅田智大

PostgreSQLのmultirange型を活用して、「決められた枠のない予約システム」を実現したという内容でした。
通常のrange型はひとつのまとまった範囲しか表現できませんが、multirange型は複数の範囲を配列のように保持でき、さらにmultirange同士の重なりや差集合の取得といった処理が可能です。
これを活用することで、メンテナンスや他ユーザーの予約などの異なる複数の利用不可時間が存在する中で、「向こう1週間の予約可能な時間を取得する」というような機能がシンプルに実現できたとのことでした。
実際にはDBへの保存時には通常のrangeとして保存しておき、multirangeのVIEWを用意して差集合の取得などを行っているとのことでした。
私はmultirange型のことを全く知らなかったのですが、ユースケースに対して最適な道具を選択できていて素晴らしいなと思いました!
こうした開発の中での具体的なお話が聞けるところがKaigi on Railsの大きな魅力のひとつだと思います。

rails g authenticationから学ぶRails8.0時代の認証 by Shinichi Maeshima

発表資料

偶然にもお誕生日当日のご登壇!おめでとうございます!🎉🎉🎉
Rails8.0から導入された認証ジェネレータについて、生成されるコードの解説をしてくださいました。
現在の認証ジェネレータが生成するのはメールアドレスとパスワードによるシンプルな認証機能のみであり、多様な認証機能が求められるユースケースにおいてはまだDevise等のサードパーティgemの利用が現実的なようです。
認証ジェネレータを利用するにしろ、gemを利用するにしろ、エンジニアたる我々が認証やセキュリティについて理解を深めないといけないという点は変わらず、その観点から言うと認証ジェネレータが生成するコードで認証を学ぶことができそうということで、生成されるコードの解説をしてくださいました。なんてありがたいんだ・・・。
rails g authenticationを実行すると、User, Session, Currentといったモデルや、それらを操作するControllerが生成されます。
SessionレコードがDBに存在している=ログイン中ということになっているようです。
Current.session, Current.userのようにして現在のセッションやログイン中のユーザーにアクセスできたり、session.idはActionCableの利用を想定してcookiesに格納していることなど、詳しく解説してくださいました。
ブルートフォースアタックやタイミングアタックへの配慮なども含まれているようです。
発表内でも語られていた通り、詳細を考えると考慮しなければいけないポイントがいくつもあり、認証はやっぱり難しいものだなと感じました。
継続的なキャッチアップが必要で、そうした意味でも本当にありがたい内容でした!

Keynote: Building and Deploying Interactive Rails Applications with Falcon by Samuel Williams

WEBサーバーFalconをRailsで利用できるようにしたというお話でした。
FalconはRubyのFiberを活用して並列処理を行う高速なサーバーです(ちょっとよくわかってない)。
すでにFalconはShopifyの本番環境で利用されており、かなりの台数のサーバー削減ができたとのことでした。
FalconではすでにRailsの主要機能がすべて利用できるようになっているようです。
ひとつひとつの問題に対して必要なライブラリをぽんぽん作って対処されていて、すごいの一言・・・。
また、falcon-railsを利用することで簡単にRailsアプリケーションをFlaconでホスティングでき、しかもAI生成によるコーディングがしやすいような工夫も盛り込まれているようです。
発表内では実際に壇上でAIに指示を出してFalcon + Railsでゲームを作成させるというライブコーディングが行われてました。
出来上がったのは芋虫がアイテムを食べて大きくなるみたいな雰囲気(だけどよくわからない)ゲームでしたが、実際にインタラクティブに動くものができていました!すごすぎる・・・

今年はこのキーノート含めて英語発表が3つありましたが、英→日の同時通訳があり、大変ありがたかったです!
でもいつか自分でちゃんと聞き取れるようになりたい。

懇親会、わいわい部屋、会場

1日目の夜には公式の懇親会も開かれました。
広々とした会場で、多くの方と楽しくお話しすることができました。
オーガナイザーおすすめの日本酒もすごく美味しかったです!

また、会期中は休憩や交流に利用できるわいわい部屋も用意され、美味しいコーヒーやおやつの配布もありました。
私はほとんど見れませんでしたが、本屋さんも開かれていました。
すごく賑わっていて本当にわいわい盛り上がっていました!

また、会場となったJPタワーもとてもいいところでした!
特にインターメディアテク最高だった!

さいごに

Kaigi on Railsは去年も現地参加させていただいたのですが、日々の仕事に直結するような発表が多く、とても参考になるし、励みになります。
本当にありがたいです!
来年は渋谷開催、会場は今年よりさらに大きくなるようです!楽しみ!

Discussion