BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ドメイン駆動設計における関数型パターン

ドメイン駆動設計における関数型パターン

原文(投稿日:2014/05/31)へのリンク

ドメイン駆動設計 (DDD)は開発者がドメインモデルとユビキタス言語をつくり出すことを促すのに大きな成果を上げているが、DDDの概念を状態と振る舞いというオブジェクト指向の原理を使って実装しようとすると、しばしば混乱した変わりやすいモデルができあがる、とDebasish Ghosh氏はドメインモデル作成における関数型パターンについてのブログ投稿で述べている。

ACMの上級メンバーでありDSLs in Actionの著者でもあるDebasish氏は、モデルは特定のドメインについての抽象化に関するすべての概念が一つのクラスに置かれているという意味ではリッチだが、このことによってクラスは全体としてというより局所的な視点で崩れやすくなる。結果として、あるドメインのすべての抽象を構築する際に、クラス境界のインピーダンス不整合を解決するためだけに必要なコードでひどく汚されてしまいかねない、と異議を唱える。

氏は議論の中で、近頃関数型プログラミングの原理がドメイン駆動設計での改善に役立ち得ると主張したDean Wampler氏について言及している。Dean氏は"モデルはつまらないものであるべきだ"と主張し、ドメインオブジェクトは状態のみをもち、振る舞いはスタンドアローンな関数の中に入れてしまうべき、というプラクティスを推進している。

Debaish氏が反対しているもう一つの主張が状態と振る舞いを一つのクラスにまとめることでカプセル化が促進されるということである。その代わりに、ドメインの振る舞いをスタンドアローンな関数として構築することにより、DDDの原理に沿った形でドメインモデルをよりよくモジュール化し実現することができる、と考えている。そのとき、全てのドメインの振る舞いはアグリゲートを表すモジュールの中の関数としてモデル化される。

例として、氏が以前のブログ投稿の中で関数型プログラミングモデルを使ってDDDにおける仕様パターンとアグリゲートパターンを実装していたものを、ビルディングブロックとして関数型パターンと関数を使うことでドメインのユビキタス言語をモデル化する振る舞いを構築している。Debaish氏はDDDにおける一つの原理はドメインモデルの語彙を実装に高めるということであり、その結果として全体のシステムライフサイクルの中での機能性は明らかになる、と主張している。

Dean Wampler氏は同様の話題について4月のReact conferenceリアクティブデザインと言語パラダイムと題して講演している。

この記事に星をつける

おすすめ度
スタイル

BT