【公開】第11回ドメイン駆動設計勉強会の発表資料「ドメイン駆動設計で気づいたこと~権利の概念とERP分析への適用」 #dddosaka
DDD読書会@大阪の最終回に参加してきた。
LT資料と合わせて感想をメモ。
【元ネタ】
ドメイン駆動設計LT会(DDD読書会@大阪の最終回) - ドメイン駆動設計(DDD)読書会@大阪 | Doorkeeper
vol11_20140713_lightning_talks · dddosaka/reading_ddd_report Wiki
第10回ドメイン駆動設計勉強会の感想 #dddosaka: プログラマの思索
第7回ドメイン駆動設計勉強会の感想 #dddosaka: プログラマの思索
オブジェクト指向設計の4つの流派からドメイン駆動設計へ: プログラマの思索
[ 技術講座 ] Domain-Driven Designのエッセンス 第1回|オブジェクトの広場
[ 技術講座 ] Domain-Driven Designのエッセンス 第2回|オブジェクトの広場
[ 技術講座 ] Domain-Driven Designのエッセンス 第3回|オブジェクトの広場
【1】DDD読書会@大阪に参加して良かったと思う。
10年前からオブジェクト指向設計の本の大半は読んできたから、「ドメイン駆動設計」の中身もこんな感じだろう、と自分勝手に思い込んでいたが、良い意味でたくさん裏切られた。
「ドメイン駆動設計」に関する自分の理解が浅かったと思う。
「ドメイン駆動設計」は、特定の業務に関するモデリングのパターンではなく、モデリング技術そのもののパターンだ。
たとえば、第4部の戦略的設計は、大規模システム設計に関する設計技術そのもののモデリングパターンだ。
特に、設計方法だけでなく、複数チームの編成や体制に関わるノウハウはすごく役立つ。
【2】ドメイン駆動設計が従来のナイーブなオブジェクト指向設計と違う箇所は、まず、サービスクラスや仕様クラスにあると思う。
手続きそのものや、ビジネスルールや制約そのものもオブジェクトにしてしまう。
これらのオブジェクトはステートレスだが、オブジェクトにした方がプログラムはスッキリする。
また、サービスや仕様クラスをインターフェイスにして実装クラスを継承させれば、ポリモルフィズムを実現できるので、機能追加もやりやすい。
さらに、サービスや仕様クラスが含まれる「コアドメイン」を「抽象化されたコア」へ蒸留して、機能の実現はポリモルフィズムで多様化するように実装すれば、DDDの理想郷である「着脱可能なコンポーネントのフレームワーク」になる。
【3】「ドメイン駆動設計」「UMLモデリングの本質
」「SysML/UMLによるシステムエンジニアリング入門
」の本を読み漁っていると、深いモデルには「権利」という概念が自然に現れることに気づいた。
公開資料では、下記4つの例を出してみた。
【例1】貨物輸送システムと船荷証券
【例2】利息計算と発生主義会計
【例3】鉄道の自動改札システムの乗車権
【例4】レンタカーの組込装置での車の使用権
権利という概念は何故必要なのか?
権利は何かを受け取る権利があるので、資産になる。
つまり、権利は売れる。
鉄道の切符、航空券、ホテルの予約券はいずれも、何らかの権利を意味する。
そして、権利に種類をつければ、色んなビジネスができる。
切符は、定期券やICカード、プリペイドカードなどで販売できる。
飛行機の座席、ホテルの部屋は、グレードによって料金体系を変えて、数多くの人にリーチして販売できる。
権利は論理的概念なので、基本は物理的制限がない。
だから、ネット販売と相性が良い。
楽天も、ECサイトだけでなくホテル・旅館のWebサイトも販売している理由はそこにあるのだろう。
但し、権利に個数の制限がある場合、そのモデルは在庫管理のモデルに似てくる。
権利の予約は在庫引当の機能と同じ。
鉄道の座席、飛行機の座席、ホテルの部屋の個数は無限ではないから、予約したら、その権利は引当されて、他の人は予約できなくなる。
在庫引当のロジックの実装は、先勝方式による排他制御などの特有のロジックがあり、それなりに深い技術も必要とする。
排他制御のロジックは「汎用サブドメイン」「凝集化されたメカニズム」に相当するだろう。
【3】ERPのフィットギャップ分析にドメイン駆動設計が使えないか、というアイデアもある。
ERPの機能分析にドメイン駆動設計が使えないか #dddosaka: プログラマの思索
色々試してみたい。
【追記】
懇親会で、@hidenorigotoさんからインスピレーションを受ける言葉をたくさんもらったのでメモ。
| 固定リンク
「モデリング」カテゴリの記事
- リプレースとアーキテクチャモダナイゼーシヨンの違いの本質は何なのか?(2026.04.08)
- すり合わせの優位性は健在か?日本の製造業が直面するPLM活用とMBSEソフトウェア運用の理想と現実(2026.03.29)
- アーキテクチャモダナイゼーションにおけるAMETチームの役割と責任範囲は何か(2026.03.23)
- アーキテクチャモダナイゼーションとはそもそも何なのか?(2026.03.22)
- 自動車の組込ソフトウェア開発が難しい理由は3つある(2026.02.23)
「経済学・ERP・財務会計」カテゴリの記事
- すり合わせの優位性は健在か?日本の製造業が直面するPLM活用とMBSEソフトウェア運用の理想と現実(2026.03.29)
- DX戦略はDX成熟度を考慮して戦略策定すべき(2026.03.20)
- データモデリングではシステムが宿命的に負う複雑性をどのように解決しようとしているのか(2026.02.14)
- データモデリングの手法をあなたは持ってますか? at 関西IT勉強宴会(2026.02.11)
- E-BOMとM-BOMの違いは何か?(2026.02.08)
「astahによるUMLモデリング」カテゴリの記事
- 愛憎のUML~なぜ「設計図」は消え、「スケッチ」として生き残ったか(2026.05.03)
- AIエージェントとastahが変える真のモデル駆動開発とは何か(2026.04.12)
- すり合わせの優位性は健在か?日本の製造業が直面するPLM活用とMBSEソフトウェア運用の理想と現実(2026.03.29)
- データモデリングではシステムが宿命的に負う複雑性をどのように解決しようとしているのか(2026.02.14)
- データモデリングの手法をあなたは持ってますか? at 関西IT勉強宴会(2026.02.11)


コメント