株式会社ブックテーブルに所属している榎本です。
2019年1月末に行われたドメインモデリングワークショップのレポートをお届けします。
今回、ワークショップの開催にあたり加藤潤一様(@j5ik2o, Chatwork株式会社所属)を講師としてお招きしました。
https://corp.chatwork.com/ja/recruit/engineer/kato.html
Kubernetesハンズオン(講師は技術本部 OpenSaaS Studioのテックリード @stormcat24 氏) https://developers.cyberagent.co.jp/blog/archives/19613/ から始まった技術本部の技術力向上企画ですが、今回行われたワークショップは勉強会第二回目となります。
技術本部内に展開されていたワークショップの開催情報でしたが、技術本部のChannelがオープンだったおかげでワークショップ開催の情報を拾うことができました。SlackのChannelは積極的にオープンにしていきましょう。
ワークショップ
ワークショップはソフトウェアの設計力向上の一環で企画され、ワークショップを通じてドメイン駆動設計のモデルに基づく設計を体験しました。
5~6人1チームに分かれ、対象ドメインはウォレットサービスで、APIサーバを開発する想定でワークショップが進められました。
(ワークショップの資料はこちらです https://speakerdeck.com/j5ik2o/domeinmoderinguwakusiyotupu )
前半は資料を元にアクターとユースケースの説明から始まり、資料に用意されているユースケースを元にイベントストーミングを用いてユースケースの分析、ドメインモデルの洗い出しを行いました。
模造紙とペンと色のついた付箋を4種類使ってドメインモデリングを行いました。色ごとに役割を決める必要がありますが、役割が決まっていれば色はなんでもいいそうです。
後半はチームごとに分析したドメインモデルをKotlinを用いて実装しました。私のチームにはKotlin識者がいたので、コーディング自体は識者にお願いしてチーム全員で議論しながら実装を進めました。
洗い出したドメインモデルから実装がずれていないかを中心に議論が進められたので、大きく出戻ることは無く進められました。
最後に全チーム設計の発表を行いました。
このようにプロジェクターにコードを表示しながらどういう実装をしたのかを各チーム発表し、各チーム加藤様からの講評をいただきました。
引きだとこんな感じです。
チームごとでモデルの分析と実装に特徴がありましたが、どのチームもそのクラスがどういう動きをするのか、影響範囲がどれだけあるのかがわかりやすかったと思います。
今回参加したドメインモデリングワークショップは資料の情報が潤沢だったこともあり、DDD未経験者にも手を動かしながら進めやすい内容でした。疑問点があってもすぐに質問ができたので、長時間悩むこともなく理解を深められたと思います。
DDDは私にとって普段行っている設計手法とは違った手法ですが、ドメインモデルの分析は既存のプロジェクトにも取り入れられそうなので、実践していきたいと思います。
懇親会
加藤様とCAエンジニア達の交流が行われました。加藤様を囲み、ワークショップに関する質問や発展した話の議論などで懇親会は盛り上がりました。
肉
加藤様を囲みワークショップの続きをする一同
最後に、ワークショップを主催と会場の準備をしてくださった技術本部のみなさん、講師をしていただいた加藤様ありがとうございました。