Kaigi on Rails 2024を振り返る
2024/10/25~26に開催された、Kaigi on Rails 2024に参加してきました。
ついにアーカイブ動画も公開されましたね!
今年もハイブリッド開催で、私は25日に現地参加、26日はWEB視聴しました。
初めての現地参加でしたが、とても快適で楽しいイベントでした!
遅ればせながら、特に印象に残った発表や、思ったことなど書いてみたいと思います。
Rails Way, or the highway by Palkan
基調講演Railsはゼロからのアプリ構築に必要なフレームを与えてくれる一方で、埋めるべき隙間も存在ます。アプリが成長するにつれその隙間を埋める際に、しばしばフレームが歪められてしまいます。この時にフレームを歪めずに拡張していくための導きの星となるのがRails Wayであるとし、拡張時にご自身が従っている4つのルールについて説明されていました。さらに、複数ステップのフォーム画面の実装を例に挙げ、Railsに新しい抽象化を導入する過程を解説されていました。
Railsのフレームの中に、Formという新しいレイヤーをはめ込む実装だったのですが、これが元からあるModelやControlerといった要素と調和しているのが綺麗で、すばらしかったです!
私もあんなふうにRailsらしさを失わないコードを書けるようになりたいと思いました。
Railsの仕組みを理解してモデルを上手に育てる - モデルを見つける、モデルを分割する良いタイミング - by 五十嵐邦明
Railsアプリケーションを作る際のモデルの見つけ方や、分割するタイミングについてわかりやすく説明してくださいました。イベント型モデルを探すと良い、POROで作ってmodelsにおいても問題ない(さらにおすすめのルール設定も)など、まだRailsに慣れきっていない人にとっても非常に親切な内容だと感じました。
また、モデルを分割するタイミングの一つとして「バリデーションを条件分岐したくなったとき」を挙げ、そんな時に作るべきフォームオブジェクトについても説明されていました。こちらも継承すべきActiveRecordモジュールなど具体的なお話をされていて、とてもわかりやすかったです!
実際の業務の中でモデルが過剰に太っていくことは超あるあるだと思います。紹介された指針を参考に、使いやすくてスリムなモデルを書いていきたいです。
余談ですが、発表後に五十嵐さんとお話しでき、なんとポストカードをいただきました!
特に右のイラストは、フィヨルドブートキャンプで勉強していた時にすごくお世話になったものなので、とても嬉しかったです!
カスタムしながら理解するGraphQL Connection by yana-gi
GraphQL Rubyを使ってRailsでGraphQL APIを実装したお話について、CustomConnectionを実装しながら疑問を解消して行った流れを説明されていました。実装されたのはページネーションを含む検索機能で、最終的には外部APIへのリクエストによりデータを取得するものだったようです。
この機能を実装するにあたり、ページのoffsetやlimitといった情報をどのタイミングで計算しているのかといった疑問があり、その調査をされていました。結論として、GraphQL RubyではPromiseという遅延実行のためのクラスを利用して、一旦offsetの計算等を行ってからデータの取得を行っているとのことでした。
全体的にとてもわかりやすくまとめられていて、私のようにGraphQLをつかったことがない人間でもイメージしやすかったです!
デプロイを任されたので、教わった通りにデプロイしたら障害になった件 〜俺のやらかしを越えてゆけ〜 by izumitomo
デプロイ実行時に発生した障害について、その内容と原因調査の流れをわかりやすく解説してくださいました。タイトルにはやらかしとありますが、どちらかというと潜在的な不具合をたまたま踏んでしまったという印象でした。
デプロイのたびにSidekiqの実行中ジョブが消えてしまうという恐ろしい状況に新卒1年目で立ち向かい、見事根本解決されていました。解決までの流れの説明も非常にわかりやすかったです。
何より発表が本当に上手で、終始会場の笑いを誘っていました。まだみていない方はぜひアーカイブ動画を見ていただきたいです!
Sidekiq vs Solid Queue by Shinichi Maeshima
Railsのバックグラウンドワーカーについて、現在のデファクトスタンダードであるSidekiqと、Rails8.0でデフォルトとなるSolid Queueを比較して、選定時のポイントをわかりやすく解説してくださいました。
発表の中では、Rails向けバックグラウンドワーカーの歴史についても触れられていました。私はDelayed::JobとSidekiqしか使ったことがなく、それらについても最低限のことしか知らなかったので、各ライブラリの特徴や背景も知ることができて非常に参考になりました!
今後SidekiqとSolid Queueどちらを使うべきか、という点については、
- 既存プロジェクトでSidekiqからSolid Queueへ移行するメリットはあまりない
- 新規プロジェクトの場合、ジョブをたくさん使うなら機能が豊富なSidekiqがよく、そこまでジョブが多くないならSolid Queueが良さそう
という結論でした。なるほど〜!
WHOLENESS, REPAIRING, AND TO HAVE FUN: 全体性、修復、そして楽しむこと by 島田浩二
基調講演全日程の締めくくりとなる基調講演でした。
前半は、アプリケーションだけでなくシステム全体が機能するように作ることが大切で、Railsを上手に扱えるようになった上で、アプリケーションを取り巻くもの(WEB技術、DB、計算機システムなど)を勉強していく必要があるというお話でした。
後半は、何にでも対応できる仕組みを作るのではなく、将来の選択肢を狭めないようにシンプルに作る=オプションを得ることが重要であり、Railsはそのための設計をサポートしてくれている、というお話でした。
特に後半のお話が、1日目のPalkanさんの基調講演とリンクしていてすごく感動しました!Railsの良さを壊さない設計をすることで、将来の変化に対応するオプションを得ることができるということだと思います。改めてRailsっていいものだよなと思える、素敵なお話でした。
全体を通しての感想
全体としてアプリ開発業務に直結するお話が多く、どの発表もとても参考になりました。会場も終始楽しげな雰囲気で満たされており、企業ブースも賑わっていました。
また、もくもく部屋、わいわい部屋といった座って作業可能なお部屋も用意されていたり、そこでogijunさんお手ずからコーヒーを淹れてくださったり、託児所も設けられていたりと、快適に参加できるための工夫がすごいなと思いました!
今回2日目はわけあってWEB視聴になってしまったのですが、やはり現地参加が一番楽しいし、理解度も深まると感じました。
来年の開催もすでに決定しているようです。来年はぜひフルで現地参加したいと思います!
Discussion