コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

ドメイン (ソフトウェア工学)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ドメイン、あるいは事業活動[1]事業領域[1]とは、ソフトウェア工学において、あるソフトウェアが対象とする領域[1]のことである。あるドメインに属する知識をドメイン知識という。

概要

[編集]

ドメインはその定義の範囲の広さに関わらず、あるプログラミングプロジェクトにおける適用対象を表す[2]。例えば、ある病院のためのコンピュータプログラムの作成を目的としたプロジェクトがある場合、ドメインはその病院となる。さらに、そのプログラムの対象を「全ての病院」に拡大した場合、ドメインは「全ての病院」となる。

コンピュータプログラミング設計においては、コンピュータプログラミングの領域において、ある問題を解決するために構築されたソフトウェアプログラムに共通する要件、用語、機能の境界を明確にすることによってドメインを定義することができ、これはドメインエンジニアリングと呼ばれる[2]

「ドメイン」という言葉は、「アプリケーションドメイン」の同義語としても用いられる。

ソフトウェア工学の領域におけるドメインとは一般に、アプリケーションが適用されようとしている対象の領域のことを指す。言い換えれば、アプリケーション開発において、ドメインとは、「アプリケーションのロジックが関係する知識と活動の領域」である。ー アンドリュー・パウエル=モース[3]

ドメイン: 知識、影響力、活動の領域。ユーザがプログラムを適用する対象領域をソフトウェアのドメインと呼ぶ。ー エリック・エヴァンス英語版[4]

ドメイン駆動設計(DDD)におけるドメイン

[編集]

ドメイン駆動設計(DDD)においては、事業領域内において同じ言葉を使うことによって、ある事業におけるドメインエキスパートとエンジニア間での事業活動に対する共通理解を形成する[1]。ここで、同じ事業領域内においても、文脈が違えば同じ言葉が異なった意味を持つ場合が存在する。そこで、ドメイン駆動開発では区切られた文脈という概念を導入し、文脈ごとに異なる言葉の意味を明確にする[1]。この区切られた文脈を適当に設計することが、ドメイン駆動設計の核心的な考え方の一つである。

ドメインモデルは区切られた文脈によって明確に定義された言葉に属するロジックを表現するオブジェクトモデル[1]である。同じ名前のドメインモデルであっても、文脈が異なれば、異なるロジックを持つ。例えば「見込み客」という言葉である。この言葉はある文脈においては「自社の製品に興味を持った」という意味であり、また他の文脈においては「営業プロセスにおいて取り組むべき対象」という意味である[1]。これらの文脈においては、同じ言葉はそれぞれ異なる業務ロジックを持つ。

区切られた文脈は、言語学における「意味論的な領域英語版」に基づいていると考えられる[1]。ここで、意味論的な領域とは、同じ言葉が同じ意味で使われる範囲のことを指す。例えば「トマト」という言葉を例に挙げると、植物学の文脈においてはトマトは「果実」である一方で、アメリカの課税制度の文脈においてはトマトは「野菜」である[1]。ここで、「植物学」と「アメリカの課税制度」はそれぞれ「意味論的な領域」であると考えられる。

関連項目

[編集]

出典

[編集]
  1. ^ a b c d e f g h i Vlad Khononov 著、増田亨・綿引琢磨 訳『ドメイン駆動設計をはじめよう』株式会社オライリー・ジャパン、2024年7月18日、xx, 44頁。 
  2. ^ a b Bjørner, Dines (2006). “The Triptych of Software Engineering” (英語). Software Engineering 3 – Domains, Requirements, and Software Design (book). I. Springer Verlag. p. 9. ISBN 978-3-540-33653-2. https://www.springer.com/us/book/9783540211518 2016年12月19日閲覧。 
  3. ^ Andrew Powell-Morse (April 21, 2017). “Domain-Driven Design - What is it and how do you use it?”. May 2, 2020閲覧。
  4. ^ Eric Evans (2015年). “Domain Driven Design Reference: Definitions and Pattern Summaries”. domainlanguage.com. May 2, 2020閲覧。