アーカイブ:2021年 9月
-
ドメイン 企業には独自のルールや文化が存在しています。 分析対象となる問題領域(ビジネス課題)、全ての仕組みを理解するにはあまりに大きく複雑なため通常は「コアドメイン」と「サブドメイン」と言う適切なサイズに分割する。 コアドメイン…
-
DDDは、特定の技術に依存していないため自由にアーキテクチャを選択することが可能です。 以下は、ドメイン駆動設計と同時に語られることが多いアーキテクチャです。 アーキテクチャ選定のポイント 以下の要素が判断材料になります。 …
-
09.20
【DDD】「集約」とは?
集約とは? トランザクション整合性を保ちながら更新を行うオブジェクトのまとまりです。集約は主に「エンティティ」から構成されます。(IDで識別することが重視されるため)なお、「集約ルート」しか操作してはいけないです。 集約ルートとは? …
-
09.20
【DDD】トランザクション処理はどうするか?
トランザクション処理は技術基盤が主に関わる低次元な役割です。 普通に書くと「アプリケーションサービス」に対してトランザクションを記述しなければならなくなるでしょう。 そうすると、特定の技術基盤に「アプリケーションサービス」が依存…
-
09.19
【DDD】「ファクトリ」オブジェクトとは?
ファクトリとは? 作る知識に特化したオブジェクト 一般的な開発では、オブジェクトの生成は複雑な手順を必要とします。そうした手順を独立したオブジェクトとして切り出します。 DDDにおけるファクトリでは、「ユビキタス言語を用いて集…
-
09.19
【DDD】クラス間の依存度を下げるには?(DI)
あるクラス内で別クラスをインスタンス変数で設定していた場合、コンストラクタでインスタンス化すると依存性が上がってしまいます。なので、DI(依存性の注入)をすることで依存度を下げることが可能です。 DIとは? あるクラス(アプリケーション…
-
09.19
【DDD】「コマンドオブジェクト」を作る。
コマンドオブジェクトとは? 「アプリケーションサービス」の処理(登録処理や更新処理)を呼ぶ際に、今後の変更でいちいちシグネチャが変わってしまう可能性があります。 「アプリケーションサービス」のメソッドのシグネチャが増えるたびにいちい…
-
アプリケーションサービスとは? ユースケースを実現するためのオブジェクトです。アプリケーションとは利用者の目的に応じたプログラムのことを指しており、ドメインオブジェクト(ドメインサービス)とは概念的には対比される概念です。 例 例えば…
-
09.19
【DDD】「リポジトリ」について
リポジトリとは? データを永続化(保存)して、再構築(復元)するといった処理を抽象的に扱うためのオブジェクト。(メモリ上に展開したデータはプログラム終了したら消えてしまうので永続化が必要) オブジェクトのインスタンスをDBに保存、読…
-
09.18
【DDD】「ドメインサービス」とは?
ドメイン駆動設計では「アプリケーションサービス」と「ドメインサービス」の二つのサービスがあります。ここでは「ドメインサービス」について解説します。 ドメインサービスとは? 「値オブジェクト」や「ドメインオブジェクト」には振る舞い(文字数…