DDDの輪読会したら開発がちょっぴり良くなった話
はじめに
こんにちは!株式会社CastingONEでHR領域のSaaS開発を行っている @hiroaki です。
最近サウナ用のメガネを買いました。コンタクトだと目が乾いてしまうので、メガネをかけてサウナに入るというのが最近のマイブームです。
今回は社内でドメイン駆動設計(DDD)に関する本の輪読会を行った時の話です。
背景から輪読会の進め方、そして実開発への影響をサクッとまとめましたので、最後まで読んでいただけると嬉しいです!
輪読会の背景
私たちのチームでは、バックエンドのアーキテクチャの設計にクリーンアーキテクチャを採用しています。これにより、ビジネスロジックをドメインレイヤーに集約し、保守性の高いコードを維持することを目指しています。
ただサービスが大きくなってくると、仕様が複雑になってドメインレイヤーの実装も難易度が増してきます。そこで、ドメイン駆動設計の考えをチームみんなで学ぶことで、ドメインレイヤーの実装をより保守性の高いものにしていきたいと考えました。
輪読会の内容
進め方
以下のような形で進めていました
- オンラインで週に1回1時間
- 1人が画面共有しながら音読していき、キリの良いところで切り上げてその後は議論
議論はざっくばらんに気づいた点や疑問等を話し合う感じでした。以下のような感じです。
扱った本
輪読会にて以下の2つの本を扱いました。
『ドメイン駆動設計 モデリング/実装ガイド』では、ユビキタス言語等のDDDの基本的な概念や各種ドメインモデルについて学びました。
この本はDDDの基本的な概念を丁寧に説明してくれているので、DDDについてあまり知らないメンバーにも読みやすかったかなと思います。
次に『Domain-Driven Design with Golang』を通じて、Go言語におけるドメインモデルの実装方法を詳しく掘り下げました。
具体的な実装を元に解説されていたため、Go言語でDDDを実践する際の参考になりました。
ちなみにこちらの本は全て英語だったので、ややハードルが上がってしまったかなと思います。
一応画面共有して音読する際は、DeepL等で翻訳を出すようにしました。
輪読会を終えて
輪読会の感想
個人としてもチームとしてもDDD勉強会をして非常に良かったと感じています。
当初、Go言語はオブジェクト指向言語ではないし、DDDを適用することが難しいと感じていたのですが、今回の書籍を読んでGo言語でもDDDの考え方を取り入れると嬉しい点が多いと感じることができました。
チームとしてはユビキタス言語の重要性を再認識することができました。
実際にメンバーから「ユビキタス言語がないと開発しにくい」という声も上がるくらいになったのはとても良かったです。
実開発への影響
実開発では、以下のような影響がありました。タイトルの通り、読書会により開発がちょっぴり良くなったなと感じています。
- ユビキタス言語が管理されるようになった
- 新しい機能については、毎回ユビキタス言語をまずは設定するようになりました。
- これにより、開発メンバー間での認識を合わせやすくなりました。
- ドメインモデルを意識した実装ができるようになった
- 読書会直後の機能開発から即実践したので、学習効果が高かったように思えます。
- レビューの際、責務の分離やドメインモデルの実装についての議論が増えました。
- チームとしてドメインレイヤーの実装が保守性の高いものになっているかを意識できるようになりました。
おわりに
ここまで読んでいただきありがとうございました!今回はDDD勉強会についての紹介でした!
ただやっただけではなく、実際の開発に活かすことができて良かったです。
弊社ではいっしょに働いてくれるエンジニアを募集中です。社員でもフリーランスでも、フルタイムでも短時間の副業でも大歓迎なので、気軽にご連絡ください!
Discussion