BT

ドメイン駆動設計とは - 金融取引アプリケーションを例に

| 作者: Jan Stenberg フォローする 37 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2015年4月13日. 推定読書時間: 2 分 |

原文(投稿日:2015/03/24)へのリンク

ドメイン駆動設計(DDD)とは,ビジネス目標を達成する上で,ドメインの専門家と開発者,その他の関係者のコラボレーションを重視したソフトウェア開発アプローチだ – Naresh Bhatia氏は,DDDの基本コンセプトをこのような説明で紹介し,比較的理解が容易と思われる金融取引のドメインから,中程度の複雑性を持ったシステムであるBullsfirstを例として選択した。

Archfirstの創業者でソフトウェアアーキテクトのBhatia氏は,今回の例を説明するにあたり,DDDの基本を学ぶ上で,氏が最も重要であると考えるものを取り上げている。

ドメインにおける共通理解を達成する上で必要不可欠なのが,ユビキタス言語(Ubiquitous Language)である。共通の用語を使うことにより,ドメイン専門家と開発者の議論で誤解の生じるリスクが最小限になると同時に,開発者がドメインの説明において,プログラム的な用語を使用することを回避できる。

コンセプト境界(Bounded Context)は,ビジネス的な視点から,さまざまな問題を個々のコンテキストに分けることによって,巨大なドメインをより小さなものに分割する手法である。ひとつのチームで扱える程度にモデルを小さくするべきだ,とBhatia氏は述べている。

ドメインモデルにおいて最も一般的な概念であるエンティティや値オブジェクト(Value Object)に加えて,氏は,自身が重要と考えるいくつかの概念をまとめている。

  • ドメインサービス(Domain Service)は,そのドメインの概念や,場合によってはオブジェクトのグループを対象としたビジネスロジックに関連するものであり,単一のエンティティに包含されない。ステートレスである場合も少なくない。氏が例として紹介したシステムでは,注文を約定して取引を行う,というビジネスロジックを備えたMatchingEngineがこれにあたる。
  • ドメインイベント(Domain Event)は,ドメイン内で発生する何らかの重要な事象を表現する。このようなイベントのみを共有することにより,コンポーネントを分離するために使用可能なものだ。
  • 集約(Aggregate)は,ユニットとして共同動作する,関連付けられたオブジェクトをグループ化するために用いられる。ひとつのオブジェクトを集約のルートに割り当てて,ユーザはそのメソッドのみを呼び出し可能とすることにより,他のすべてのオブジェクトを効果的に隠蔽できる。集約については以前にも,Vaughn Vemon氏が詳しく説明している

Bhatia氏が例に挙げたシステムであるBullsfirstは,REST Maturity Level 2準拠のRESTful APIを備えた,証券取引を目的とするオープンプロジェクトで,注文の約定と取引の実行を行う役割のExchangeと,注文を作成するOrder Management Systemで構成されている。使用されている技術はJava,.NET,FIX,メッセージング,Webサービスといったものだ。コードはここからダウンロードできる。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT