【DDD】ドメイン駆動設計【エリック・エヴァンス】 (247レス)
1-

1
(1): 2017/10/24(火)19:39 ID:jO+jDbIG(1/14) AAS
AA省
167: 2020/03/08(日)23:55 ID:2h+/wurX(1) AAS
作用?
168: 2020/03/09(月)21:19 ID:bHKN7jy6(1) AAS
左様でござる
169
(1): 2020/03/09(月)22:12 ID:ajCpPJPb(1) AAS
Webみたいにステートレスで済むなら
関数型の方が簡潔に書ける部分もあるが

ビジネスロジックは複雑な状態遷移や
階層構造を持っていることが多いので

FPでもDDDはできるが
OOの方が向くことが多い
170
(1): 2020/03/09(月)22:18 ID:aVP5r6mu(1) AAS
階層構造を持ってるからOOの方が向いてるってのはよくわからないな
171
(2): 2020/03/09(月)23:12 ID:y1num/wG(1) AAS
?複雑な状態遷移があるとFPが向かないっていうのもよくわからないな
状態の数だけ型作って、遷移の数だけ関数つくればいいだけやん

OOPはむやみにクラス内に隠れた状態や依存を作って他のクラスとうまく合成されない物を作りがち
そんなことしてると、非同期な処理を並列化とかしようにも気にしないといけないことが増えて大変な労力だろうに
172
(1): 2020/03/14(土)17:55 ID:JKHuUiBu(1) AAS
>>171
言いたいことはわかるが、websocketみたいなコネクション管理するものを
まるまる関数型で書くなら状態変化を含んだとしてもオブジェクト的に記述した方が
多分楽。
なんでもどっちかに倒そうとすること自体が悪パターンな気がするよ。
173: 2020/03/14(土)18:05 ID:ZFQFhT9Y(1) AAS
良いとこ取りしていけ
174: 2020/03/15(日)00:23 ID:UpO1XTWv(1/2) AAS
>>172
WebSocketかー。やったことないからやってみよう
175
(2): 169 2020/03/15(日)05:56 ID:1/DFOu+E(1/2) AAS
>>170
継承や委譲で階層構造を表現できる

まあメジャー言語はたいてい
OOのパラダイム入ってるから
だいたいできるんだけど

>>171
>状態の数だけ型作って
省7
176
(1): 2020/03/15(日)08:25 ID:j83nFY2E(1) AAS
>>175
あんたに限らず関数型が大規模なプログラム書くのに向かないと思ってる層がちゃんと関数型プログラミングをしたことがなく先入観でもの言ってるのはよくわかった
177
(1): 2020/03/15(日)08:38 ID:1/DFOu+E(2/2) AAS
>>176
あんたも決めつけで言ってるだけだろ
関数型で状態遷移を把握しづらいのは
強く実感しているし普及しない原因だ
178: 2020/03/15(日)09:21 ID:UpO1XTWv(2/2) AAS
>>177
それはどの言語でどんなことしようとして「強く実感」したの?

関数型言語が普及しないのは、単に先入観やOOP神話の影響で学ぼう使おうと思う人が少ないからだよ。
関数型プログラミングが普及しない理由は、当然だが関数型プログラミングの諸概念を表現するのに命令型言語が不向きだから。柔道着着て水泳するようなもんだ。
179
(2): 2020/03/15(日)14:50 ID:7lggs81n(1) AAS
>>175
>継承や委譲で階層構造を表現できる

OOでは継承や委譲で階層構造を表現できると言われても
関数型の言語よりOO言語のほうがDDDには向いてるという論拠にはならないよ
少し古いスライドだけど、これ見て概要だけでも勉強して
外部リンク:www.slideshare.net
180: 2020/03/15(日)18:32 ID:XbDoNvCk(1) AAS
一昔前のOOP厨と一緒だな。
歴史を学ばん奴は一生ループする。
181: 2020/03/15(日)23:47 ID:zobMuC0O(1) AAS
>>179 そうだよなと得心する事が多くて良い資料ですね
ドメインに継承や移譲が要るって考えてる人は是非とも読んで欲しいし、反例を挙げて欲しくなる
182
(1): 2020/03/16(月)00:15 ID:PIKXUqlC(1) AAS
>>179
俺もこのスライドの作成者の本で関数型DDDに入門したクチだけど、本当にわかりやすかった
もともとHaskell, purescriptはやってて関数型には慣れてたけど、
DDDについては知らなかったので、せっかくだから関数型前提で書かれている本でと手にした。
Domain modeling made functional っていう本で、
DDDの解説はもちろん、関数型プログラミングの諸概念の解説もわかりやすく、
一冊で二度美味しい内容で、実用的な関数型プログラミングの入門書としても超おすすめ。
省2
183
(1): 2020/09/16(水)23:15 ID:hC0if/qX(1) AAS
Matthias Felleisenの「How to Design Programs」を読んで関数型プログラミングに
興味を持ったものです。
次にモナドを勉強しようとしてHaskellの本を読んだがいまいちピンときません。
>>182さんが挙げられている本では、モナドを使ってモデルの実装をしているようですが、
モナドの使い方は理解できますか?
184
(3): 2020/09/17(木)01:01 ID:m/PpcUvw(1) AAS
Scalaで良ければ、manning.comからでてる Functional and Reactive Domain Modeling にモナドでドメインサービス組み立てる話が掲載されてる。
なおFree Monadをベースとしているので軽く死ねる。

