Slide 1

Slide 1 text

@Philomagi 2021/08/28@エヴァンス本輪読会お疲れ様会 #dddcj ドメイン駆動設計の ホーリズム的側面 1

Slide 2

Slide 2 text

発表者 @Philomagi ● WEB系プログラマ ● 自称フロントエンド寄り ○ 最近の推しはSelf・Smalltalk・Scala・Ruby ● 趣味は怪文書 2

Slide 3

Slide 3 text

今回のテーマ 3 ● DDDが持つホーリズム(Holism)的側面への言及 ● DDDが言及しているのは「分割」だけではない ● 「全体は部分の総和以上である」

Slide 4

Slide 4 text

ドメイン駆動設計

Slide 5

Slide 5 text

『エリック・エヴァンスのドメイン駆動設計』 全体の構成 5 第1部:ドメインモデルを機能させる 第2部:モデル駆動設計の構成要素 第3部:より深い洞察へ向かうリファクタリング 第4部:戦略的設計

Slide 6

Slide 6 text

6 第1部:ドメインモデルを機能させる 第2部:モデル駆動設計の構成要素 第3部:より深い洞察へ向かうリファクタリング 第4部:戦略的設計 『エリック・エヴァンスのドメイン駆動設計』 全体の構成

Slide 7

Slide 7 text

第4部:戦略的設計 7 ここで検討するのは、全体としてのシステムに対して適 用される3つ組の原理、すなわち、コンテキスト、蒸留、 および大規模な構造である。 『エリック・エヴァンスのドメイン駆動設計』p.xviii

Slide 8

Slide 8 text

第4部:戦略的設計 8 ここで検討するのは、全体としてのシステムに対して適 用される3つ組の原理、すなわち、コンテキスト、蒸留、 および大規模な構造である。 『エリック・エヴァンスのドメイン駆動設計』p.xviii

Slide 9

Slide 9 text

第4部:戦略的設計 また、モジュール化によって、必ずしも設計に統一性がもたらされるとは限 らない。(...) 境界づけられたコンテキストがそれ自体で全体としてのシステムを見やす くするわけではない。(...) 相変わらず理解する必要があるのは、補助的な要素とコアドメインに関す る関係、さらに補助的な要素同士の関係である。(...) 「大規模な構造」は、システムをおおよその構造から議論し、理解できるよ うにするための言語である。(...)すなわち、さまざまな部分の果たす役割 が、どのように全体を構成するかについての概念が共有されているのだ。 『エリック・エヴァンスのドメイン駆動設計』p.447-448 9

Slide 10

Slide 10 text

第4部:戦略的設計 また、モジュール化によって、必ずしも設計に統一性がもたらされるとは限 らない。(...) 境界づけられたコンテキストがそれ自体で全体としてのシステムを見やす くするわけではない。(...) 相変わらず理解する必要があるのは、補助的な要素とコアドメインに関す る関係、さらに補助的な要素同士の関係である。(...) 「大規模な構造」は、システムをおおよその構造から議論し、理解できるよ うにするための言語である。(...)すなわち、さまざまな部分の果たす役割 が、どのように全体を構成するかについての概念が共有されているのだ。 『エリック・エヴァンスのドメイン駆動設計』p.447-448 10

Slide 11

Slide 11 text

ポイント① ● 「全体」というワード ● 個々の要素(クラス、モジュール、コンテキスト)を作る方 法だけでなく、それら全体がどのように関わり合うかに 対するモデリングの必要性

Slide 12

Slide 12 text

ホーリズム(Holism)

Slide 13

Slide 13 text

ホーリズム(Holism) 13 部分と全体との関係において、部分に対する全体の優越性を主張し、全体 は部分の算術的総和以上のものであるとする考え。 『岩波 哲学・思想事典』p.1501

Slide 14

Slide 14 text

ホーリズム(Holism) 14 部分と全体との関係において、部分に対する全体の優越性を主張し、全体 は部分の算術的総和以上のものであるとする考え。 『岩波 哲学・思想事典』p.1501

Slide 15

Slide 15 text

it seems that it all depends on the context. (...) meaning is, therefore, something that words have in sentences; and it’s something that sentences have in a language. 全てはコンテキストに依存する。 (...) つまり、意味とは、文の中にある語が持つものであり、言語の中にある文が 持つものなのだ。 『Holism』p.ix 訳文はDeepL + 発表者による ホーリズム(Holism) 15

