本日の作業
🚴 分報に関する設計・実装
✅ Model・Repository実装
UseCase Hooksと結合実装
Domain EventとPrismaの実装
Supabaseの設定と開通
Supabase Auth
Supabase Database
🛑 🚴 イベントストーミングとサービスブループリンの融合についてzennにまとめる(休日にやる)
分報に関する設計・実装
OOPベースの薄いDDDで進めてます。ただしこれはフロントエンド(client side)での採用です。サービスドメイン的にはBtoC/BではなくCtoCなのでユーザが基本全員Cでバックヤードの業務ドメインイベントはなさそうですが、外部システムとの連携など機械的なバックヤードは存在するのでその辺はDMMFで実装を進めてみようと思っています。
集約・エンティティについて
モデリングは概念モデルをNotionでまとめてます。さらにビジネスユースケースやアクター、バリエーション・条件などもまとめ、NotionのDatabase機能でそれぞれをリレーション張って関係がわかる様にしています。
下の画像の左が要件定義や設計を行う際のNotionの構成で、右が概念モデルです。開発記録集約に日報エンティティが存在します。
日報エンティティは、任意で選択した分報コレクションを持つような概念としてモデリングしました。これをコードに落とし込みます。
尚、このドメインモデルは概念ベースなので実装上(つまりはアプリケーション上)の知識や責務を考慮した際にこのままの形ではなくなります。
尚、分報は1日の活動を常時・適宜記録するレポートで、かつ公開・非公開・限定公開などのバリエーションがあります。
それらを踏まえた実際のコードはおおよそ書き終わりましたが他の責務や集約などの実装を踏まえてまた見返すようにするのでその際に一部所感などまとめを書きます。
Repositoryの役割
リポジトリについてはこの記事のアンチパターンにならないようにし、DDDでのリポジトリパターンを参考にすると良いです。
その他、メモ
やっとモデル実装に戻れた。が、仕事が絶賛忙しい。
しずかなインターネットは静かに書けるけど、技術的なまとめを書くにはコードブロックなどがないので辛い。zennのスクラップはある一つのトピックについて書き連ね記録するにはいいけど一覧できないので辛い。
Notionを使ったモデリング・要件定義について先日DDD界隈のエンジニアさんと話してパッと見で良さそうとの意見もらえたのでどこかでまとめたい。あとRDRAとかの流れを踏んでいるのでNotionをもとに自動で図を出力したりとかできると尚良さそう。まぁその辺は今の個人開発が落ち着いたらやるので今年の後半かな。