外部リンク:www.manning.com
185: 183 2020/09/17(木)23:32 ID:pIiN+iyt(1) AAS
>>184
ありがとうございます・・・でもDomain modeling made functional をPDFでポチっちゃいました。
後で読もうと思います。
ところでDDDを学ぶ上で、大規模な開発経験が必要なんでしょうか?
自分は学生で、そのような経験がありません。
『How to Design Programs』では小さなプログラム作成の演習はありましたが、
それ以上の大きさのプログラム作成の方法はありませんでした。
省1
186: 2020/09/22(火)23:49 ID:mxGu0eGU(1) AAS
>>184
これ
187
(1): 2020/09/23(水)00:07 ID:NN2kaL4Y(1) AAS
>>184
これ読んでみようかと思ったら

>読者は関数型言語とドメイン駆動設計に慣れている必要がある

とあるんだが、読むのにドメイン駆動設計の深ーい知識は必要だった?
188: 2020/09/23(水)06:16 ID:VKAwJeUe(1) AAS
DDD興味ある
大いに語るがよい
189
(1): 2020/09/23(水)07:12 ID:SbRHy3fQ(1) AAS
>>187
必要最小限ではあるがScalaの文法解説と、各ドメインオブジェクトの解説は入っていたはず。
知っていれば理解が進みやすいくらいに考えてればいいはず。
190: 2020/09/23(水)19:36 ID:4eJQ0d8P(1) AAS
>>189
thx
191
(1): 2020/09/30(水)19:59 ID:0r1wHLnO(1) AAS
DDDもそろそろバージョンアップせんと
OOPは時代遅れ
192: 2020/12/02(水)20:38 ID:E6FeESB6(1) AAS
Freeモナドなんて言語埋め込みDSLを作るってだけ
193: 2020/12/05(土)00:03 ID:FFFEgOY+(1) AAS
DDDいいよね!
なんちゃってOOPから脱出する際に役立ったよ
194: 2021/03/31(水)07:17 ID:PqSCUqXE(1) AAS
DDD、CQRS、イベントソーシング…
企業内システムでここまでやってるとこってあるんだろうか
参照系中心のシステムでDDDやるのは愚行?
195: 2021/05/18(火)06:36 ID:Z0RWJbQc(1) AAS
おれはさとった

名前がちがうだけのValueObjectクラスだけつくって
メソッド引数の位置を間違えられないようにしときゃいいんだ
それだけでいいんだ

バリデーションは入り口でやる
中は値が正しい前提でまったくチェック不要

それがDDD
196: 2021/05/19(水)20:38 ID:NeVz061v(1) AAS
それだけでDDDは語れないような…
いまだに集約がわからんよ
197
(1): 2021/05/23(日)21:05 ID:hHIInayx(1) AAS
教科書が概念的でよくわからんことばっかほざいてる時点でおかしい
サンプルを一発提示すればああこんなのねって
それで終わるだろ!?
198: 2021/07/13(火)00:57 ID:FnRTq1rf(1) AAS
ガサッと取ってきて変更して全部更新!ってアホなんって思った
これの何がいいの?
199: 2021/07/13(火)22:24 ID:fj1E0qkc(1) AAS
CRUD で十分な単純なアプリならいらない
200: 2021/07/14(水)08:14 ID:wgyTk/up(1) AAS
>>197
2003年頃ならともかく。OSSのアプリが溢れている今の状況ならこのアプリのこの部分はこのパターンを使っているって示せると思う。
201
(1): 2021/08/10(火)20:46 ID:R7L3+gXm(1) AAS
>>191
亀レスだが、OOPを補完するのがDDDだろうに
なんでDDDスレでOOPが時代遅れだと言えるのか疑問
202
(1): 2021/08/10(火)23:57 ID:yd00h36W(1) AAS
>>201
OOPより上位レイヤーの概念なのでOOPを補完するものではないよ
Eric Evansの最初の本ではDDDの実装例としてOOPが使われただけ
関数型で実装する例もある
203
(1): 2021/08/11(水)22:58 ID:AUz9CV9O(1) AAS
>>202
> OOPより上位レイヤーの概念なので
> Eric Evansの最初の本ではDDDの実装例としてOOPが使われた

