DDD(ドメイン駆動設計)とは何か - Hashimoto-Noriaki/IT-basic GitHub Wiki

DDDとは何か

ソフトウェア開発のアプローチで、複雑なビジネスドメインを理解し、 それに基づいてシステムを構築するための方法論のことです。 これだけだと何だかわかりませんよね笑

そもそもドメインって何?

インターネットのドメインとソフトウェア開発のドメインで2つの意味があります。 今回はソフトウェア開発のドメインがメインのお話です。

ここでのドメインは専門の領域のことで、ソフトウェアで問題解決しようとする領域です。

参考記事から引用すると 端的にいうと、DDDはソフトウェアで解決したい部分(専門領域)を、ソフトウェアの設計にそのまま反映させる、もっと簡単にいうと業務をちゃんと理解した上でソフトウェア開発を行うといった意味合いになります。

引用 https://qiita.com/kim_t0814/items/1a50bbdd8ef3ec780185#初めに

DDDの流れ

すごいざっくりですが、流れはこんな感じです。 業務を理解して、それを活かしてアプリを開発します。

!https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/e04d3d58-79fc-5384-5cc1-b6a008697ea1.png

引用  https://qiita.com/kim_t0814/items/1a50bbdd8ef3ec780185#初めに

問題点として、エンジニアが業務知識がわからない場合があります。

例えば 野球ゲームを作る時にエンジニアが野球のルールをわからないとどんな強強エンジニアでもお手上げです。

そこで業務に詳しい人とエンジニアでミーティングや打ち合わせをしていきながら開発します。

そもそもなんでDDDをやるのか?

Youtubeで以下の2点を述べられていました。少し難し目の表現を使います。

1.役に立つものを作ること ビジネスドメインの理解とモデリング(ドメインモデリング)。 開発者とドメインエキスパート(ビジネスの専門家)が協力して、ビジネスドメインを深く理解し、それをソフトウェアモデルに反映させることです。

2.長期間開発しても機能を拡張しやすいこと モデルをそのまま表現する実装 エンティティ、リポジトリなどの実装パターン

有益動画1

この動画にはドメインモデリングを解説した動画です。 スライドやドメインモデルをコードに落とす方法の動画が概要欄あります。 シリーズ動画になっています。

https://www.youtube.com/watch?v=HgtCKlOzRiQ&list=PLXMIJq1G-_66F9woQpidJfe4HHCFxdXaA

有益動画2

こちらはライブコーディングです。

https://www.youtube.com/watch?v=A2EU0paEVJ0&t=5701s

有益記事

https://zenn.dev/kohii/articles/b96634b9a14897

https://zenn.dev/hisamitsu/articles/809768cf51fecb

DDDが向いているプロジェクト

参考記事とChatGPTで確認してみました。

1.複雑なビジネスドメインを持つプロジェクト

2.大規模で長期間のプロジェクト

3.チームがビジネスエキスパートと連携できるプロジェクト

DDDが向いていないプロジェクト

1.小規模で単純なプロジェクト

2.時間と予算が限られているプロジェクト

3.ビジネスエキスパートと協力できない場合

ドメインの補足

インターネットではWebサイトやネットワーク上のリソースを特定する識別子です。 例えば"[example.com](http://example.com/)"というWebサイトのドメインは "[example.com](http://example.com/)" です。これは、 IPアドレスを人が覚えやすい形に変換したものです。

資料

[https://qiita.com/kim_t0814/items/1a50bbdd8ef3ec780185#:~:text=DDDとはDomain-Driven,と呼ばれています。&text=ドメイン駆動設計(英語%3A domain,ソフトウェア設計手法である。](https://qiita.com/kim_t0814/items/1a50bbdd8ef3ec780185#:~:text=DDD%E3%81%A8%E3%81%AFDomain%2DDriven,%E3%81%A8%E5%91%BC%E3%81%B0%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82&text=%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88%EF%BC%88%E8%8B%B1%E8%AA%9E%3A%20domain,%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E8%A8%AD%E8%A8%88%E6%89%8B%E6%B3%95%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82)

https://www.youtube.com/@little_hand_sdddagilechann6636

ChatGPT参照

https://zenn.dev/takasmerio/articles/8b30ccd51568e9

2023/12/29に公開