#69 wip DMMFのコマンド関数とバリデーション ─ 個人開発者向けのサービスの開発記録

tyshgc
·

本日の作業

本日は鎌倉もくもく会185回目でした。

  • 🚴 日報・分報のcommand/event/policyのまとめ書く

    • 🚴 commandでのバリデーション

    • 🚴 event, policy

  • 日報プレゼンテーション層(Remix loader/action)との結合

  • 日報画面実装

  • サインインの実装

    • 認証画面実装

    • 認証ロジック実装(主にClient側)

    • Server側の認証チェック実装

    • Client側の認証チェック実装

  • 🛑 🚴 イベントストーミングとサービスブループリンの融合についてzennにまとめる

  • 🛑 🚴 Feature-Sliced Designについてzennにまとめる

command関数にバリデーション

前回実装した「日報を記録する」コマンド関数。

その後少し見直して、「日報を記録する」ではなく「日報を作成する」コマンド関数として修正しました。修正の理由は、日報の編集との絡みでその方が進めるにあたってわかりやすいという判断です。

このコード二つ気になる点があります。

  1. prisma(永続層)とのやり取りのコードとDTOがcommand関数に書かれてあって複雑なものになってくるとコードが長くなる

  2. 入力に対してバリデーションをしていない

  3. 開発者ユーザの情報が参照されていない

1は必要になったらDTOを返すGateway関数を設けてまとめるとして、2のバリデーションは必須なのでその辺を実装していきます。

バリデーションはcommand関数へバリデーション関数として渡します。バリデーション関数には開発者ユーザの入力する日報と開発者ユーザ情報を注入する必要があります。

ただこの部分の実装がいまいちどうするのが良いのかよくわかっていないので今調査中。

その他、メモ

  • DMMFは理解しては後退しを続けている感じ。高階関数や関数合成にすることのメリットもやんわりわかっているもののオブジェクト指向より今現段階では自分にとって直感的ではない。ワークフローがコードとしてわかりやすいはずだけど今回書いたEvent Storming図の中に隠れている関数型プログラミングに慣れていないことが問題な気がする。

  • OOP DDDにも関数型プログラミングのモナドパターンを取り入れる話もちらほら出てきているのでこの辺の実装経験は今やっておいた方が良い気がしているのもあって個人開発で試しているけど…このままではいつまで経ってもリリースできない…😶‍🌫️

← #68 

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