第1部 ドメインモデルを機能させる
ドメイン駆動設計におけるモデルの有用性
ソフトウェアの核心
第1章 知識をかみ砕く
効果的なモデリングの要素
知識のかみ砕き
継続的学習
知識豊富な設計
例1.1——隠された概念を引き出す
深いモデル
第2章 コミュニケーションと言語の使い方
ユビキタス言語(UBIQUITOUS LANGUAGE)
例2.1——貨物輸送プログラムを完成させる
声に出してモデリングする
1つのチームに1つの言語
ドキュメントと図
書かれた設計ドキュメント
実行可能な基盤
説明のためのモデル
例2.2——輸送業務と経路
第3章 モデルと実装を結びつける
モデル駆動設計(MODEL-DRIVEN DESIGN)
モデリングパラダイムとツールによるサポート
例3.1——手続き型からモデル駆動へ
骨格を見せる:なぜモデルがユーザにとって重要なのか?
実践的モデラ(HANDS ON MODELERS)
【DDD】ドメイン駆動設計【エリック・エヴァンス】
1デフォルトの名無しさん
2017/10/24(火) 19:39:06.49ID:jO+jDbIG102デフォルトの名無しさん
2017/11/15(水) 03:47:42.79ID:3vTQ1KLC >>101
仕事で使うなら想定しないケースも希だと思うけど
仕事で使うなら想定しないケースも希だと思うけど
103デフォルトの名無しさん
2017/11/16(木) 07:24:52.29ID:yg2PUXdS DIのフレームワークとDDDって共存できるの
DDDってMVCみたいなレイヤードアーキテクチャからドメイン抜き出したもの程度しか認識ない人間だけど
DDDってMVCみたいなレイヤードアーキテクチャからドメイン抜き出したもの程度しか認識ない人間だけど
104デフォルトの名無しさん
2017/11/16(木) 07:30:52.62ID:DVV+REXJ >>103
MVCはレイヤードアーキテクチャじゃないよ
MVCはレイヤードアーキテクチャじゃないよ
105デフォルトの名無しさん
2017/11/16(木) 12:33:04.40ID:i9LdlFRo106デフォルトの名無しさん
2017/11/17(金) 08:39:38.18ID:jlfmLuFK validationとormがDDDのボトルネック
要するに机上の空論
要するに机上の空論
107デフォルトの名無しさん
2017/11/17(金) 23:50:35.86ID:tGAvpZAK UIの要求が強すぎるとうまくいかんのだわ
ドメインクラスをフロントとバックの両方に書くはめになる
Node.jsだとそのへんうまくいくのかな
ドメインクラスをフロントとバックの両方に書くはめになる
Node.jsだとそのへんうまくいくのかな
108デフォルトの名無しさん
2017/11/18(土) 13:44:21.91ID:VuzSnHPO お前ら設計書ってどうしてる?
仕事でやる以上は設計書出せと言われたら書かなきゃならない
設計書がレビュー通らなきゃコーディングは始められない
バリューオブジェクトの設計書とかあまりにも馬鹿馬鹿しいんだけど何百個も書かなければならない
仕事でやる以上は設計書出せと言われたら書かなきゃならない
設計書がレビュー通らなきゃコーディングは始められない
バリューオブジェクトの設計書とかあまりにも馬鹿馬鹿しいんだけど何百個も書かなければならない
109デフォルトの名無しさん
2017/11/18(土) 15:21:12.87ID:2Obhafep >>108
なんて言ってほしいのかわからない
仕事なんだからやれって言われたらヤるしないって立場なんでしょ?
じゃあやるしかないじゃん
バリューオブジェクト数百個っていったらそれなりの規模のシステムだろうから
バリューオブジェクトを使わなかったとしてもどうせ大量の設計書を書かないといけないし、
今となってはそういう仕事を受けたのを悔やむことぐらいしかできないのでは?
なんて言ってほしいのかわからない
仕事なんだからやれって言われたらヤるしないって立場なんでしょ?
じゃあやるしかないじゃん
バリューオブジェクト数百個っていったらそれなりの規模のシステムだろうから
バリューオブジェクトを使わなかったとしてもどうせ大量の設計書を書かないといけないし、
今となってはそういう仕事を受けたのを悔やむことぐらいしかできないのでは?
110デフォルトの名無しさん
2017/11/18(土) 15:39:25.13ID:5iID0bAm しかも設計書がExcel方眼紙なんだよな。
111デフォルトの名無しさん
2017/11/18(土) 15:47:54.83ID:drMX1Uce 設計書なんで実装終わったときに揃ってれば良いだろ
どうせ開発中にコロコロ仕様変わるなんてよくある話だ
どうせ開発中にコロコロ仕様変わるなんてよくある話だ
112デフォルトの名無しさん
2017/11/18(土) 16:01:31.09ID:yU1kJYiv レビューがあるから先に設計書を書かないとダメ
でも設計書で設計するとグダグダになる
設計書から目をそらす以外にうまくいく方法があるなら教えてくれ
でも設計書で設計するとグダグダになる
設計書から目をそらす以外にうまくいく方法があるなら教えてくれ
113デフォルトの名無しさん
2017/11/19(日) 08:43:56.41ID:9uDeEGku テキトーに書いておく
レビューする側に解ってる人がいるのは稀だからタイテーはこれで何とかなる
レビューする側に解ってる人がいるのは稀だからタイテーはこれで何とかなる
114デフォルトの名無しさん
2017/11/19(日) 11:30:11.10ID:CpArH3Dx 先にユニットテスト済みのコードを書く
doxygenで設計書生成
レビューしてOKを貰う
コーディングしてるふりして1日サボる
コードをプッシュ
doxygenで設計書生成
レビューしてOKを貰う
コーディングしてるふりして1日サボる
コードをプッシュ
115デフォルトの名無しさん
2017/11/19(日) 12:43:48.77ID:+HG5lDnd >>114
doxygenってExcel方眼紙出せたっけ?
doxygenってExcel方眼紙出せたっけ?
116デフォルトの名無しさん
2017/11/19(日) 13:09:42.41ID:CpArH3Dx エクセル設計書なんて使わない
117デフォルトの名無しさん
2017/11/19(日) 13:56:40.03ID:+HG5lDnd118デフォルトの名無しさん
2017/11/19(日) 16:15:48.08ID:lEYmgXHF Excelに貼り付けるテキストを自作ツールで出力。
119デフォルトの名無しさん
2017/11/22(水) 15:13:08.97ID:LuqUsrvZ ビジネスロジック層と永続化層の違いについて聞きたいんだが
「ビジネスロジック」は「犬」とか「リンゴ」とかいうクラスを作る層で
「永続化層」は「犬テーブルを操作するオブジェクト」を定義するクラス
を作る(というかPDOとかActive Recordとかが用意している)という
認識でいいのか?
「ビジネスロジック」は「犬」とか「リンゴ」とかいうクラスを作る層で
「永続化層」は「犬テーブルを操作するオブジェクト」を定義するクラス
を作る(というかPDOとかActive Recordとかが用意している)という
認識でいいのか?
120デフォルトの名無しさん
2017/11/22(水) 18:17:46.26ID:Fja20xY7 ざっくり言うとデータベースに関係あるのがインフラ層
121デフォルトの名無しさん
2017/12/05(火) 00:47:41.31ID:dpNb6B9r エヴァとのコラボカードナナコ最高。http://maeda-gourmet.jp/2016/09/09/nanaco/
122デフォルトの名無しさん
2018/05/23(水) 21:07:55.14ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
Q3XKO
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
Q3XKO
123デフォルトの名無しさん
2018/07/05(木) 00:49:06.04ID:RfoszcD2 ZJY
124デフォルトの名無しさん
2018/09/09(日) 06:43:58.22ID:HEZvkUhE ゲーム開発でDDDは使えますか?
その場合のドメインとドメインエキスパートとは例えば何、誰を指すでしょうか?
その場合のドメインとドメインエキスパートとは例えば何、誰を指すでしょうか?
125デフォルトの名無しさん
2018/10/08(月) 00:49:59.53ID:Kbmtp0Cm126デフォルトの名無しさん
2018/10/11(木) 20:53:29.46ID:f3Pn3eWA Eric Evans氏はドメイン駆動設計(DDD) は未完成だと述べた
https://www.infoq.com/jp/news/2018/10/ddd-not-done
https://www.infoq.com/jp/news/2018/10/ddd-not-done
127デフォルトの名無しさん
2018/10/24(水) 09:23:12.56ID:HQt07idp128デフォルトの名無しさん
2018/10/25(木) 01:29:02.78ID:c44lxtY/ こんなやつらがDDDやってるんだなってのがわかって結構面白かったけどね
今日の内容で本書きます!って言われたときはさすがに周り失笑してたけど
今日の内容で本書きます!って言われたときはさすがに周り失笑してたけど
129デフォルトの名無しさん
2019/03/17(日) 12:58:39.06ID:F89k9A+v まだ、軽量DDDなんかやっている人がいるのね。
130デフォルトの名無しさん
2019/04/25(木) 08:19:51.47ID:NTtreDXN 意外と盛り上がらないね。
131デフォルトの名無しさん
2019/04/25(木) 20:00:13.26ID:NTtreDXN ドメインが複雑じゃないとあんまり意味なさそうなのは感じ無くもないけど、将来の改修のしやすさのための布石と思えばいいのかな。
132デフォルトの名無しさん
2019/05/06(月) 12:07:22.28ID:y1ayn2s5133デフォルトの名無しさん
2019/06/20(木) 07:02:35.15ID:o5P3FSwL 業務系はエンティティ間の関連が多すぎてリポジトリパターンと相性が悪いと思う
トランザクション分析すると集約ルートが複数のテーブル全体を巻き込んだりする
トランザクション分析すると集約ルートが複数のテーブル全体を巻き込んだりする
134デフォルトの名無しさん
2019/10/11(金) 20:14:12.01ID:hGbwA5Kq 最近DDDの本読んで勉強してるが、日本じゃ流行らなさそうだなという印象
英語圏なら確かにユビキタス言語からコードにシームレスに移れ、
コードがそのままドメインエキスパートにも読めるドキュメントにできるだろうが…
英語圏なら確かにユビキタス言語からコードにシームレスに移れ、
コードがそのままドメインエキスパートにも読めるドキュメントにできるだろうが…
135デフォルトの名無しさん
2019/10/12(土) 06:32:18.26ID:RANQu5YO 古典的なデータモデリングのマッピング先がOOPに変わっただけという印象なんだけど。
136デフォルトの名無しさん
2019/10/12(土) 14:21:09.70ID:7TGqmTiW >>135
DDD本で紹介されてる概念やテクニックはOOPに限られたものじゃないよ
DOAの古典的データモデリングでも十分に役立つし関数型のパラダイムで実装することもできる
日本語でDDDについて書かれてる記事は質が低いのが多いから
ちゃんと理解したければEric Evansの原典かVernonの"Domain-Driven Design Distilled"を読むのを勧める
DDD本で紹介されてる概念やテクニックはOOPに限られたものじゃないよ
DOAの古典的データモデリングでも十分に役立つし関数型のパラダイムで実装することもできる
日本語でDDDについて書かれてる記事は質が低いのが多いから
ちゃんと理解したければEric Evansの原典かVernonの"Domain-Driven Design Distilled"を読むのを勧める
137デフォルトの名無しさん
2019/11/27(水) 21:15:02.91ID:ymKEnJ4Y 「Hands-On Domain-Driven Design with .NET Core」Alexey Zimarev
これ結構いい本
Packtのサイトでセール中なのか今なら10$で買える
これ結構いい本
Packtのサイトでセール中なのか今なら10$で買える
138デフォルトの名無しさん
2019/12/22(日) 03:38:09.90ID:n6weJVCQ139デフォルトの名無しさん
2020/02/08(土) 08:56:40.52ID:YyWxF9Co モデル層とデータストア層って分離できないのかな。
仕様変更のしやすさからモデル層の独立を図る必要があるけど、
データベースファースト(テーブルが先にあってDBの都合で正規化済み)の場合、
どうやってモデル層とデータストア層を分離できるんだろう。
O/Rマッピングも使えない。
どうやって解決するのが一般的なんだろう。
そもそも、O/Rマッピングが完全にできたとしても、それは初期状態においてであって、
変更を重ねてモデルのフィールドが変更になれば、データテーブルも変更しなければならないはず。
理想ばかりでインピーダンス不整合が脳内で続くんだけど。
考えてばかりでプログラミングを開始できない。。。
仕様変更のしやすさからモデル層の独立を図る必要があるけど、
データベースファースト(テーブルが先にあってDBの都合で正規化済み)の場合、
どうやってモデル層とデータストア層を分離できるんだろう。
O/Rマッピングも使えない。
どうやって解決するのが一般的なんだろう。
そもそも、O/Rマッピングが完全にできたとしても、それは初期状態においてであって、
変更を重ねてモデルのフィールドが変更になれば、データテーブルも変更しなければならないはず。
理想ばかりでインピーダンス不整合が脳内で続くんだけど。
考えてばかりでプログラミングを開始できない。。。
140デフォルトの名無しさん
2020/02/08(土) 09:03:45.09ID:YyWxF9Co pythonでもドメイン駆動設計するのに問題ない?
141140
2020/02/08(土) 09:04:48.14ID:YyWxF9Co >>140
PythonのDjangoでWEBアプリを考えています。
PythonのDjangoでWEBアプリを考えています。
142デフォルトの名無しさん
2020/02/08(土) 12:58:17.20ID:0wE1WgKD >>139
Django ORMはActive Record PatternだからDBが先にあるような場合にはうまくいかない
そもそもActive Record使ってるとモデルとデータストアの結合度が高い
分離したければRepository Patternを自分で実装するかそれをサポートしてるフレームワークを選択するか
“python repository pattern”で検索
Django ORMはActive Record PatternだからDBが先にあるような場合にはうまくいかない
そもそもActive Record使ってるとモデルとデータストアの結合度が高い
分離したければRepository Patternを自分で実装するかそれをサポートしてるフレームワークを選択するか
“python repository pattern”で検索
143139
2020/02/09(日) 12:24:41.03ID:dmd9x03B >>142
レスありがとうございました。
DjangoのActive Record Patternはコードファーストと呼ばれるやつですね。
モデルの変更がデータベーステーブルに直結するので、結合度が高いのがわかります。
最初の開発のしやすさがあっても、変更には弱いのだとわかりました。
python repository pattern について情報が少ないですね。
モデルとデータストアをどう分離できるか考えてみたいと思います。
モデルが何か中間層のオブジェクトを経由してデータテーブルに保存できるようにすれば、
モデルの変更はモデルの変更に終止させられるかもしれません。
レスありがとうございました。
DjangoのActive Record Patternはコードファーストと呼ばれるやつですね。
モデルの変更がデータベーステーブルに直結するので、結合度が高いのがわかります。
最初の開発のしやすさがあっても、変更には弱いのだとわかりました。
python repository pattern について情報が少ないですね。
モデルとデータストアをどう分離できるか考えてみたいと思います。
モデルが何か中間層のオブジェクトを経由してデータテーブルに保存できるようにすれば、
モデルの変更はモデルの変更に終止させられるかもしれません。
144デフォルトの名無しさん
2020/02/09(日) 20:14:19.34ID:R6dJMwaP145デフォルトの名無しさん
2020/02/10(月) 00:10:18.78ID:0IUSwyg5 >>144
なるほど。
あるモデルオブジェクトを、中間層にある一対一で対応したクラス食わせると、
データベースの正規化テーブルに適切に分配して、
保存してくれるようなイメージかなあと思っています。
それにしても、モデルの変更は中間層の対応クラスやデータテーブルにも及んでしまうなあ。
なるほど。
あるモデルオブジェクトを、中間層にある一対一で対応したクラス食わせると、
データベースの正規化テーブルに適切に分配して、
保存してくれるようなイメージかなあと思っています。
それにしても、モデルの変更は中間層の対応クラスやデータテーブルにも及んでしまうなあ。
146デフォルトの名無しさん
2020/02/10(月) 20:33:59.96ID:EqwKVKI1 モデルが中心で一番重要だから当たり前
データベースやフレームワークの都合でモデルが振り回される方が厄介
というか安定性が一番高く変化しにくいのがモデルのはずで、先にきちんと分析してある程度要件を固めないといけない
データベースやフレームワークの都合でモデルが振り回される方が厄介
というか安定性が一番高く変化しにくいのがモデルのはずで、先にきちんと分析してある程度要件を固めないといけない
147デフォルトの名無しさん
2020/02/11(火) 10:44:43.50ID:qbg35N4F >>146
モデル中心で設計していきたいと思います。
しかし、データベースが先に立っている旧システムのWEBアプリ化なので、
それらのテーブル上にまたがった(リレーションされた)データを、
どうモデルに切り分けると良いか考えたいと思います。
モデル(∞)-テーブル(1)のような関係になりそうです。
それを結合させられる中間層(リポジトリ?)を自分で考えたいと思います。
モデル中心で設計していきたいと思います。
しかし、データベースが先に立っている旧システムのWEBアプリ化なので、
それらのテーブル上にまたがった(リレーションされた)データを、
どうモデルに切り分けると良いか考えたいと思います。
モデル(∞)-テーブル(1)のような関係になりそうです。
それを結合させられる中間層(リポジトリ?)を自分で考えたいと思います。
148デフォルトの名無しさん
2020/02/11(火) 12:30:25.83ID:rXVtelf6 リポジトリで重要なのはインターフェースと実装を分けること
インターフェースはモデル層になるけど、実装はモデル層にはなくデータベース関連の知識は実装に閉じ込める
python はインターフェースそのものはないみたいだから抽象基底クラスで代用したらどうか
# モデル層はインターフェースのみ定義する
# 使用するデータベースを変更するとか、テストするときはモックに差し替えるとかしやすくなる
from abc import ABC, abstractmethod
class Users(ABC):
@abstractmethod
def save(self, user: User) -> None:
pass
# 実装(インフラストラクチャ層)はお好きなデータベースやフレームワークのORMなどで
import sqlite3
class sqlite3Users(Users):
def __init__(self, conn: sqlite3.Connection):
self.conn = conn
def save(self, user: User) -> None:
# ...
インターフェースはモデル層になるけど、実装はモデル層にはなくデータベース関連の知識は実装に閉じ込める
python はインターフェースそのものはないみたいだから抽象基底クラスで代用したらどうか
# モデル層はインターフェースのみ定義する
# 使用するデータベースを変更するとか、テストするときはモックに差し替えるとかしやすくなる
from abc import ABC, abstractmethod
class Users(ABC):
@abstractmethod
def save(self, user: User) -> None:
pass
# 実装(インフラストラクチャ層)はお好きなデータベースやフレームワークのORMなどで
import sqlite3
class sqlite3Users(Users):
def __init__(self, conn: sqlite3.Connection):
self.conn = conn
def save(self, user: User) -> None:
# ...
149デフォルトの名無しさん
2020/02/11(火) 13:38:06.66ID:v/oRLdRM150デフォルトの名無しさん
2020/02/11(火) 19:36:41.89ID:Vv3Ln0ZS とはいえ普通の開発は既存のDBのテーブルに引きづられるのが実際だろ。
151デフォルトの名無しさん
2020/02/11(火) 21:46:53.70ID:v/oRLdRM152デフォルトの名無しさん
2020/02/13(木) 00:19:28.03ID:slfRt6Hj GoとかRustとかのクラスベースじゃないのとJavaとかのクラスベースってどっちがDDDしやすいの?
ライブラリ、フレームワークとかの資産とかなしにして
ライブラリ、フレームワークとかの資産とかなしにして
153デフォルトの名無しさん
2020/02/13(木) 02:16:39.59ID:zqMi9kcN >>148
詳細なレスありがとうございます。
リポジトリの作成について、
インターフェイスと実装を分ける点についてしっかりと考えてみたいと思いました。
なるほど。
インターフェイスをモデルと合わせておくことは重要だと思いました。
少なくとも、データベース層の変更があってもインターフェイスの実装クラスまでで
影響をストップできるのは素晴らしいです。精神的に安心。
ドミノのストッパーみたいな感じがします。
Pythonにはインターフェイスの概念がないというお話を聞いて、
やはりC#(.net core)で構築することを考えました。
こちらは少し経験があるのでやりやすいからです。
本当はOSS界のPythonに憧れてはいたんですけどね。
詳細なレスありがとうございます。
リポジトリの作成について、
インターフェイスと実装を分ける点についてしっかりと考えてみたいと思いました。
なるほど。
インターフェイスをモデルと合わせておくことは重要だと思いました。
少なくとも、データベース層の変更があってもインターフェイスの実装クラスまでで
影響をストップできるのは素晴らしいです。精神的に安心。
ドミノのストッパーみたいな感じがします。
Pythonにはインターフェイスの概念がないというお話を聞いて、
やはりC#(.net core)で構築することを考えました。
こちらは少し経験があるのでやりやすいからです。
本当はOSS界のPythonに憧れてはいたんですけどね。
154デフォルトの名無しさん
2020/02/13(木) 02:20:34.42ID:zqMi9kcN >>149-151
たしかに、
自分が求めに応じて何を作りたいのかが先に立ちますよね。
すると、モデルが先に来る。
しかし、既に構築済みシステムのデータベーステーブルの存在もあるので、
あくまで、モデル中心にして必要なデータを既存テーブルから拾ってくるというような考え方にしておきます。
その意味では、既存データベースに無い物はモデルとして成立させられないわけですが。
たしかに、
自分が求めに応じて何を作りたいのかが先に立ちますよね。
すると、モデルが先に来る。
しかし、既に構築済みシステムのデータベーステーブルの存在もあるので、
あくまで、モデル中心にして必要なデータを既存テーブルから拾ってくるというような考え方にしておきます。
その意味では、既存データベースに無い物はモデルとして成立させられないわけですが。
155デフォルトの名無しさん
2020/02/13(木) 15:23:21.01ID:6VutC31N 53 恋する名無しさん
2018/12/15(土) 21:15:59.13 ID:Ai0sRA6M0
人様の家に放火する虫ケラ小宇根信博俊興マンコ顔ヤクザが偉そうなカオして長田高校におるわ
信博の眼球にアイスピック突き刺す
ゲロ小宇根
兵庫県教育委員会兵庫県立長田高校小宇根化学痴漢殺人放火魔仮面教師俊興信博エタ部落未逮捕、
兵庫県警ブラックリスト長田高校殺人教師小宇根信博放火殺人化学教師息子俊興二重人格兵庫県教育委員会小宇根信博長田高校の便所で毎日
うんこブリブリ親父家で俊興に便所占領されてカムリ白車で毎朝長田高校まで朝のウンコしに行く汚な顔仮面視強姦エロアニメ大量購入下三条町2-9
小宇根痴漢変態仮面ムッツリスケベブス汚な顔面放火焼け爛れゴキブリ顔信博殺人犯未逮捕女子高生レイプマニア怖い俊興ストーカー信博化学教師
兵庫県教育委員会長田高校長の家火葬場小宇根放火ストーカー魔に焼殺人された哀れ性暴力反社会人格障害教師にタンマリ給料やりステーキ食べ
させ放題放火すき焼き食べさせ放題兵庫県教育委員会長田高校長宅残虐家族全員焼け爛れ顔の長田高校長の家族全員焼死体無惨な長田高校全焼
兵庫県教育委員会は小宇根放火ストーカーに燃やされ全焼兵庫県教育委員会全員火の海俊興ストーカーに燃やされ小宇根放火焼殺魔精神異常家系
2018/12/15(土) 21:15:59.13 ID:Ai0sRA6M0
人様の家に放火する虫ケラ小宇根信博俊興マンコ顔ヤクザが偉そうなカオして長田高校におるわ
信博の眼球にアイスピック突き刺す
ゲロ小宇根
兵庫県教育委員会兵庫県立長田高校小宇根化学痴漢殺人放火魔仮面教師俊興信博エタ部落未逮捕、
兵庫県警ブラックリスト長田高校殺人教師小宇根信博放火殺人化学教師息子俊興二重人格兵庫県教育委員会小宇根信博長田高校の便所で毎日
うんこブリブリ親父家で俊興に便所占領されてカムリ白車で毎朝長田高校まで朝のウンコしに行く汚な顔仮面視強姦エロアニメ大量購入下三条町2-9
小宇根痴漢変態仮面ムッツリスケベブス汚な顔面放火焼け爛れゴキブリ顔信博殺人犯未逮捕女子高生レイプマニア怖い俊興ストーカー信博化学教師
兵庫県教育委員会長田高校長の家火葬場小宇根放火ストーカー魔に焼殺人された哀れ性暴力反社会人格障害教師にタンマリ給料やりステーキ食べ
させ放題放火すき焼き食べさせ放題兵庫県教育委員会長田高校長宅残虐家族全員焼け爛れ顔の長田高校長の家族全員焼死体無惨な長田高校全焼
兵庫県教育委員会は小宇根放火ストーカーに燃やされ全焼兵庫県教育委員会全員火の海俊興ストーカーに燃やされ小宇根放火焼殺魔精神異常家系
156デフォルトの名無しさん
2020/02/13(木) 18:03:52.96ID:r7bSHOfr >>152
クラスベースかどうかの違いはあまり関係ないんじゃないかな
ドメインモデルをコードに落としやすいかどうかは型の表現力によると思う
Sum Typeを作りやすいかどうかや
value object用のimmutableオブジェクトを作りやすいかどうかみたいな部分
RustやSwiftのenumだったりKotlinのdata classみたいなやつ
クラスベースかどうかの違いはあまり関係ないんじゃないかな
ドメインモデルをコードに落としやすいかどうかは型の表現力によると思う
Sum Typeを作りやすいかどうかや
value object用のimmutableオブジェクトを作りやすいかどうかみたいな部分
RustやSwiftのenumだったりKotlinのdata classみたいなやつ
157デフォルトの名無しさん
2020/02/16(日) 13:43:23.03ID:Xiaae5hS ドメインモデル的にDBは検索可能なファイルフォーマットみたいな考え。
PDFやPSDファイルを考えるとわかりやすい。ファイルから読み出すとドメインモデルになる。
PDFやPSDファイルを考えるとわかりやすい。ファイルから読み出すとドメインモデルになる。
158デフォルトの名無しさん
2020/02/18(火) 21:40:17.43ID:2AC9Ct1n それだとormはどういう位置付けになるん?
159デフォルトの名無しさん
2020/02/19(水) 00:06:44.71ID:i9qIzFMe >>158
Repositoryじゃね?
Repositoryじゃね?
160デフォルトの名無しさん
2020/02/19(水) 00:14:21.11ID:pJACNDga 性能で行き詰まった時に普通に破綻しそうなんだが。
161デフォルトの名無しさん
2020/02/19(水) 01:31:27.23ID:i9qIzFMe 性能で行き詰まったら、金の弾丸ブチ込めってばっちゃが言ってた
162デフォルトの名無しさん
2020/02/20(木) 22:05:54.44ID:ABNkvVkH 未だにファクトリーだけメリットがわかりません
newとなにが違うんですか?
newとなにが違うんですか?
163デフォルトの名無しさん
2020/02/20(木) 23:00:47.67ID:Nllb9nDe >>162
引数によって継承したクラスを選択して返す様に設計できる。
引数によって継承したクラスを選択して返す様に設計できる。
164デフォルトの名無しさん
2020/03/05(木) 22:14:17.50ID:h922Dn8C165デフォルトの名無しさん
2020/03/05(木) 22:20:29.48ID:h922Dn8C >>162
DDDというかデザインパターンの話だけど
ファクトリ(系パターン)を使うのは
インスタンスの生成が複雑な時
たとえばAとBのインスタンスを常にペアで使いたいとか
いろんな条件でnewする部分が肥大化していくようなら
毎回書くよりファクトリパターン使う方がスマートでしょ?
DDDというかデザインパターンの話だけど
ファクトリ(系パターン)を使うのは
インスタンスの生成が複雑な時
たとえばAとBのインスタンスを常にペアで使いたいとか
いろんな条件でnewする部分が肥大化していくようなら
毎回書くよりファクトリパターン使う方がスマートでしょ?
166デフォルトの名無しさん
2020/03/08(日) 23:30:12.89ID:4J5clray そうかなあ…一番DDDやりやすいのは関数型言語だと思う
ドメイン設計って、
•あるデータはどんなデータがANDないしORで組み合わさって出来てるのか
•業務プロセスはそれらのデータをどのように変換していくのか
の2点が主だと思ってるけど、
これらは代数的データ型とパターンマッチによってダイレクトに表現できて、
業務プロセスは関数の連続で簡潔に表現できる。
また純粋なビジネスロジックは作用のない関数によって表現され、
ビジネスロジック以外の部分が作用を持つ関数になるはずで、
作用のある無しを型レベルで区別する純粋関数型言語であれば、
その辺の層分けもすごく自然 むしろ別れざるをえない
ドメイン設計って、
•あるデータはどんなデータがANDないしORで組み合わさって出来てるのか
•業務プロセスはそれらのデータをどのように変換していくのか
の2点が主だと思ってるけど、
これらは代数的データ型とパターンマッチによってダイレクトに表現できて、
業務プロセスは関数の連続で簡潔に表現できる。
また純粋なビジネスロジックは作用のない関数によって表現され、
ビジネスロジック以外の部分が作用を持つ関数になるはずで、
作用のある無しを型レベルで区別する純粋関数型言語であれば、
その辺の層分けもすごく自然 むしろ別れざるをえない
167デフォルトの名無しさん
2020/03/08(日) 23:55:07.82ID:2h+/wurX 作用?
168デフォルトの名無しさん
2020/03/09(月) 21:19:31.81ID:bHKN7jy6 左様でござる
169デフォルトの名無しさん
2020/03/09(月) 22:12:07.02ID:ajCpPJPb Webみたいにステートレスで済むなら
関数型の方が簡潔に書ける部分もあるが
ビジネスロジックは複雑な状態遷移や
階層構造を持っていることが多いので
FPでもDDDはできるが
OOの方が向くことが多い
関数型の方が簡潔に書ける部分もあるが
ビジネスロジックは複雑な状態遷移や
階層構造を持っていることが多いので
FPでもDDDはできるが
OOの方が向くことが多い
170デフォルトの名無しさん
2020/03/09(月) 22:18:06.74ID:aVP5r6mu 階層構造を持ってるからOOの方が向いてるってのはよくわからないな
171デフォルトの名無しさん
2020/03/09(月) 23:12:50.10ID:y1num/wG ?複雑な状態遷移があるとFPが向かないっていうのもよくわからないな
状態の数だけ型作って、遷移の数だけ関数つくればいいだけやん
OOPはむやみにクラス内に隠れた状態や依存を作って他のクラスとうまく合成されない物を作りがち
そんなことしてると、非同期な処理を並列化とかしようにも気にしないといけないことが増えて大変な労力だろうに
状態の数だけ型作って、遷移の数だけ関数つくればいいだけやん
OOPはむやみにクラス内に隠れた状態や依存を作って他のクラスとうまく合成されない物を作りがち
そんなことしてると、非同期な処理を並列化とかしようにも気にしないといけないことが増えて大変な労力だろうに
172デフォルトの名無しさん
2020/03/14(土) 17:55:44.71ID:JKHuUiBu >>171
言いたいことはわかるが、websocketみたいなコネクション管理するものを
まるまる関数型で書くなら状態変化を含んだとしてもオブジェクト的に記述した方が
多分楽。
なんでもどっちかに倒そうとすること自体が悪パターンな気がするよ。
言いたいことはわかるが、websocketみたいなコネクション管理するものを
まるまる関数型で書くなら状態変化を含んだとしてもオブジェクト的に記述した方が
多分楽。
なんでもどっちかに倒そうとすること自体が悪パターンな気がするよ。
173デフォルトの名無しさん
2020/03/14(土) 18:05:14.78ID:ZFQFhT9Y 良いとこ取りしていけ
174デフォルトの名無しさん
2020/03/15(日) 00:23:36.09ID:UpO1XTWv >>172
WebSocketかー。やったことないからやってみよう
WebSocketかー。やったことないからやってみよう
175169
2020/03/15(日) 05:56:57.78ID:1/DFOu+E176デフォルトの名無しさん
2020/03/15(日) 08:25:11.78ID:j83nFY2E >>175
あんたに限らず関数型が大規模なプログラム書くのに向かないと思ってる層がちゃんと関数型プログラミングをしたことがなく先入観でもの言ってるのはよくわかった
あんたに限らず関数型が大規模なプログラム書くのに向かないと思ってる層がちゃんと関数型プログラミングをしたことがなく先入観でもの言ってるのはよくわかった
177デフォルトの名無しさん
2020/03/15(日) 08:38:54.73ID:1/DFOu+E178デフォルトの名無しさん
2020/03/15(日) 09:21:24.78ID:UpO1XTWv >>177
それはどの言語でどんなことしようとして「強く実感」したの?
関数型言語が普及しないのは、単に先入観やOOP神話の影響で学ぼう使おうと思う人が少ないからだよ。
関数型プログラミングが普及しない理由は、当然だが関数型プログラミングの諸概念を表現するのに命令型言語が不向きだから。柔道着着て水泳するようなもんだ。
それはどの言語でどんなことしようとして「強く実感」したの?
関数型言語が普及しないのは、単に先入観やOOP神話の影響で学ぼう使おうと思う人が少ないからだよ。
関数型プログラミングが普及しない理由は、当然だが関数型プログラミングの諸概念を表現するのに命令型言語が不向きだから。柔道着着て水泳するようなもんだ。
179デフォルトの名無しさん
2020/03/15(日) 14:50:21.29ID:7lggs81n >>175
>継承や委譲で階層構造を表現できる
OOでは継承や委譲で階層構造を表現できると言われても
関数型の言語よりOO言語のほうがDDDには向いてるという論拠にはならないよ
少し古いスライドだけど、これ見て概要だけでも勉強して
https://www.slideshare.net/ScottWlaschin/domain-driven-design-with-the-f-type-system-functional-londoners-2014
>継承や委譲で階層構造を表現できる
OOでは継承や委譲で階層構造を表現できると言われても
関数型の言語よりOO言語のほうがDDDには向いてるという論拠にはならないよ
少し古いスライドだけど、これ見て概要だけでも勉強して
https://www.slideshare.net/ScottWlaschin/domain-driven-design-with-the-f-type-system-functional-londoners-2014
180デフォルトの名無しさん
2020/03/15(日) 18:32:23.77ID:XbDoNvCk 一昔前のOOP厨と一緒だな。
歴史を学ばん奴は一生ループする。
歴史を学ばん奴は一生ループする。
181デフォルトの名無しさん
2020/03/15(日) 23:47:43.93ID:zobMuC0O >>179 そうだよなと得心する事が多くて良い資料ですね
ドメインに継承や移譲が要るって考えてる人は是非とも読んで欲しいし、反例を挙げて欲しくなる
ドメインに継承や移譲が要るって考えてる人は是非とも読んで欲しいし、反例を挙げて欲しくなる
182デフォルトの名無しさん
2020/03/16(月) 00:15:47.56ID:PIKXUqlC >>179
俺もこのスライドの作成者の本で関数型DDDに入門したクチだけど、本当にわかりやすかった
もともとHaskell, purescriptはやってて関数型には慣れてたけど、
DDDについては知らなかったので、せっかくだから関数型前提で書かれている本でと手にした。
Domain modeling made functional っていう本で、
DDDの解説はもちろん、関数型プログラミングの諸概念の解説もわかりやすく、
一冊で二度美味しい内容で、実用的な関数型プログラミングの入門書としても超おすすめ。
https://youtu.be/dEKvIxsERAI
ちなみにyoutubeにはこのスライドの発表動画もあったりする
俺もこのスライドの作成者の本で関数型DDDに入門したクチだけど、本当にわかりやすかった
もともとHaskell, purescriptはやってて関数型には慣れてたけど、
DDDについては知らなかったので、せっかくだから関数型前提で書かれている本でと手にした。
Domain modeling made functional っていう本で、
DDDの解説はもちろん、関数型プログラミングの諸概念の解説もわかりやすく、
一冊で二度美味しい内容で、実用的な関数型プログラミングの入門書としても超おすすめ。
https://youtu.be/dEKvIxsERAI
ちなみにyoutubeにはこのスライドの発表動画もあったりする
183デフォルトの名無しさん
2020/09/16(水) 23:15:57.30ID:hC0if/qX Matthias Felleisenの「How to Design Programs」を読んで関数型プログラミングに
興味を持ったものです。
次にモナドを勉強しようとしてHaskellの本を読んだがいまいちピンときません。
>>182さんが挙げられている本では、モナドを使ってモデルの実装をしているようですが、
モナドの使い方は理解できますか?
興味を持ったものです。
次にモナドを勉強しようとしてHaskellの本を読んだがいまいちピンときません。
>>182さんが挙げられている本では、モナドを使ってモデルの実装をしているようですが、
モナドの使い方は理解できますか?
184デフォルトの名無しさん
2020/09/17(木) 01:01:40.98ID:m/PpcUvw Scalaで良ければ、manning.comからでてる Functional and Reactive Domain Modeling にモナドでドメインサービス組み立てる話が掲載されてる。
なおFree Monadをベースとしているので軽く死ねる。
https://www.manning.com/books/functional-and-reactive-domain-modeling
なおFree Monadをベースとしているので軽く死ねる。
https://www.manning.com/books/functional-and-reactive-domain-modeling
185183
2020/09/17(木) 23:32:13.91ID:pIiN+iyt >>184
ありがとうございます・・・でもDomain modeling made functional をPDFでポチっちゃいました。
後で読もうと思います。
ところでDDDを学ぶ上で、大規模な開発経験が必要なんでしょうか?
自分は学生で、そのような経験がありません。
『How to Design Programs』では小さなプログラム作成の演習はありましたが、
それ以上の大きさのプログラム作成の方法はありませんでした。
DDDは大きなプログラムをつくるガイドになりますか?
ありがとうございます・・・でもDomain modeling made functional をPDFでポチっちゃいました。
後で読もうと思います。
ところでDDDを学ぶ上で、大規模な開発経験が必要なんでしょうか?
自分は学生で、そのような経験がありません。
『How to Design Programs』では小さなプログラム作成の演習はありましたが、
それ以上の大きさのプログラム作成の方法はありませんでした。
DDDは大きなプログラムをつくるガイドになりますか?
186デフォルトの名無しさん
2020/09/22(火) 23:49:46.08ID:mxGu0eGU >>184
これ
これ
187デフォルトの名無しさん
2020/09/23(水) 00:07:54.77ID:NN2kaL4Y188デフォルトの名無しさん
2020/09/23(水) 06:16:40.99ID:VKAwJeUe DDD興味ある
大いに語るがよい
大いに語るがよい
189デフォルトの名無しさん
2020/09/23(水) 07:12:30.61ID:SbRHy3fQ190デフォルトの名無しさん
2020/09/23(水) 19:36:49.05ID:4eJQ0d8P >>189
thx
thx
191デフォルトの名無しさん
2020/09/30(水) 19:59:30.09ID:0r1wHLnO DDDもそろそろバージョンアップせんと
OOPは時代遅れ
OOPは時代遅れ
192デフォルトの名無しさん
2020/12/02(水) 20:38:28.14ID:E6FeESB6 Freeモナドなんて言語埋め込みDSLを作るってだけ
193デフォルトの名無しさん
2020/12/05(土) 00:03:20.35ID:FFFEgOY+ DDDいいよね!
なんちゃってOOPから脱出する際に役立ったよ
なんちゃってOOPから脱出する際に役立ったよ
194デフォルトの名無しさん
2021/03/31(水) 07:17:34.67ID:PqSCUqXE DDD、CQRS、イベントソーシング…
企業内システムでここまでやってるとこってあるんだろうか
参照系中心のシステムでDDDやるのは愚行?
企業内システムでここまでやってるとこってあるんだろうか
参照系中心のシステムでDDDやるのは愚行?
195デフォルトの名無しさん
2021/05/18(火) 06:36:21.05ID:Z0RWJbQc おれはさとった
名前がちがうだけのValueObjectクラスだけつくって
メソッド引数の位置を間違えられないようにしときゃいいんだ
それだけでいいんだ
バリデーションは入り口でやる
中は値が正しい前提でまったくチェック不要
それがDDD
名前がちがうだけのValueObjectクラスだけつくって
メソッド引数の位置を間違えられないようにしときゃいいんだ
それだけでいいんだ
バリデーションは入り口でやる
中は値が正しい前提でまったくチェック不要
それがDDD
196デフォルトの名無しさん
2021/05/19(水) 20:38:26.97ID:NeVz061v それだけでDDDは語れないような…
いまだに集約がわからんよ
いまだに集約がわからんよ
197デフォルトの名無しさん
2021/05/23(日) 21:05:34.48ID:hHIInayx 教科書が概念的でよくわからんことばっかほざいてる時点でおかしい
サンプルを一発提示すればああこんなのねって
それで終わるだろ!?
サンプルを一発提示すればああこんなのねって
それで終わるだろ!?
198デフォルトの名無しさん
2021/07/13(火) 00:57:28.25ID:FnRTq1rf ガサッと取ってきて変更して全部更新!ってアホなんって思った
これの何がいいの?
これの何がいいの?
199デフォルトの名無しさん
2021/07/13(火) 22:24:26.83ID:fj1E0qkc CRUD で十分な単純なアプリならいらない
200デフォルトの名無しさん
2021/07/14(水) 08:14:14.87ID:wgyTk/up >>197
2003年頃ならともかく。OSSのアプリが溢れている今の状況ならこのアプリのこの部分はこのパターンを使っているって示せると思う。
2003年頃ならともかく。OSSのアプリが溢れている今の状況ならこのアプリのこの部分はこのパターンを使っているって示せると思う。
201デフォルトの名無しさん
2021/08/10(火) 20:46:36.95ID:R7L3+gXm202デフォルトの名無しさん
2021/08/10(火) 23:57:50.00ID:yd00h36Wレスを投稿する
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪★2
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【画像】外務省局長「この度はうちの🦎がすみません…」中国「……」 [165981677]
- 【雑談】暇人集会所part18
- 外務省局長、よくわからないまま帰国へ [834922174]
