ドメイン駆動設計(DDD)
Domain-driven Design/どめいんくどうせっけい
ひとことで言うと
業務の言葉や流れをそのままコードの形に写し取って、ソフトを設計する考え方です。
📖 もうちょい詳しく
何が新しいの?
ソフト開発では、技術の都合を先に決めてしまい、肝心の業務とコードがズレていく問題がよく起こります。ドメイン駆動設計(DDD)は、その「業務そのもの」を設計の中心に置こう、という考え方です。「ドメイン」とは、そのソフトが扱う業務領域のことを指します。
どうやって動いてるの?
まず業務の担当者と開発者が、同じ言葉づかいを決めて会話します。これを「ユビキタス言語」と呼び、その言葉をクラス名やメソッド名にそのまま使います。さらに業務を意味のかたまりごとに区切り、それぞれを「境界づけられたコンテキスト」という単位で分けて、混ざらないように設計します。
何ができるの?
業務ルールが変わったとき、どこを直せばよいかをコードの中から見つけやすくなります。担当者と開発者の会話のズレも減ります。注文・在庫・請求のように業務が複雑なシステムほど、効果が出やすい設計手法です。
🌱 身近なたとえ
会社の組織図で例えると分かりやすいです。総務・経理・営業が、それぞれ自分たちの言葉とルールで動いていますよね。DDDも同じで、業務を部署のように区切り、各区切りの中では用語の意味を一つに統一します。区切りをまたぐときだけ、橋渡しのルールを用意するイメージです。
✅ まず覚えるポイント
- DDDは「業務(ドメイン)」を設計の真ん中に置く考え方です
- 業務担当者と開発者が共通の言葉「ユビキタス言語」を決めます
- その言葉をそのままコードの名前に使います
- 業務を「境界づけられたコンテキスト」で意味ごとに区切ります
- 業務が複雑なシステムほど効果が出やすいです
- 特定のツールや言語ではなく、設計の方針・考え方です
🧭 よくある勘違い
DDDは特定のフレームワークやライブラリですか?
いいえ、DDDは道具ではなく設計の考え方です。インストールして使うものではありません。どの言語でも実践でき、考え方に沿ってコードの作りを整えていくものです。
データベースの設計とは違うの?
重なる部分はありますが、出発点が異なります。表(テーブル)の形から考えるのではなく、業務の振る舞いやルールから考えるのがDDDの特徴です。データの保存方法は、その後ろに置く形になることが多いです。
小さなアプリにも必ず使うべき?
そうとは限りません。DDDは学ぶ手間がそれなりにかかるため、業務がシンプルなものでは重たく感じる場合があります。業務ルールが複雑で、長く育てるシステムほど向いています。
🧩 関連して覚えると楽な言葉
- データモデリング: 扱うデータの形や関係を整理して設計すること
- マイクロサービス: 業務の区切りごとにサービスを分けて作る方式
- オブジェクト指向: データと振る舞いをひとまとめにして考える設計の土台
- デザインパターン: よくある設計の悩みに対する定番の解き方
🏁 ひとことでまとめ
DDDは、業務の言葉とルールをコードの形にそろえて、複雑なシステムを迷子にならず育てるための設計の地図です。
TERM SEARCH
ほかの用語を調べる
検索ボックスを準備中…