Kaigi on Rails 2022 セッションレポート #2
株式会社TOKIUMで開発部部長をしている西本です!この記事では、10月21日(金)-22日(土)の3日間に渡りオンライン開催されたKaigi on Rails 2022にて、聴講したセッションの中でも印象に残ったモノをいくつか紹介していきます。
弊社でも採用しているRuby on Railsのカンファレンスであり、スポンサーもさせて頂いているということで、非常に楽しみにしておりました!
今回私が紹介するのは、以下の2つです。
モノリシックRailsアプリケーションをモジュラモノリスへ移行しているnoteの事例
解説
note株式会社のサーバーサイドエンジニア、
Hiroya Shimamotoさんによるモジュラモノリスにおける効果的なgemの紹介、および事例紹介のセッションです。
packwerkというShopifyにより公開されたgemで、モジュラモノリスの考えに則ったリポジトリ内でのパッケージ分割をサポートします。
そもそもパッケージというのは機能的な境界であり、ディレクトリ単位で分割していくのですが、ただ分割しただけでは影響範囲を実装レベルでは制限できません。
そこでpackwerkを用いて、静的解析でパッケージ間の依存関係やアクセスコントロールを制限します。
packwerkには違反リストを自動で生成するコマンドが用意されているので、そのリストベースで作業することで機能的な境界を作っていくことができます。
実際の導入においても最初の設定やドメイン境界の検討は必要であるものの、
- 段階的に分割できる
- パッケージ化のやり直しが容易
- 構成要素、依存関係が容易
- リファクタリングの促進、担当チームへの裁量
といったメリットが十分に享受できているとのことでした。
今後も継続して、モジュラモノリス化を進めていきたいというご紹介がなされました。
感想
実際にモジュラモノリスを実施している例というのはまだまだ少ない中で、実施例だけでなく、効果的なgemの紹介をして頂いて、非常にイメージしやすかったです。
弊社でもモジュラモノリスへのアプローチを徐々に始めており、packwerkの存在は知っていたのですが、導入是非に関して検討できていなかったので非常に参考になりました。
特に段階的なパッケージ化においてもpackwerkは機能しそうであることは知ることができてよかったです。
また、ご紹介いただいたその他のメリット、課題感についても共感できるものが多く、モジュラモノリスにおけるイメージが今回の事例により、確かなものになった印象でした。
個人的にはActiveRecordとの共存というところで深い課題がありそうですが、強い意志を持って弊社でも取り組みたいなと思います!
今年できたチームの生産性を向上させたプラクティスの紹介
解説
クックパッド株式会社のレシピ事業開発チームに所属する、Yuki Akamatsuさんによるチーム改変の中で新しく組成されたチームにおける生産性向上施策に関する紹介です。
まずは、大きめな組織変更による不慣れなアプリケーションに対する開発とマイクロサービス環境というところで、タスク完了率が上がらない課題感のご紹介がなされました。
その課題に対し、
- チームのナレッジを増やす
- 問題の早期検知
という目的のもとに以下を実践されました。
- 設計議論用のチャンネル開設
- ペアプロ
- 設計ドキュメント
設計議論用のチャンネルはシンプル&コストもかかりませんし、手戻りを防ぎやすい、自然と設計知見が共有される、気軽な議論の雰囲気作りの効果があり、気を付ける点はありつつも効果は十分に出ています。
ペアプロは常時実施というよりも、必要に応じて気軽に実施できるような体制、雰囲気作りを含めて実践されておりました。こちらも専用チャンネル作成と同様の効果が出ました。
最後に設計ドキュメントについては、書く内容、項目、タイミングについて皆で認識を合わせた上で実施されておりました。さらに、ドキュメント施策に対する振り返りによる仕組み改善が定期的に行われているという解説をいただきました。
感想
チーム間移動があったり、新しい人が増えたり、チーム構成が変わる際に生まれる生産性の課題についてとそれに対する試みについてご紹介いただきました。
チャンネル作りなど、気軽にすぐ実践できるようなものもあり、このセッションを見て早速実践しようと思った方も多いのではと思いました。
弊社でも開発関連で色んな人に質問や、意見集め、議論をできるだけ気軽にするためのチャンネルを用意しており、みんなで助け合ったり、知恵を出し合ったりしている様子をよく見かけます。(最近では環境構築周りを話していることが多いです)
今回の話を聞いて、設計などテーマに絞ったチャンネルというのも良さそうだなと思いました。
設計ドキュメントについても、振り返りによってアウトプットの質向上に繋げているお話が強く刺さり、見習いたいと強く思いました。
開発プロセスや全般の活動に対する振り返りだけでなく、取り組み一つ一つに対してもしっかりと振り返っていきたいと思います。
生産性の裏側には「開発者が気持ちよく働けているか」、という命題もあると思っていますが、今回のセッションは今後も生産性&開発者体験向上に取り組む上で非常に参考になりました!
全体を通して
去年に続いての参加でしたが、運営スタッフの皆様を始めとした、カンファレンスに関わった全ての皆様、本当にありがとうございました!
コアコンセプトにもある通り、初学者から上級者までが楽しめるカンファレンスになっていたように思います。
Kaigi on Rails を通して自身が日々使っているものを他にもたくさんの人が使っているんだなと実感もできますし、今度は自分もこういったコミュニティの活性化に貢献できたらと思います。
Discussion