DDD(ドメイン駆動設計)とは何か - Hashimoto-Noriaki/IT-basic GitHub Wiki
DDDとは何か
ソフトウェア開発のアプローチで、複雑なビジネスドメインを理解し、 それに基づいてシステムを構築するための方法論のことです。 これだけだと何だかわかりませんよね笑
そもそもドメインって何?
インターネットのドメインとソフトウェア開発のドメインで2つの意味があります。 今回はソフトウェア開発のドメインがメインのお話です。
ここでのドメインは専門の領域のことで、ソフトウェアで問題解決しようとする領域です。
参考記事から引用すると 端的にいうと、DDDはソフトウェアで解決したい部分(専門領域)を、ソフトウェアの設計にそのまま反映させる、もっと簡単にいうと業務をちゃんと理解した上でソフトウェア開発を行うといった意味合いになります。
引用 https://qiita.com/kim_t0814/items/1a50bbdd8ef3ec780185#初めに
DDDの流れ
すごいざっくりですが、流れはこんな感じです。 業務を理解して、それを活かしてアプリを開発します。
引用 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に公開