👨‍👩‍👧‍👦

DDD(ドメイン駆動設計)のまとめメモ✐

2024/10/16に公開

私のプログラミングに対する気持ちはサービス思考で、新しい技術を使いたいというよりも、
サービスや人のために技術を使いたくて、それに必要な技術に興味が湧くタイプなので、
ただの技術思考、サービス思考のタイプの違いかと思っていたけど、
そういう開発方法があることを知って、やってみたい〜!となった。

■ドメイン駆動設計(DDD)はどんなものか

業務で使う人のことを一番に考えられた開発手法
*開発者も業務をちゃんと理解した上で開発を行う
*業務に関わる人(非開発者)の意見や視点をソフトウェアの設計として反映させる

 →こうすることで、利用者が本当に欲しい使えるサービスができやすい
 (想定と異なる仕様や、使いにくいシステムになることを避ける)

■DDD(Domain-Driven Design)

ドメイン・ドライブ・デザイン

  • domein *ドメイン ・・その業務の領域(プログラムを適用する対象となる領域)
  • drive *駆動・・・・・力を加えて動かすこと、目的や契機によってある働きをすること🚜
  • design *設計

■どうやっていくか

設計で、業務の知識を持つ人と開発に関わる人が一緒にドメインモデルを作っていく。
このときに非開発者も含めたプロダクトに関わる全ての人が分かる言葉を使って作っていく。

●ドメインモデルは、業務内容や業務ルールを図や文などで表現したもの(業務内容を表すモデル)

  • 顧客側🧑‍🏫:どんなシステムができるか分かる、意見も反映できる
  • 開発側👩🏻‍🔧:ドメインモデルをそのままコードに落とせるよう作る
     →両者に齟齬がないように進むので、顧客が欲しいものを実現できる

■大事なこと

一度で完璧なものはできないので顧客のフィードバックを繰り返し受けて、
ドメインモデルの見直しもしながら改善していく。

■ドメイン駆動設計を実現するために

● 顧客側と開発側の共通認識のためにドメインモデルが必要で、
 ドメインモデルの表現にはオブジェクト思考(エンティティ、値オブジェクト、リポジトリ)が必要。
● 顧客の状況に合わせて機能拡張や修正が必要なので、高い保守性が必要。

DDD(開発手法)に沿った設計方法がクリーンアーキテクチャ(設計思想)
ドメイン駆動設計を効率よく行うためのアーキテクチャは決まっているわけではないけど、
大体クリーンアーキテクチャの設計思想が使われる。

Discussion