個人開発者向けのサービスの開発記録 #42 20240227

tyshgc
·

本日の作業

  • 🚴 分報に関する設計・実装

    • ✅ 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をもとに自動で図を出力したりとかできると尚良さそう。まぁその辺は今の個人開発が落ち着いたらやるので今年の後半かな。

← #41 #43 →

@tyshgc
デザインファーム及びスタートアップ(上場)などを経てフリーランスとして、様々なスタートアップや大手企業の新規事業の立ち上げ期における事業設計・アプリケーションの設計・開発、サービスのUX分析とデザインとエンジニアリングの両軸でお手伝いさせていただいています。 現在、個人開発者向けの支援サービスを個人開発中。 X Account: @tyshgc