DDD(ドメイン駆動開発)で使用される語句
DDDを理解する上で知っておくべき、語句をまとめる。
####ドメイン
ソフトウェアで問題解決しようとする対象領域のこと
####モデル
問題解決のために、物事の特定の側面を抽象化したもの。ドメインモデルはドメインの問題を解決するためのモデル。
####ユビキタス言語
開発者とユーザーとの間で共通の厳格な意味を持つ用語を構築するというプラクティスを表すために使用した用語である。 ユビキタス言語はソフトウェアにおけるドメインモデルに基づいている。
DDD(ドメイン駆動設計)とは
DDD(ドメイン駆動設計)はソフトウェア開発手法の1つ。どのような開発手法か簡潔に説明すると、ドメインモデルをソフトウェア開発の中心にすえ、コードやコミュニケーションを常にドメインモデルと一体化させながら、ドメインモデルを反復的に深化させることでより価値の高いアプリケーションを生み出していこうとする手法である。
DDDとアーキテクチャ
presentation層
アプリケーション外部との入出力を実現する。JSONでレスポンスを返したり、HTMLをレンダリングして返したりといった選択はこの層の責務。主なクラスは、コントローラー、アプリケーション外部との入出力を定義するクラスがある。
usecase層
ドメイン層が公開している操作を組み合わせて、ユースケースを実現させる。特定のクライアントには依存しない実装にする。
domain層
ドメイン知識(ルール/制約)を表現する。この層を独立させ、他の層への依存を持たせないようにする。層自体を「ドメインモデル層」「ドメインサービス層」とする方法もある。
infrastructure層
下位レイヤで定義されているインターフェイスを実装し、アプリケーションを支える技術的な提供。