レイヤードアーキテクチャ - 1m-llc/Flutter-KtoK GitHub Wiki

用語

  • DDD
    • ドメイン駆動設計(Domain-driven design, DDD)とはソフトウェアの設計手法であり、「複雑なドメインの設計は、モデルベースで行うべき」であり、また「大半のソフトウェアプロジェクトでは、システムを実装するための特定の技術ではなく、ドメインそのものとドメインのロジックに焦点を置くべき」であるとする
  • CRUD
    • 永続性の4つの基本機能のイニシャルを並べた用語。 その4つとは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)である。
  • ELT
    • 「Extract(抽出) Load(書き出し)Transform(変換)」の略です。

レイヤードアーキテクチャとは

責務を適切に設定して依存関係を明確にするという目的があります。

依存方向 責務 説明 詳細 具体例
表示 UI層 表示における関心事を取り扱う層 ドメインの情報を書き換えるといった操作はすべてApplication層を介して行い、直接ドメインオブジェクトに影響を与える操作はUI層で行わないようにします。 Web or Native
アプリケーション Application層 ユースケース毎にドメインオブジェクトのコーディネートの関心事を取り扱う層 UI層からのリクエストに対してCRUD・ELTを行う層。ドメインの情報を書き換えるといった直接的な操作はドメインオブジェクトの振る舞いを介して行い、直接ドメインオブジェクトの値を変える操作はApplication層で行わないようにします。DBなどの永続化への影響のある操作も行いません。 Application
ビジネスルール Domain層 ビジネスルール・仕様の関心事を取り扱う層 ドメインの情報を書き換えるといった直接的な操作を行います Domain
技術基盤 Infrastructure層 永続化テクノロジーの関心事を取り扱う層 DB、メモリ操作といったテクノロジーに関する実装をこの層にまとめます MySQL or Postgre