👨‍🏫

DDD WorkShopのイベントレポート!

2021/12/29に公開

概要

2021の12月に、株式会社CauchyE、株式会社PoliPoliの合同で2021年の12月にかけてDDDワークショップをしました。ワークショップの内容はイベント参加者と共に、ある仕様に対してEntity、ユースケース処理を整理するというものです。

開催背景

PoliPoliメンバーの中でよりDDDを勉強したいという機運が巻き起こり、実践的に近づけたDDDのイベントがあまりなかったので作ってみました。株式会社CauchyEさんにもお声がけしました。

DDDとは何か

ドメインの知識に焦点をあてた設計手法。

詳しくは以下をご覧ください

ワークショップ内容

ドメインマスター(仕様に関する意思決定者)とドメインアーキテクト(仕様の設計者)に別れて、以下のことを行いました。

  1. あるユースケースに対するEntity図の作成
  2. Application層(LayerdArchitectureに基づく)の処理を書くこと。

参加者の紹介

ドメインマスター

ドメインアーキテクト

仕様

GoogleCalenderで(イベント|予定)作成をしたい(編集、削除はしない)

留意点

  • 作成同時に参加者にメール通知(主催者にはメール通知しない)
  • リマインダーメールは全員に送信

  • GoogleMeetの登録は外部サービス
  • 色はGoogleCalenderにある色のみでおk
  • 編集、削除は後で機能追加していく想定
  • イベント=予定

作成に必要な情報

  • 日時(期間も含む)
  • タイムゾーン
  • 招待するメールアドレス
    • カレンダーの招待
    • イベントの招待
  • メモ(markdown)
  • GoogleMeet追加
  • 既定の色
  • 場所をmap指定
  • リマインダー(n分前アラート)

クライアントに返して欲しい情報

  • 送信したメールアドレス
  • 期間

できたらこの仕様を追加

  • 繰り返し機能
  • 終日機能
  • ゲストの権限
  • リマインダーの時間を個々人で変更
  • 予定以外の不在とかも必要

成果物

作成してもらったEntity図はこちらです!

ユースケース処理は途中ですが、以下まで行いました。

CreateEventUsecase

前提として入力パラメータのバリデーションは済んでいる

- ゲストが存在するかチェックする(ユーザーリポジトリ) UserRepository
    - Googleアカウントだったらイベント作る
- Eventエンティティを作る EventEntity
    - domain層 でバリデーション(タイトルの長さとか)
- Eventエンティティを保存する(リポジトリ) EventRepository
- イベント作成をゲストに通知する event.notice()
- リマインドの登録をする

参加者の感想

- 仕様を考えるのが楽しかった。やってかないと慣れが必要だった
- 個人でサービス作った時は全然やってなかった。こんなに細かくやるんだって考えるんだなって勉強になった。
- 見てて全員が参加できてフリーライダーができずによかった。結局まぁ実務に応用できるといいかな
- どううまく抽象化するか難しかった。あとは言葉尻も確信持てなかった
- 早かった、、

まとめ

短い制限時間の中で、設計を行うというのは、業務に応用できる経験になったのかなと感じました。次からはもっとイベントを洗練させて、色々な方と一緒にやっていきたいです!

最後に

皆さんも、PoliPoliで一緒に幸せに鬼コミットしませんか?

Discussion