そういうのを補完って言うのでは?
204: 2021/08/12(木)23:34 ID:1njm/kBk(1) AAS
>>203
お前は国語から勉強し直さないとこの先辛いぞ?
お前は概念とか言ってる場合じゃない
205
(1): 2021/08/13(金)08:38 ID:yFah4eQP(1) AAS
ほかん
【補完】
《名・ス他》
足りない点を補って完全にすること。

OOPに足りない部分をDDDで補ってるって言いたかったのでは?
別に変だとは思えないけど
206: 2021/08/13(金)09:30 ID:4chv34Gy(1) AAS
OOPを補完するのがプログラミングだろうに
なんでプログラミングスレでOOPが時代遅れだと言えるのか疑問

OOPに足りない部分をプログラミングで補ってるって言いたかったのでは?
207: 2021/08/13(金)11:25 ID:klCtaRRF(1/2) AAS
OOPはプログラミングを補うものでありプログラミングがOOPを補う訳ではない
208: 2021/08/13(金)11:56 ID:VPbn/mvQ(1) AAS
>>205
補完などではない
そもそもOOPなどと書くから話がおかしくなる

DDDはOODを包含した概念である
209: 2021/08/13(金)13:49 ID:iLxHQIIJ(1) AAS
OODと言い換えたところで補完もしてなければ包含もしてない

DDDをOOの文脈でしか理解できない人は抽象概念の理解がもともと不得意なのか
日本人の書いたなんちゃってDDD本で分かったつもりになってるか
そもそもOO以外を知らないか
210: 2021/08/13(金)14:28 ID:klCtaRRF(2/2) AAS
お前はDDDを学んでもOOP及びOODには何の影響もないみたいだけど、俺は別にDDDで学んだ知識がOOP/OODに役立ってるので、別にどうでもいいっす。
なんで役立ったのか想像できないのなら、その程度ってことでしょう。
211: 2021/08/13(金)15:21 ID:cdK9y9f/(1) AAS
ブホッw
212: 2021/08/14(土)07:58 ID:3YTtOTVG(1) AAS
OOPにありがちな、車やエンジンを例にした説明より
DDDの方がしっくりくるというか
あ、OOPでこんなことができるのかと目から鱗だったな
213: 2021/08/14(土)15:27 ID:db9EEEoY(1) AAS
いつの時代になってもITの方法論は「方法論オナニストに都合のよい飯の種」の域を出ない
214: 2021/08/14(土)15:31 ID:4CNv29yk(1) AAS
建設業のように国が規格を決めてしまえばよかったんだ
国所属の認定団体に承認された関数以外使ってはいけません
215: 2021/09/16(木)15:51 ID:PMPdG/+a(1/2) AAS
DDDとは、「ドメイン知識(モデル)」を「駆動」して「開発」する開発手法であって、何か特定のアーキテクチャをあらわすものではない
216: 2021/09/16(木)15:54 ID:PMPdG/+a(2/2) AAS
嘘言いました
最後のDはDevelopmentじゃなくてDesignだったわ
恥ずかしー
217: 2021/09/16(木)19:58 ID:d3wmnSJn(1) AAS
もーやだー
218: 2021/09/26(日)11:30 ID:0AJzxi3v(1) AAS
設計はアーキテクチャを示すものじゃない
言葉が違えば意味が違う
219: 2022/05/07(土)06:20 ID:Japg54lQ(1) AAS
DDDは大量データ更新に弱い
10万件のレコードに同じ値をセットする処理に途方もなく時間がかかる
220: 2022/07/27(水)17:37 ID:hi2YYXJ0(1/2) AAS
カルト宗教だよね
設計というのはパフォーマンス要件の整理と実現に当たってのアーキテクチャを考えるために必要なわけで
機能要件にSLAがないだなんてことは設計するならばありえないし、
じゃあその要件に到達するためにシステムやミドルウェアをどう使っていくかがアーキテクトの肝なところじゃん
APPサーバに閉じた議論しかしてない時点で雑魚システムしか作れんし
雑魚システムにそもそも設計なんざいらんだろって話よ

こういう連中が言い出しそうなこと、DBは抽象化できる
省5
221: 2022/07/27(水)17:39 ID:hi2YYXJ0(2/2) AAS
型システムの理解も貧弱、DBMSの理解も貧弱、なんならネットワーク・プロトコルの理解も貧弱

