エンティティ
DDDやクリーンアーキテクチャではエンティティという用語が登場するが、そもそもエンティティとは何なのかや、DDD・クリーンアーキテクチャでのエンティティが指す意味が異るのでまとめる エンティティとは
英語の一般名詞として、実在物のこと、または組織や団体など物質的な実体に限らず実存する概念のことを指す。
つまり、かなり抽象的な概念なため、文脈によって意味が異なってしまう。
エンティティという用語が、DDDやクリーンアーキテクチャに登場するが、それぞれ目的が異るのでエンティティの意味も異る
DDDの目的
ソフトウェアで解決したいドメイン(専門領域)をドメインに詳しい専門家を交えて、コードに落とし込む開発手法
ドメインとコードの乖離を埋めることが目的
クリーンアーキテクチャの目的
アプリケーションのコア機能がFWなどの外部実装に依存しないようにすることで、システムの柔軟性とテスト容易性を高めること
変更に強いシステムにすることが目的
DDDにおけるエンティティ
かなり簡単にまとめると「同一性によって識別されるモデル」
現実世界に存在する概念を抽象化したドメインモデルに対して、IDなどの識別子を与えることで区別可能にしたモデル
他にも、可変であることや、ライフサイクルがあるなどの特徴がある
また、ビジネスの操作やビジネスロジックを持つ
クリーンアーキテクチャにおけるエンティティ
上記の原文を参考にすると、エンティティは「ビジネスルールをカプセル化したメソッドのあるオブジェクトやデータ構造と関数の集合」と書かれている
つまり、DDDにおけるエンティティやドメインサービスも含めた層を1つのエンティティとして表現している また、エンティティはシステムのコア部分であり、他の部分とは独立すべき
データベースにおけるエンティティ
データの永続的な保存や検索、更新を効率的に行うための構造を定義
データの整合性や効率的なアクセスを目的とする