ドメイン駆動設計のメリット

顧客と開発者が同じ視点で資源を集中させて開発を行う手法

ドメイン駆動設計(DDDと略称で呼ばれる)とは、2003年にエヴァンス氏が著書の「ドメイン・ドライブン・デザイン」で提示したソフトウェアの開発技術です。
エヴァンス氏は企業の業務モデルと強い結び付きを持ちつつ進化しているソフトウェア構築のサポートを専門的に扱うコンサル・グループ「ドメイン・ランゲージ」の創設者でもあります。

エヴァンス氏はCPの黎明期である1980年頃から、複雑な業務用ドメインと技術的ドメインのビッグ・オブジェクト指向システムで、設計スキルとプログラミングを兼任して業務に当たってきたプロフェッショナルです。
オブジェクト指向は、プログラミング技術の1つのタイプで、各データを性質に応じた動作をも含む対象物と規定したうえで、システムを設計し、作製を行う新しい考え方です。
これまでの手続きをメインに据えたプログラミングの考え方に比較すると、より大規模なプログラムの開発が簡素に行えるようになります。

ドメイン駆動設計を簡略化して説明すれば「顧客とシステム開発者が業務を長期的な視野や複合的な思考で力や資源を統合して理解しあい、同じことを互いに異なる表現であらわすことなく共通の言葉を用いつつシステムを進展させる手法」を指します。
エヴァンス氏の提示によれば、具体的には、メンバーの共通言語としてユビキタス言語を使用してドメインモデルを構築し、コードとして実装するのです。
そして大規模で結合が細かすぎるシステムとなってしまうことがない様「ドメイン」と「コンテキスト」でシステムを分けて、「コアドメイン」と名付けられた最も重要な領域に資源を集中させて開発するのです。

ソフトウェア開発の課題とドメイン駆動設計が解決してくれること

ドメイン駆動設計の手法が登場して10年以上が経過し、ドメイン駆動設計は着実に広く普及が進みました。
ドメイン駆動設計の普及のバックグラウンドに、システム設計・開発が年を追うごとに多機能化・複雑化しており、迅速なビジネスモデルの変化への対応が求められる時代背景が挙げられます。

これまでの様に、専門家が全てのシステムについて携わる手法、つまり設計者が綿密に時間をかけてシステムを設計し、設計書どおりにプログラミングするという旧来の手法では、顧客のニーズに機能と速度ともに遅れが出てしまうため、ビジネス的に成功が見込まれないのです。
そこで、ドメイン駆動設計は大規模なメインのシステムとデータベースで構築する手法を採らず、業務ごとに最適な独立システムに分けて考えます。
そして、顧客と開発者が認識を共有できるようにする目的で話す言語を共通化し、業務を表すドメインモデルを構築することにより、認識の差を減少させるのです。