[システム開発] ドメイン駆動設計
Cloud システム開発
Published : 2020-11-24   Lastmod : 2020-11-24

ドメイン駆動設計の特徴とメリット・デメリット

ドメイン駆動設計の特徴とは?

ドメイン駆動設計(Domain-driven design) とは、ソフトウェア開発における手法のことを言い、Eric Evans(エリック・エバンズ)が提唱したものです。DDDと略して呼ばれることも多く、ソフトウェア開発の価値をモデリングによって高めていこうという狙いがあります。顧客にとって役立つソフトウェアを開発するために、価値ある知識とそうでない無価値の知識をしっかりと選別していこうとするのがドメイン駆動設計なのです。

より良いソフトウェアを開発するためには、顧客を取り巻いている世界をまず知ることが大切になります。価値のあるソフトウェア開発を成功させるためには、まず顧客が抱えている問題をいち早く見極め、解決できるようにベストな選択を行っていく必要があるのです。ドメイン駆動設計では、数々のモデリングを繰り返し行いながら設計を行い、価値のある知識、正しい知識をコードに埋め込んでいくことを目指しています。

システム開発が年々複雑化していることで、それに対応できるように素早いシステムの変更が求められます。従来の方法だと、顧客が求める機能、スピード、言葉の解釈にズレが発生してしまい、ビジネスを成功させるのが非常に困難でした。そこで、ドメイン駆動設計は規模の大きい1つのシステムとデータベースで構築していくのではなく、業務に最適な独立したシステムへと分割させ、開発を進めていくのです。

ドメイン駆動設計の特徴は、顧客とソフトウェア開発者で話す言葉を共通化してドメインモデルを構築することで、ズレを大幅に減らしていていけるようにするということになります。なお、ソフトウェア開発におけるドメインですが、プログラム適用の対象となる領域のことです。ドメインには領域、住所という意味があり、例えば、私たちのメールアドレス、サイトのURLで使われるインターネット上の住所という意味合いがあります。

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

ドメイン駆動設計にはさまざまなメリットがありますが、主なメリットとしては下記になります。

  • 本当に必要となる知識を選別できる
  • 顧客の悩みを解決できる可能性が高くなる
  • 業務効率が上がり顧客とのズレを改善できる

これらが、ドメイン駆動設計の主なメリットです。

1つ目のメリット

1つ目のメリットですが、ドメイン駆動設計はたくさんのモデリングを行って本当に必要な知識とそうでない知識を選別していくため、価値のある知識だけだけを抽出することができます。

2つ目のメリット

2つ目のメリットは、ドメイン駆動設計により、顧客が抱える悩みを迅速に解決できる可能性が高くなるのです。顧客が今どのようなことで問題を抱えているのか、どのようにすればそれを解決することができるのかを手助けするため、問題解決の糸口を見つけやすいのがメリットになります。

3つ目のメリット

3つ目のメリットは、ドメイン駆動設計によって業務効率が上がることです。従来の手法と違ってドメイン駆動設計は無駄な工程を大幅に省くことができます。なぜなら、ドメイン駆動設計ならば、業務に関する知識をドメインとしてそのままコードに埋め込んでいくのでズレが生じにくく、開発をスムーズに行うことができるためです。顧客とソフトウェア開発者で話す言葉を共通化しドメインモデルを構築することで、言葉のズレ、解釈の違いを防ぐことが可能となります。

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

ドメイン駆動設計には、デメリットも存在します。ドメイン駆動設計のデメリットは下記になります。

  • 多くの業務知識が必要となる
  • 経験やスキルがなければ開発を成功させるのが難しい
  • 新たなコストがかかる

これらが、ドメイン駆動設計の主なデメリットです。

1つ目のデメリット

まず1つ目のデメリットですが、ドメイン駆動設計を構築させるためには、多くの業務知識を有するかなり優秀な開発者の存在が必要となります。そのため、プログラムの運用は決して簡単なことではないのがデメリットです。

2つ目のデメリット

2つ目のデメリットは、経験やスキルがなければ、開発を成功させるのがかなり難しいことです。それだけのスキルがドメイン駆除設計では必要となるために、ドメインをそのままコードに埋め込みプログラム開発を進めていくのは難易度が高いと言えます。経験豊富でスキルのある開発者がいなければならないのがデメリットです。

3つ目のデメリット

3つ目のデメリットは、新たなコストがかかることになります。当然、ソフトウェアを開発するにはコストを余分にかける必要があります。そのため、資金がなく運用が苦しい場合には、開発を進めていくのが非常に大変と言えるでしょう。ドメイン駆動設計を成功するためには、かなりの費用がかかってしまうことも考えられるのです。

ドメイン駆動設計にはメリットとデメリットの両方の点がありますが、価値あるソフトウェア開発のためには非常に優れた手法となるため、開発には欠かすことができないのがドメイン駆動設計です。ドメイン駆動設計について正しく理解することで、役立つ場面がたくさんあるのではないでしょうか。

関連する記事