2024年04月23日

質問者さん

DDDを導入したく考えています。 ただ更新系をリポジトリパターンに全て当てはめるのはコード量、労力的に厳しいです。 一部のドメインのみリポジトリパターンで更新していくよう考えているのですが、他の更新系はどのように考えていけばよいでしょうか

2024年04月23日

松岡@ログラス/DDD,アジャイル

松岡@ログラス/DDD,アジャイルさん

新規か既存かで事情が分かれます。 新規プロダクトであれば、リポジトリパターンで統一することをお勧めします。変にハイブリッドにするとあとから複雑度が増して逆に大変になります。 既存の場合は移行期間としてハイブリッドにするしか選択肢がない、と言うことになります。その場合は、意味的にまとまりのあるところからリポジトリパターンに置き換えていく、しかないですね。テストで守りながら、その中でリファクタリングしていきましょう。 ちなみに、DDDを導入、と言うことであればモデリングから始めるのはお勧めですよ!モデリングは小さなコストで実施できる割にリターンが大きいです。 DDDはモデリングと実装パターンの両方が掛け算で効果を生み出しますが、実装パターンを使用しなくても、モデリングだけでも効果が得られます。こちらの動画・記事を参考にしてみてください。 https://www.youtube.com/watch?v=HgtCKlOzRiQ&t=4s https://little-hands.hatenablog.com/entry/2022/06/01/ddd-modeling

松岡@ログラス/DDD,アジャイルさんに 質問してみましょう!

松岡@ログラス/DDD,アジャイル

松岡@ログラス/DDD,アジャイル

DDDや設計にお困りの方はDMにてご相談ください。講義、モブモデリングやコーディングなどご要望に合わせた進め方でサポートします(オンライン)。 YouTube: https://www.youtube.com/channel/UCbHtbIUxtfGjrDy1WcqxExw

松岡@ログラス/DDD,アジャイルさんが

最近答えた質問

07月17日

ドメインモデル図の作成について教えてください。 考えられるユースケースが3つあったとして、まず1つ目のユースケースに絞ってドメインモデル図を作成したとします。 その後に2つ目のユースケースに対してドメインモデル図を作成するとき、1つ目を拡張する形で作るのでしょうか? それとも別個のドメインモデル図として作った方が良いのでしょうか?

07月08日

ドメインモデルのコンストラクタ内でランダム値を生成する設計とテストについて相談です 現在、ドメインモデルのコンストラクタ内で各プロパティのルール検証を行いつつ、特定のプロパティ(紹介コードなど)にはランダムな値を生成しています。 この場合、テストコードで構造体の完全一致を検証することができず、設計とテストの整合性について悩んでいます。 私が考えた案は以下の通りです: ➀ランダム値生成を関数引数として外部から渡す設計に変更(依存注入) ➁構造体全体ではなく、必要なフィールドのみを個別に比較する ➂テスト時のみランダム生成関数にフックを仕込んでモック化する ただし、③の方法については、今後モックが複数発生しテストが肥大化していく懸念があります。 ご相談したい点 ・上記のような状況において、松岡様が考える最も適切な対応方針はどれでしょうか? ・そもそも、コンストラクタ内でランダムな値を生成すること自体が設計としてNGなのかどうかもご意見いただきたいです。 なお、似たようなパターンとして、ユーザーモデルのコンストラクタ内でパスワードのルール検証後にハッシュ化を行っているケースもあり、 こちらも構造体の完全一致によるテストができていない状態です。

07月08日

DB更新でユーザーIDを格納する場合、ユーザーIDは集約に含めるべきですか? それともリポジトリの実装側でセッションから直接取得しますか?