メモ:ドメイン駆動設計におけるモデルの効用と、モデルが満たすべき3つの基本的用法(私訳)

日本語版『エリック・エヴァンスのドメイン駆動設計』p.3の、「ドメイン駆動設計におけるモデルの有用性」の部分、大事なことを言っているような箇所なのに、文章のつながりや意味がイマイチとれなかった。そこで原著Kindle版を購入し、原文から自分なりに訳してみた。(私の訳文は若干補足的な文章になっている)

なお、この箇所は見出し(効用/有用性)と、中の箇条書きの構造とがマッチしていないので読みづらいのだと思う。各箇条書きの最初の文が「基本的使用方法」、つまり、モデルに求める条件となっていて、それを満たすとどのようなありがたいことがあるのか(=効用/有用性)の説明が続く、という構造なのだと思う。

 

The Utility of a Model in Domain-Driven Design

ドメイン駆動設計におけるモデルの効用

 

In domain-driven design, three basic uses determine the choice of a model.

ドメイン駆動設計では、モデルが満たすべき3つの基本的用法をチェックして、モデルの候補の中から使うモデルを決定する。

  1. The model and the heart of the design shape each other.
    そのモデルは、設計の核心と相互に方向付けあっていること。
    It is the intimate link between the model and the implementation that makes the model relevant and ensures that the analysis that went into it applies to the final product, a running program.
    モデルと実装とのリンクが徹底されていることこそが、モデルを実用的な地に足のついたものにする。また、モデルに行われた分析を最終的なプロダクト、つまり動くプログラムに適用することを保証する。
    This binding of model and implementation also helps during maintenance and continuing development, because the code can be interpreted based on understanding the model.
    このようにモデルと実装が結びついていると、メンテナンスや継続的な開発においても役立つ。モデルの理解に基づいてコードを読むことができるからだ。

  2. The model is the backbone of a language used by all team members.
    そのモデルは、チームメンバー全員が使う言語の骨格となること。
    Because of the binding of model and implementation, developers can talk about the program in this language.
    モデルと実装とが結び付けられているおかげで、開発者がプログラムのことを話す際に、この言語を使える。
    They can communicate with domain experts without translation.
    開発者がドメインエキスパートとやり取りする際に、言葉を翻訳して伝える必要がない。
    And because the language is based on the model, our natural linguistic abilities can be turned to refining the model itself.
    言語がモデルに基づいているため、私たちが持つ自然言語能力を、モデルそのものの改善に役立てられる。

  3. The model is distilled knowledge.
    そのモデルは、知識を蒸留していること。
    The model is the team's agreed-upon way of structuring domain knowledge and distinguishing the elements of most interest.
    モデルは、ドメイン知識をどのように構造化するか、および、ドメイン知識の中で最も興味のある要素をどのように識別するかについての、チームの合意を表す。
    A model captures how we choose to think about the domain as we select terms, break down concepts, and relate them.
    私たちがドメイン知識のなかから用語を選び、概念を分解し、それらを結びつけていくにつれ、モデルは、ドメインについてどのような見方を選択したのかを捉えるようになる。
    The shared language allows developers and domain experts to collaborate effectively as they wrestle information into this form.
    開発者とドメインエキスパートが、ドメイン知識に取り組みモデルを形作っていくにつれ、共有された言語が生まれ、開発者とドメインエキスパートが効果的にコラボレーションできるようになる。
    The binding of model and implementation makes experience with early versions of the software applicable as feedback into the modeling process.
    モデルと実装とが結びついていると、ソフトウェアの初期バージョンの利用経験を、モデリングプロセスへのフィードバックとして使えるようになる。