1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

「数億規模スタートアップのCTO講師」と「エンジニアキャリア専門のポテパン」が贈る、実践型Rubyスクール。

業務知識を中心に考える設計手法ドメイン駆動設計の基礎知識

Pocket

 はじめに

ソフトウェアの設計手法に自信はありますか?

ソフトウェアの設計手法には100%の正解はありませんから、独自に編み出したオリジナルの設計手法で開発している方も多いでしょう。もちろん成功すればそれでも構いませんが、先人がまとめ上げた設計手法を知ることも大切なことです。

この記事では、ソフトウェアの設計手法を知りたいエンジニアの方のために、「ドメイン駆動設計」についてお伝えしていきます。そのまま使ってもいいですし、自分の設計手法に組み込んでもよいでしょう。

 

ドメイン駆動設計ってどんなもの?

ドメイン駆動設計は、エリック・エヴァンス氏が自身の経験からベストプラクティスをまとめ上げたソフトウェア設計手法です。40以上の設計パターンから構成されています。同氏が経験豊かなためか非常に重厚な内容となっており、その一部を利用するだけでも十分価値のある内容となっています。

すべてが目新しいものというわけではなく、既存の設計手法も取り入れ、ドメイン駆動設計というひとつの設計手法にまとめ上げています。ドメイン駆動設計で中心となるのは、いうまでもなく「ドメイン」です。

ドメインとは、ソフトウェアが対象としている業務領域のことです。たとえば、会計ソフトであれば、会計処理の部分がドメイン領域ということになります。ドメイン駆動設計では、ドメイン領域に精通した「ドメインエキスパート」と協力して設計を進めていきます。ドメインエキスパートは、一般的にユーザーになることが多いでしょう。

 

ユビキタス言語で話す

エンジニアとドメインエキスパートは協力するために、同じ言語で話さなければいけません。とはいっても、英語とか日本語とかの話ではなく、ドメイン領域の用語の話です。

エンジニアは通常、ドメイン領域にはあまり詳しくないため、ドメインエキスパートが話す専門用語をうまく理解できないことがあります。そのため、話が通じなかったり、誤解を招いたりすることもしばしばです。

これを回避するために、ドメイン駆動設計では「ユビキタス言語」の一覧を作成します。ユビキタス言語とは、エンジニアとドメインエキスパート双方が理解できる共通用語です。プログラム上の名称もユビキタス言語で記述し、ドメインモデルとの整合性を保ちます。

 

ドメインモデルで設計する

ここで「ドメインモデル」という新しい用語が出てきました。ドメインモデルとは、ドメイン領域に存在するオブジェクトの関連性を示した図のことです。たとえば、会計ソフトなら顧客や請求書、口座などがオブジェクトになるでしょう。

オブジェクトにも、エンティティや値オブジェクト、サービス、ファクトリーなど複数の種類があり、それぞれに役割が異なっています。ドメイン領域のオブジェクトを正しくモデリングできなければ、ドメイン駆動設計はうまくいかないでしょう。

 

本格的に勉強するならこの書籍がオススメ!

ドメイン駆動設計のノウハウは膨大で、残念ながらこの記事内で伝えきることはできません。そのため、本格的に勉強したい方は書籍を活用しましょう。

まず読んでおきたいのは、考案者のエリック・エヴァンス氏が自ら執筆した「エリック・エヴァンスのドメイン駆動設計/エリック・エヴァンス/翔泳社」です。全576ページに渡って、ドメイン駆動設計について詳細に書かれています。

また、「実践ドメイン駆動設計/ヴァーン・ヴァーノン/翔泳社」もオススメです。こちらも前書に負けず劣らず内容がぎっしり詰まっており、Javaによるサンプルコードも豊富なので、実例を見たいという方に最適です。やや高度な内容なので、じっくりと読み進めていきましょう。

 

まとめ

ドメイン駆動設計についてお分かりになりましたか?ドメイン駆動設計は、かなり大掛かりな設計手法なので、どちらかと言うと大規模開発向けといえるでしょう。とはいえ、小規模な開発に使えないというわけではありません。すべてを実践しなくても、よい部分だけを取り入れてもOKです。型にこだわらず、プロジェクトに適切な設計手法を考えましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る