👨🏫
DDD WorkShopのイベントレポート!
概要
2021の12月に、株式会社CauchyE、株式会社PoliPoliの合同で2021年の12月にかけてDDDワークショップをしました。ワークショップの内容はイベント参加者と共に、ある仕様に対してEntity、ユースケース処理を整理するというものです。
開催背景
PoliPoliメンバーの中でよりDDDを勉強したいという機運が巻き起こり、実践的に近づけたDDDのイベントがあまりなかったので作ってみました。株式会社CauchyEさんにもお声がけしました。
DDDとは何か
ドメインの知識に焦点をあてた設計手法。
詳しくは以下をご覧ください
- https://qiita.com/little_hand_s/items/721afcbc555444663247
- https://little-hands.hatenablog.com/entry/2018/12/17/what_is_ddd
ワークショップ内容
ドメインマスター(仕様に関する意思決定者)とドメインアーキテクト(仕様の設計者)に別れて、以下のことを行いました。
- あるユースケースに対するEntity図の作成
- Application層(LayerdArchitectureに基づく)の処理を書くこと。
参加者の紹介
ドメインマスター
-
木村(CauchyE)
- 職種: CEO, CTO
- 注目する技術: 深層学習カーネルを使ったガウス過程、COSMOS
-
シュレック(PoliPoli)
- 職種: CTO
- 注目する技術: 自然言語処理
ドメインアーキテクト
-
松岡さん(CauchyE)
- 職種: フロントエンド
- 注目する技術: NEM Symbol, COSMOS(ブロックチェーン)
-
ゆーたろーさん(CauchyE)
- 職種: フロントエンド
- 注目する技術: React, JSの実行環境(Deno)
-
高野さん(PoliPoli)
- 職種: フロントエンド
- 注目する技術: バックエンドやりたい
-
八木ちゃん(PoliPoli)
- 職種: バックエンド
- 注目する技術: AWS
仕様
GoogleCalenderで(イベント|予定)作成をしたい(編集、削除はしない)
留意点
- 作成同時に参加者にメール通知(主催者にはメール通知しない)
- リマインダーメールは全員に送信
- GoogleMeetの登録は外部サービス
- 色はGoogleCalenderにある色のみでおk
- 編集、削除は後で機能追加していく想定
- イベント=予定
作成に必要な情報
- 日時(期間も含む)
- タイムゾーン
- 招待するメールアドレス
- カレンダーの招待
- イベントの招待
- メモ(markdown)
- GoogleMeet追加
- 既定の色
- 場所をmap指定
- リマインダー(n分前アラート)
クライアントに返して欲しい情報
- 送信したメールアドレス
- 期間
できたらこの仕様を追加
- 繰り返し機能
- 終日機能
- ゲストの権限
- リマインダーの時間を個々人で変更
- 予定以外の不在とかも必要
成果物
作成してもらったEntity図はこちらです!
ユースケース処理は途中ですが、以下まで行いました。
CreateEventUsecase
前提として入力パラメータのバリデーションは済んでいる
- ゲストが存在するかチェックする(ユーザーリポジトリ) UserRepository
- Googleアカウントだったらイベント作る
- Eventエンティティを作る EventEntity
- domain層 でバリデーション(タイトルの長さとか)
- Eventエンティティを保存する(リポジトリ) EventRepository
- イベント作成をゲストに通知する event.notice()
- リマインドの登録をする
参加者の感想
- 仕様を考えるのが楽しかった。やってかないと慣れが必要だった
- 個人でサービス作った時は全然やってなかった。こんなに細かくやるんだって考えるんだなって勉強になった。
- 見てて全員が参加できてフリーライダーができずによかった。結局まぁ実務に応用できるといいかな
- どううまく抽象化するか難しかった。あとは言葉尻も確信持てなかった
- 早かった、、
まとめ
短い制限時間の中で、設計を行うというのは、業務に応用できる経験になったのかなと感じました。次からはもっとイベントを洗練させて、色々な方と一緒にやっていきたいです!
最後に
皆さんも、PoliPoliで一緒に幸せに鬼コミットしませんか?
Discussion