本日の作業
🚴 分報に関する設計・実装
🚴 Server側のDomain Eventの実装
Database(Prisma)の設計・実装
Supabaseの設定と開通
Supabase Auth
Supabase Database
🛑 🚴 イベントストーミングとサービスブループリンの融合についてzennにまとめる(休日にやる)
Domain Eventの実装方法について考える
Event Stormingで分析・定義したドメインイベント各種をDMMFで実装できるか試みます。
DMMF + TypeScriptの参考になる記事
参考記事の技術スタックは TypeScript + Prisma + tRPC + Next.js ( Pages Router ) です。Githubのリポジトリを見ると仕組みがわかります。
BackendとClientの画面との連携はtRPCのclientで、ドメインイベント毎にtRPCのエンドポイントを設けている感じ?
Remixで扱うケース
DMMF
このプロジェクトではBackend = Remixのloader/actionがDMMFを実行する本体となる。上の参考記事でいうところのtRPCのエンドポイントがloader関数やaction関数に相当する。
loader関数はリードモデル(CQRSのQuery)で、actionが(CQRSのCommand)という感じ。
ClientはRemixのForm要素かuseFetcherでリクエストを投げ処理のレスポンスを受け取り、useLoaderDataでデータの変更があればレスポンスを受け取る。
OOP DDD
useLoaderDataで受け取ったデータをUseCaseを介してRepositoryで集約に反映させる。
GatewayにuseFetcherのsubmitイベントを置いてUseCaseを介してRepository内でそのGatewayを呼ぶ。
ユーザのインタラクションはUseCaseを介してRepositoryから集約をupdateするなどして値オブジェクト検証結果を集約単位で返す。
外部サービスと直接やり取りする場合(例えば認証など)はClient側のGatewayにそのイベントを置く。
UseCaseを介して得た集約をFeature Sliced DesignのEntities Layerにで結合する。
Server側のデータやfetchイベントはEntititesのRemix用Contextで伝播させて取り扱う。
というわけで次回から実装なのでPrismaの方も実装していきます。
その他、メモ
毎日何か結構な文量のものをまとめていて残るのはいいがこれでは進みが悪い。でも残しておかないといつも次にやる時になんかやったけどどうだったっけ?となる。でも、しずかなインターネットを見返すのはなかなか。概要とか書けてそれがリストに出てくれるとかだといいのにな。
個人開発者の多くはリリースが終わるとSEOやASOやマーケティングに夢中になるぽく、機能追加はフェーズによって段階的に終わっていき、改善はぼちぼち行われる様子。フェーズに合わせたサポートやフォロワーとのコネクションができる様にするのはサポートする上で重要かもしれない。
売れる系はこういうユーザニーズやそれに合わせたペインがある。ただ、開発経験を主とする場合(要するに売れなくてもいいが作りたい場合)はこのニーズとはズレる。動き的にはユニークなアイデアを発明する人つまりは発明家になる気がする。どっちに進んでもニーズやペインを解決できる様にするのが良さそう。
これらをそれぞれ定義するなら資本家(サービス開発から利益を目指す人)と発明家(ニーズやペインからアイデアを考えて開発する人)でそのどちらもが重なる起業家(ニーズやペインから事業アイデアを開発し利益を目指す人)。