BT

DDDにおける重要なパターン

| 作者: Jan Stenberg フォローする 33 人のフォロワー , 翻訳者 笠原 王徳 フォローする 0 人のフォロワー 投稿日 2017年3月6日. 推定読書時間: 3 分 |

原文(投稿日:2017/02/28)へのリンク

パターンの重要性に関する議論の中で、ドメイン駆動開発以外の部分でも知っておくべき重要なパターンが多く存在する、とアムステルダムで開催された最近のDDD Europe Conferenceにおける自身の発表の中でCyrille Martraire氏は述べた。

最初のwikiの開発者として良く知られているWard Cunningham氏であるが、彼は最初にパターンについて記述した人物の一人でもある。最初の一連のパターンは情報の完全性に関するものであり、Martraire氏はこれら初期のパターンは分析パターンであり、より事業ドメインを理解するにはどういう観点が必要かということについて記載されたものであったと述べた。一例として例外値があり、これは不正値や0のような、特殊な場合を扱う全ての必要性を排除することにより、事業ドメインの記述方法としてコードを書くことを可能にするものである。彼が挙げた特に興味深いもう1つのパターンは診断用照会であり、これはオブジェクトがどうやって現在の状態に至ったかを説明できるようにすべきであることを示唆しており、ロギングやデバッグの必要性を置き換える診断能力である。この機構により、100ユーロの値を持った金銭オブジェクトが、ある量のUSドルにある量のポンドを加算したことによって生まれたものであるということを表現できるようになった。

もう1つのパターンの源はGang of Fourによるデザインパターンの書籍であり、この流れは90年代中盤に発生している。Martraire氏は、これらのパターンからドメインの概念や概念間の関係をモデリングするために特別に有効なものを4つ発見した。

  • Compositeパターンはツリー構造の中にオブジェクトを構成し、クライアントが個々のオブジェクトとオブジェクトの複合を統一的に扱うことができるようにするためのものである。
  • Interpreterパターンは言語内の文を評価するためのものである。
  • Flyweightパターンは、多数の細粒度のオブジェクトを利用することを可能とするためにオブジェクトの共有を行う。
  • Strategyパターンは、オブジェクトの使用方法からアルゴリズムを分離するためのものである。

キャリアの初期に、Martraire氏はMartin Fowler氏の書籍であるアナリシスパターンを発見した。この書籍で彼は個人向け銀行業務、医療、会計に由来する一連の新しいパターンを学んだ。彼は、多くのパターンを学び原則を理解することにより、新しいドメインにそれらを適用することができると考えている。しかし、これらをより深く理解するためには、単に現在の状況を学ぶだけでなく、パターンやアイデアの進化過程を追うことが重要であることを彼は強調した。

もしこれらのにパターンにまだ興味を持っていない場合、Martraire氏は設計について真剣に考えているかどうかを問いかけている。おそらく今現在の技術にあまりに焦点を当てすぎているのではないだろうか。一例にevent sourcingを挙げ、彼は既定の流儀として用いることをしばしば見かけるが、単純なCRUDモデルで十分な場合にも物事が不要に複雑になってしまうと述べた。ドメインモデル内部の作業により多くの時間を割き、もし問題を見つけた場合はより掘り下げてみるのである。もし新しいプロジェクトを好むのであれば、モデルを理解しないまま作業を終え、後に改めて見てみると、それら全ては単なるCRUDモデルであることを発見することもあるだろうとMartraire氏は考えている。スキルを磨き、より複雑なモデルに取り組むためには、ドメインモデルに関する深い知見が得られそうな成熟したレガシーシステムを確認するべきである。

Martraire氏は現在、DDDの概念・使用されるパターン、そしてコードに直接由来する他の設計概念のドキュメントを作成するために、どのようにアノテーションを使用するかということに関したliving documentationの書籍を執筆中である。

 
 

Rate this Article

Relevance
Style
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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