Slide 16

Slide 16 text

16 ホーリズムとしての生物学的「動的平衡」 生命は、機械のようにいくつもの部品を組み立てただけではないという、 厳然たる事実がある。 (中略) その生命現象においては、機械とは違って、全体は部分の総和以上のな にものかである。1+1は2ではなく、2プラスα。そのプラスαは何か。それは どこから来るのか。 (中略) プラスαとは、端的に言えば、情報とエネルギーの出入りである。生物を物 質のレベルからだけ考えると、ミクロなパーツからなるプラモデルに見えて しまう。しかし、パーツとパーツのあいだには、エネルギーと情報がやりと りされている。それがプラスαである。 生命現象のすべてはエネルギーと情報が織りなすその「効果」のほうにあ る。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.145-147

Slide 17

Slide 17 text

17 ホーリズムとしての生物学的「動的平衡」 生命は、機械のようにいくつもの部品を組み立てただけではないという、 厳然たる事実がある。 (中略) その生命現象においては、機械とは違って、全体は部分の総和以上のな にものかである。1+1は2ではなく、2プラスα。そのプラスαは何か。それは どこから来るのか。 (中略) プラスαとは、端的に言えば、情報とエネルギーの出入りである。生物を物 質のレベルからだけ考えると、ミクロなパーツからなるプラモデルに見えて しまう。しかし、パーツとパーツのあいだには、エネルギーと情報がやりと りされている。それがプラスαである。 生命現象のすべてはエネルギーと情報が織りなすその「効果」のほうにあ る。 『新版 動的平衡 生命はなぜそこに宿るのか』- p.145-147

Slide 18

Slide 18 text

18 ホーリズムとしての生物学的「動的平衡」 情報・エネル ギー 「ソフトウェアと動的平衡」 p.38

Slide 19

Slide 19 text

ポイント② ● 「全体」は部分の総和よりも大きい ● 「全体」を部分の総和よりも大きくなるための何かが存 在するはず ○ 生物学的視点では、それは情報とエネルギーだった

Slide 20

Slide 20 text

DDDとホーリズム

Slide 21

Slide 21 text

● モジュールやコンテキストによって「部分」を分割しただ けでは、「全体」としてのドメインおよびシステムを表現 したことにはならない ● 「全体」を描くためには、「部分」間をつなぐ様々な「関 係」をも描く必要がある DDDとホーリズム① - 部分と全体

Slide 22

Slide 22 text

● このようなドメインおよびシステムの性質は、まさにホー リズム的(Holistic)であると言えるのではないか ● 「部分」への分解のみではドメインやシステム内部の 様々な関係性が失われ、結果、理解が困難になる DDDとホーリズム② - ホーリズム的性質

Slide 23

Slide 23 text

● 第4部16章「大規模な構造」は、こうしたホーリズム的 性質を見落とすことなく「全体」としてのドメインおよびシ ステムを描くためのアプローチという性質を持つ、と評 価できるのではないか ○ Evansが意図したにせよしていないにせよ、結果的にそうした性質を持っ た、という評価は可能なのではないか ○ 多分、意図していない DDDとホーリズム③ - DDDとホーリズム

Slide 24

Slide 24 text

● ドメインおよびシステムの「全体」には、モジュールやコンテキストといった「部 分」だけでなく、それらの間において成立する「関係」も存在する ● 「部分」への分割のみでは「関係」についての表現が失われ、結果、ドメインやシ ステムの「全体」までもが失われる ● このようなドメインおよびシステムの性質は、ホーリズム的(Holistic)と言えるの ではないか ● このような性質に言及し、かつ(特に大規模なシステムにおける)「全体」を描くこ との必要性を示したDDDの思想には、「全体は部分の総和以上である」という ホーリズム的側面もあると考えられるのではないか まとめ

Slide 25

Slide 25 text

● 福岡伸一 (2017) 『新版 動的平衡』小学館新書 ● 廣松 渉(編) (1998) 『岩波 哲学・思想事典』岩波書店 ● Jerry Fodor (1992) 『Holism』John Wiley & Sons ● エリック・エヴァンス(著), 今関剛(監訳), 和智右桂, 牧野裕子(訳) (2011) 『エリッ ク・エヴァンスのドメイン駆動設計』 翔泳社 ● philomagi, 「ソフトウェアと動的平衡」 参考資料 25