Studyplus Engineering Blog

スタディプラスの開発者が発信するブログ

Kaigi on Rails 2023 参加レポート

こんにちは、サーバーグループの山田です。10/27(金)、28(土)開催のKaigi on Rails 2023に参加しました。その感想などをレポートします。

Kaigi on Railsとは?

Kaigi on Railsのコアコンセプトは 「初学者から上級者までが楽しめるWeb系の技術カンファレンス」 です。Kaigi on Railsは技術カンファレンスへの参加の敷居を下げることを意図して企画されています。また、名前の通りRailsを話題の中心に据えるカンファレンスではありますが、広くWebに関すること全般(例えばフロントエンドやプロトコルなど)についてもカバーすることで参加者の知見を深め、また明日からの仕事に役立てていただければと考えています。 (公式Webサイトより引用)

感想

Kaigi on Rails初のオンライン、オフラインのハイブリッド開催でした。わたしはオフラインで参加しましたが、活気を感じられてよかったです。 多くのセッションがありましたが、特に印象に残っているセッションについて感想を書いていきます。

TracePointを活用してモデル名変更の負債解消をした話

speakerdeck.com

TracePointの機能を使って、モデル名変更に伴う大量の修正を可能な限り自動化して対応したという内容の話でした。

技術的負債を解消する際に、修正量が多すぎると工数やバグのリスクと天秤にかけて見送ってしまうこともあります。それを技術力で何とかするというのはエンジニアリングの腕の見せ所でもあり素晴らしいなと思いました。

また、発表の中でTracepointのTipsをいくつか紹介されていました。私自身Tracepointを活用したことがなかったため、すごくためになる内容でした。会議後に早速手元で試してみています。

やさしいActiveRecordのDB接続のしくみ

speakerdeck.com

ActiveRecordのDB接続について、どのクラスで何をしているかを順を追って説明する発表でした。

図を使った説明を交えながらbacktraceやコードを追って丁寧に説明されており、非常に理解しやすかったです。ActiveRecordなどの複雑なコードでも丁寧に追っていくことで理解を深められることがわかる発表でした。

今回は接続部分についての説明でしたが、調査や整理の仕方は他のコードでも応用できるなと思いました。

32個のPRでリリースした依存度の高いコアなモデルの安全な弄り方

speakerdeck.com

サービスのコアとなるモデルの大きな仕様変更に伴い、テーブルの定義変更やモデルの機能拡張をどのようにサービス無停止で進めたかについて紹介されていました。 Studyplusでも昨年サービスの中心となる巨大なテーブルのカラム追加で苦労したことがあったため、気になるセッションでした。

前半のオンラインDDLについての説明では、オンラインDDLになる条件や注意すべきポイントを紹介されており、有益な情報でした。 実際の進め方では8つの手順に分けて進められていましたが、コアドメインの変更を安全に行うことは大変な作業で近道はないなと思いました。

「安全なリリース方法を知り、決断を先延ばしできるための技術を身につけておくことが大事」という話はとても共感できる内容でした。今後の事業やサービスの成長を予測してあらかじめ実装することは難しいです。一方で必要となった場合に対応できる技術を身につけておくことでリスクを減らして開発を進めることができると思いました。

A Decade of Rails Bug Fixes

A Decade of Rails Bug Fixes by byroot - Kaigi on Rails 2023

カンファレンス最終セッションの基調講演でした。Railsのバグについて、デバッグ方法やその対応の中で学んだことなどについての話でした。

ActiveRecordのカウンターキャッシュに関するバグの対応では、再現が難しいrace conditionのバグを根気強くデバッグして再現方法を調査されていました。簡単な再現コードを作れたところから、解決に向けて一気に進んでいた印象でした。バグの解消において再現できることの重要性をあらためて認識しました。

実際の修正においては過去のIssueやPull Requetのやりとりを見てパフォーマンス面が原因でバグ修正が取り込まれなかったことを踏まえて修正をされていました。また、メンテナーにレビューをしてもらう際のコミュニケーションの失敗などの話もされていました。

修正が取り込まれるまでの一連の話を聞いて、Railsのような巨大なOSSでうまく取り込んでもらうための動きをイメージできたと同時にその大変さも知ることができました。

まとめ

どの発表も素晴らしい内容でとても勉強になりました。会場の雰囲気も良くこのような素晴らしいカンファレンスを開いていただいた運営の皆様に感謝です。来年開催される際は、登壇できるように日々の業務を頑張っていきたいと思いました!