一生システム完成させる気ないやる気なしエンジニアの最後の拠り所だろ
222: 2022/07/27(水)20:57 ID:i1UDtnj5(1) AAS
だいぶ詳しい反論だなw
223: 2022/07/27(水)21:51 ID:gDp6GlMI(1) AAS
外部リンク:enterprisecraftsmanship.com
DDDでバルク処理
そこまで拘らなくていいんじゃないかなと言う感想
224: 2023/09/22(金)05:22 ID:dV2V1da1(1) AAS
これってどうやって気にするの?
225: 2023/09/28(木)03:45 ID:i8VmgZE9(1) AAS
ゴシゴシ(-_\)(/_-)三( ゚Д゚) ス、スゲー!
226: 2023/12/03(日)23:52 ID:p5/cY/Es(1) AAS
テスト
227: 2024/12/06(金)22:29 ID:IVgCNi6x(1) AAS
関数型DDDの本の作者のアーキテクチャが話題になっている
Repositoryはいらない
大事なのはIOをロジックの中から排除せよということらしい
以下のように"端に寄せる"

IO
ビジネスロジック
IO
省2
228: 2024/12/07(土)18:42 ID:cdxtdz0L(1) AAS
ビジネスロジックはパイプラインで構築して副作用がないようにする
229: 2024/12/08(日)00:14 ID:fPMU02oZ(1) AAS
DDDは素晴らしいと思うけど、プロジェクト内の他エンジニアのスキルが低いとアンチパターンになるんだよな
230: 2024/12/08(日)14:38 ID:5KF429T4(1) AAS
DDDって再現性ないじゃんw
偽科学
231: 2024/12/08(日)15:54 ID:yVSjHkLG(1/2) AAS
設計に再現性はないよ
要件が全く同じということがないから
だから難しい
232: 2024/12/08(日)15:56 ID:yVSjHkLG(2/2) AAS
IOを"端に寄せて"ビジネスロジックはパイプラインで実行して不変データ構造にするというアイデアマジで凄い
これからこの設計にする
233
(1): 2024/12/08(日)19:27 ID:xllqP0wk(1) AAS
そのぶんリソースバカ食いのクソアプリの出来上がり
234: 2024/12/09(月)00:32 ID:+1IlmX9/(1) AAS
根っこに流れる考えは、コマンドラインシェルでコマンドをパイプで繋いでいくことと同じだけどね。

一連のワークフローを一つのコマンドとみなして、さらに大きなワークフローに組み込むところとかもね。
235: 2024/12/19(木)14:37 ID:fGxiJNMh(1) AAS
F#で遊んだ時シェルのパイプじゃんとは思ってた
関数型言語の原点てシェルスクリプトなんか?
236
(1): 2024/12/20(金)12:36 ID:xSkBLBiw(1) AAS
>>233
そこで遅延評価ですよ
237
(1): 2024/12/20(金)13:57 ID:UU1VM3lj(1) AAS
>>236
やってから言え
遅延評価こそリソースバカ食いだ
238
(1): 2024/12/20(金)18:04 ID:eZ4ILWvg(1/2) AAS
>>237
今の時代リソースなど死ぬほどあるのだよ
自作でサーバー組み立てる場合でもメモリ64Gなんて普通だし
239
(1): 2024/12/20(金)18:26 ID:zuM8e09I(1/3) AAS
>>238
それはお前の作ってるものがしょぼいからだよ
240: 2024/12/20(金)18:34 ID:zuM8e09I(2/3) AAS
クラウドはリソース使えば使うだけ課金
241
(2): 2024/12/20(金)19:25 ID:Sq/wbvsq(1/3) AAS
遅延評価がリソース食うっていつの時代よ?
むしろ今は遅延評価しないとリソースをバカ喰いする時代だぞ
キャッシュと勘違いしてない?
ディープラーニングとか全部遅延評価だ
それこそ>>239の作ってるものがしょぼいという証明になったな
242: 2024/12/20(金)19:31 ID:eZ4ILWvg(2/2) AAS
>>241
多分Haskellの遅延評価のことを言ってるのでは?
メモリをドカ食いすると聞いたことがある
しかしそれは言語のインプリメンテーションやデータ構造の問題であり
一般的な遅延評価がメモリをくうわけではないのよな
243: 2024/12/20(金)20:48 ID:zuM8e09I(3/3) AAS
>>241
だからやってから言えって
Haskellの不評のひとつが遅延評価だ
244: 2024/12/20(金)21:17 ID:Sq/wbvsq(2/3) AAS
Haskell使いは大変でちゅね〜
245: 2024/12/20(金)22:16 ID:L0BexGzI(1) AAS
遅延評価だからリソースバカ喰いするわけじゃないのにね
バカは因果関係がわからないからな
246: 2024/12/20(金)22:30 ID:Sq/wbvsq(3/3) AAS
Haskellしか書いてないんじゃないの?
知らんけど
247: 2024/12/21(土)17:16 ID:unOGov3F(1) AAS
ひぐちデブすぎんか?
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.768s*