【DDD】ドメイン駆動設計【エリック・エヴァンス】 (247レス)
【DDD】ドメイン駆動設計【エリック・エヴァンス】 http://mevius.5ch.net/test/read.cgi/tech/1508841546/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: デフォルトの名無しさん [] 2017/10/24(火) 19:39:06.49 ID:jO+jDbIG 第1部 ドメインモデルを機能させる ドメイン駆動設計におけるモデルの有用性 ソフトウェアの核心 第1章 知識をかみ砕く 効果的なモデリングの要素 知識のかみ砕き 継続的学習 知識豊富な設計 例1.1——隠された概念を引き出す 深いモデル 第2章 コミュニケーションと言語の使い方 ユビキタス言語(UBIQUITOUS LANGUAGE) 例2.1——貨物輸送プログラムを完成させる 声に出してモデリングする 1つのチームに1つの言語 ドキュメントと図 書かれた設計ドキュメント 実行可能な基盤 説明のためのモデル 例2.2——輸送業務と経路 第3章 モデルと実装を結びつける モデル駆動設計(MODEL-DRIVEN DESIGN) モデリングパラダイムとツールによるサポート 例3.1——手続き型からモデル駆動へ 骨格を見せる:なぜモデルがユーザにとって重要なのか? 実践的モデラ(HANDS ON MODELERS) http://mevius.5ch.net/test/read.cgi/tech/1508841546/1
121: デフォルトの名無しさん [] 2017/12/05(火) 00:47:41.31 ID:dpNb6B9r エヴァとのコラボカードナナコ最高。http://maeda-gourmet.jp/2016/09/09/nanaco/ http://mevius.5ch.net/test/read.cgi/tech/1508841546/121
122: デフォルトの名無しさん [] 2018/05/23(水) 21:07:55.14 ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 Q3XKO http://mevius.5ch.net/test/read.cgi/tech/1508841546/122
123: デフォルトの名無しさん [] 2018/07/05(木) 00:49:06.04 ID:RfoszcD2 ZJY http://mevius.5ch.net/test/read.cgi/tech/1508841546/123
124: デフォルトの名無しさん [sage] 2018/09/09(日) 06:43:58.22 ID:HEZvkUhE ゲーム開発でDDDは使えますか? その場合のドメインとドメインエキスパートとは例えば何、誰を指すでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1508841546/124
125: デフォルトの名無しさん [] 2018/10/08(月) 00:49:59.53 ID:Kbmtp0Cm ボトムアップドメイン駆動設計 https://ddd-community-jp.connpass.com/event/103428/ ぜひ参加してください! http://mevius.5ch.net/test/read.cgi/tech/1508841546/125
126: デフォルトの名無しさん [] 2018/10/11(木) 20:53:29.46 ID:f3Pn3eWA Eric Evans氏はドメイン駆動設計(DDD) は未完成だと述べた https://www.infoq.com/jp/news/2018/10/ddd-not-done http://mevius.5ch.net/test/read.cgi/tech/1508841546/126
127: デフォルトの名無しさん [] 2018/10/24(水) 09:23:12.56 ID:HQt07idp >>125 講師がひとりで勝手に盛り上がってて寒いセミナーだったな マーケ視点で物事を考えない典型的駄目エンジニアって感じだから内容も薄い薄い http://mevius.5ch.net/test/read.cgi/tech/1508841546/127
128: デフォルトの名無しさん [sage] 2018/10/25(木) 01:29:02.78 ID:c44lxtY/ こんなやつらがDDDやってるんだなってのがわかって結構面白かったけどね 今日の内容で本書きます!って言われたときはさすがに周り失笑してたけど http://mevius.5ch.net/test/read.cgi/tech/1508841546/128
129: デフォルトの名無しさん [sage] 2019/03/17(日) 12:58:39.06 ID:F89k9A+v まだ、軽量DDDなんかやっている人がいるのね。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/129
130: デフォルトの名無しさん [sage] 2019/04/25(木) 08:19:51.47 ID:NTtreDXN 意外と盛り上がらないね。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/130
131: デフォルトの名無しさん [sage] 2019/04/25(木) 20:00:13.26 ID:NTtreDXN ドメインが複雑じゃないとあんまり意味なさそうなのは感じ無くもないけど、将来の改修のしやすさのための布石と思えばいいのかな。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/131
132: デフォルトの名無しさん [sage] 2019/05/06(月) 12:07:22.28 ID:y1ayn2s5 >>131 ドメインモデルが有効に機能するのって、イラレ、フォトショ、動画編集、オフィス系のようなパッケージアプリぐらいだと思う。 普通のDB叩くアプリではいらないと思う。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/132
133: デフォルトの名無しさん [] 2019/06/20(木) 07:02:35.15 ID:o5P3FSwL 業務系はエンティティ間の関連が多すぎてリポジトリパターンと相性が悪いと思う トランザクション分析すると集約ルートが複数のテーブル全体を巻き込んだりする http://mevius.5ch.net/test/read.cgi/tech/1508841546/133
134: デフォルトの名無しさん [] 2019/10/11(金) 20:14:12.01 ID:hGbwA5Kq 最近DDDの本読んで勉強してるが、日本じゃ流行らなさそうだなという印象 英語圏なら確かにユビキタス言語からコードにシームレスに移れ、 コードがそのままドメインエキスパートにも読めるドキュメントにできるだろうが… http://mevius.5ch.net/test/read.cgi/tech/1508841546/134
135: デフォルトの名無しさん [sage] 2019/10/12(土) 06:32:18.26 ID:RANQu5YO 古典的なデータモデリングのマッピング先がOOPに変わっただけという印象なんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/135
136: デフォルトの名無しさん [sage] 2019/10/12(土) 14:21:09.70 ID:7TGqmTiW >>135 DDD本で紹介されてる概念やテクニックはOOPに限られたものじゃないよ DOAの古典的データモデリングでも十分に役立つし関数型のパラダイムで実装することもできる 日本語でDDDについて書かれてる記事は質が低いのが多いから ちゃんと理解したければEric Evansの原典かVernonの"Domain-Driven Design Distilled"を読むのを勧める http://mevius.5ch.net/test/read.cgi/tech/1508841546/136
137: デフォルトの名無しさん [sage] 2019/11/27(水) 21:15:02.91 ID:ymKEnJ4Y 「Hands-On Domain-Driven Design with .NET Core」Alexey Zimarev これ結構いい本 Packtのサイトでセール中なのか今なら10$で買える http://mevius.5ch.net/test/read.cgi/tech/1508841546/137
138: デフォルトの名無しさん [sage] 2019/12/22(日) 03:38:09.90 ID:n6weJVCQ >> 128 これ? https://www.shoeisha.co.jp/book/detail/9784798150727 目次見るとなんだかなと思う。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/138
139: デフォルトの名無しさん [] 2020/02/08(土) 08:56:40.52 ID:YyWxF9Co モデル層とデータストア層って分離できないのかな。 仕様変更のしやすさからモデル層の独立を図る必要があるけど、 データベースファースト(テーブルが先にあってDBの都合で正規化済み)の場合、 どうやってモデル層とデータストア層を分離できるんだろう。 O/Rマッピングも使えない。 どうやって解決するのが一般的なんだろう。 そもそも、O/Rマッピングが完全にできたとしても、それは初期状態においてであって、 変更を重ねてモデルのフィールドが変更になれば、データテーブルも変更しなければならないはず。 理想ばかりでインピーダンス不整合が脳内で続くんだけど。 考えてばかりでプログラミングを開始できない。。。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/139
140: デフォルトの名無しさん [] 2020/02/08(土) 09:03:45.09 ID:YyWxF9Co pythonでもドメイン駆動設計するのに問題ない? http://mevius.5ch.net/test/read.cgi/tech/1508841546/140
141: 140 [] 2020/02/08(土) 09:04:48.14 ID:YyWxF9Co >>140 PythonのDjangoでWEBアプリを考えています。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/141
142: デフォルトの名無しさん [sage] 2020/02/08(土) 12:58:17.20 ID:0wE1WgKD >>139 Django ORMはActive Record PatternだからDBが先にあるような場合にはうまくいかない そもそもActive Record使ってるとモデルとデータストアの結合度が高い 分離したければRepository Patternを自分で実装するかそれをサポートしてるフレームワークを選択するか “python repository pattern”で検索 http://mevius.5ch.net/test/read.cgi/tech/1508841546/142
143: 139 [] 2020/02/09(日) 12:24:41.03 ID:dmd9x03B >>142 レスありがとうございました。 DjangoのActive Record Patternはコードファーストと呼ばれるやつですね。 モデルの変更がデータベーステーブルに直結するので、結合度が高いのがわかります。 最初の開発のしやすさがあっても、変更には弱いのだとわかりました。 python repository pattern について情報が少ないですね。 モデルとデータストアをどう分離できるか考えてみたいと思います。 モデルが何か中間層のオブジェクトを経由してデータテーブルに保存できるようにすれば、 モデルの変更はモデルの変更に終止させられるかもしれません。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/143
144: デフォルトの名無しさん [sage] 2020/02/09(日) 20:14:19.34 ID:R6dJMwaP >>143 >モデルが何か中間層のオブジェクトを それがリポジトリと呼ばれるもの http://mevius.5ch.net/test/read.cgi/tech/1508841546/144
145: デフォルトの名無しさん [sage] 2020/02/10(月) 00:10:18.78 ID:0IUSwyg5 >>144 なるほど。 あるモデルオブジェクトを、中間層にある一対一で対応したクラス食わせると、 データベースの正規化テーブルに適切に分配して、 保存してくれるようなイメージかなあと思っています。 それにしても、モデルの変更は中間層の対応クラスやデータテーブルにも及んでしまうなあ。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/145
146: デフォルトの名無しさん [sage] 2020/02/10(月) 20:33:59.96 ID:EqwKVKI1 モデルが中心で一番重要だから当たり前 データベースやフレームワークの都合でモデルが振り回される方が厄介 というか安定性が一番高く変化しにくいのがモデルのはずで、先にきちんと分析してある程度要件を固めないといけない http://mevius.5ch.net/test/read.cgi/tech/1508841546/146
147: デフォルトの名無しさん [] 2020/02/11(火) 10:44:43.50 ID:qbg35N4F >>146 モデル中心で設計していきたいと思います。 しかし、データベースが先に立っている旧システムのWEBアプリ化なので、 それらのテーブル上にまたがった(リレーションされた)データを、 どうモデルに切り分けると良いか考えたいと思います。 モデル(∞)-テーブル(1)のような関係になりそうです。 それを結合させられる中間層(リポジトリ?)を自分で考えたいと思います。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/147
148: デフォルトの名無しさん [sage] 2020/02/11(火) 12:30:25.83 ID: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: # ... http://mevius.5ch.net/test/read.cgi/tech/1508841546/148
149: デフォルトの名無しさん [sage] 2020/02/11(火) 13:38:06.66 ID:v/oRLdRM >>147 >テーブル上にまたがった(リレーションされた)データを、 >どうモデルに切り分けると良いか考えたいと思います。 それはモデル中心じゃなく既存テーブル中心設計じゃないか? http://mevius.5ch.net/test/read.cgi/tech/1508841546/149
150: デフォルトの名無しさん [sage] 2020/02/11(火) 19:36:41.89 ID:Vv3Ln0ZS とはいえ普通の開発は既存のDBのテーブルに引きづられるのが実際だろ。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/150
151: デフォルトの名無しさん [sage] 2020/02/11(火) 21:46:53.70 ID:v/oRLdRM >>150 DDDのようなモデル中心の設計では ビジネス要求だったりユースケースだったり アプリケーションの外部仕様を満たすために最適なドメインモデル考えるのが先 既存DB構造を含めてそのモデルをどう永続化するかはそれよりも後 もちろん既存DBの構造によってドメインモデルを変更せざるを得ない場合もあるが >>147が書いてるとは考え方の主従が違う http://mevius.5ch.net/test/read.cgi/tech/1508841546/151
152: デフォルトの名無しさん [] 2020/02/13(木) 00:19:28.03 ID:slfRt6Hj GoとかRustとかのクラスベースじゃないのとJavaとかのクラスベースってどっちがDDDしやすいの? ライブラリ、フレームワークとかの資産とかなしにして http://mevius.5ch.net/test/read.cgi/tech/1508841546/152
153: デフォルトの名無しさん [sage] 2020/02/13(木) 02:16:39.59 ID:zqMi9kcN >>148 詳細なレスありがとうございます。 リポジトリの作成について、 インターフェイスと実装を分ける点についてしっかりと考えてみたいと思いました。 なるほど。 インターフェイスをモデルと合わせておくことは重要だと思いました。 少なくとも、データベース層の変更があってもインターフェイスの実装クラスまでで 影響をストップできるのは素晴らしいです。精神的に安心。 ドミノのストッパーみたいな感じがします。 Pythonにはインターフェイスの概念がないというお話を聞いて、 やはりC#(.net core)で構築することを考えました。 こちらは少し経験があるのでやりやすいからです。 本当はOSS界のPythonに憧れてはいたんですけどね。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/153
154: デフォルトの名無しさん [sage] 2020/02/13(木) 02:20:34.42 ID:zqMi9kcN >>149-151 たしかに、 自分が求めに応じて何を作りたいのかが先に立ちますよね。 すると、モデルが先に来る。 しかし、既に構築済みシステムのデータベーステーブルの存在もあるので、 あくまで、モデル中心にして必要なデータを既存テーブルから拾ってくるというような考え方にしておきます。 その意味では、既存データベースに無い物はモデルとして成立させられないわけですが。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/154
155: デフォルトの名無しさん [] 2020/02/13(木) 15:23:21.01 ID:6VutC31N 53 恋する名無しさん 2018/12/15(土) 21:15:59.13 ID:Ai0sRA6M0 人様の家に放火する虫ケラ小宇根信博俊興マンコ顔ヤクザが偉そうなカオして長田高校におるわ 信博の眼球にアイスピック突き刺す ゲロ小宇根 兵庫県教育委員会兵庫県立長田高校小宇根化学痴漢殺人放火魔仮面教師俊興信博エタ部落未逮捕、 兵庫県警ブラックリスト長田高校殺人教師小宇根信博放火殺人化学教師息子俊興二重人格兵庫県教育委員会小宇根信博長田高校の便所で毎日 うんこブリブリ親父家で俊興に便所占領されてカムリ白車で毎朝長田高校まで朝のウンコしに行く汚な顔仮面視強姦エロアニメ大量購入下三条町2-9 小宇根痴漢変態仮面ムッツリスケベブス汚な顔面放火焼け爛れゴキブリ顔信博殺人犯未逮捕女子高生レイプマニア怖い俊興ストーカー信博化学教師 兵庫県教育委員会長田高校長の家火葬場小宇根放火ストーカー魔に焼殺人された哀れ性暴力反社会人格障害教師にタンマリ給料やりステーキ食べ させ放題放火すき焼き食べさせ放題兵庫県教育委員会長田高校長宅残虐家族全員焼け爛れ顔の長田高校長の家族全員焼死体無惨な長田高校全焼 兵庫県教育委員会は小宇根放火ストーカーに燃やされ全焼兵庫県教育委員会全員火の海俊興ストーカーに燃やされ小宇根放火焼殺魔精神異常家系 http://mevius.5ch.net/test/read.cgi/tech/1508841546/155
156: デフォルトの名無しさん [sage] 2020/02/13(木) 18:03:52.96 ID:r7bSHOfr >>152 クラスベースかどうかの違いはあまり関係ないんじゃないかな ドメインモデルをコードに落としやすいかどうかは型の表現力によると思う Sum Typeを作りやすいかどうかや value object用のimmutableオブジェクトを作りやすいかどうかみたいな部分 RustやSwiftのenumだったりKotlinのdata classみたいなやつ http://mevius.5ch.net/test/read.cgi/tech/1508841546/156
157: デフォルトの名無しさん [sage] 2020/02/16(日) 13:43:23.03 ID:Xiaae5hS ドメインモデル的にDBは検索可能なファイルフォーマットみたいな考え。 PDFやPSDファイルを考えるとわかりやすい。ファイルから読み出すとドメインモデルになる。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/157
158: デフォルトの名無しさん [sage] 2020/02/18(火) 21:40:17.43 ID:2AC9Ct1n それだとormはどういう位置付けになるん? http://mevius.5ch.net/test/read.cgi/tech/1508841546/158
159: デフォルトの名無しさん [sage] 2020/02/19(水) 00:06:44.71 ID:i9qIzFMe >>158 Repositoryじゃね? http://mevius.5ch.net/test/read.cgi/tech/1508841546/159
160: デフォルトの名無しさん [sage] 2020/02/19(水) 00:14:21.11 ID:pJACNDga 性能で行き詰まった時に普通に破綻しそうなんだが。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/160
161: デフォルトの名無しさん [sage] 2020/02/19(水) 01:31:27.23 ID:i9qIzFMe 性能で行き詰まったら、金の弾丸ブチ込めってばっちゃが言ってた http://mevius.5ch.net/test/read.cgi/tech/1508841546/161
162: デフォルトの名無しさん [] 2020/02/20(木) 22:05:54.44 ID:ABNkvVkH 未だにファクトリーだけメリットがわかりません newとなにが違うんですか? http://mevius.5ch.net/test/read.cgi/tech/1508841546/162
163: デフォルトの名無しさん [sage] 2020/02/20(木) 23:00:47.67 ID:Nllb9nDe >>162 引数によって継承したクラスを選択して返す様に設計できる。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/163
164: デフォルトの名無しさん [sage] 2020/03/05(木) 22:14:17.50 ID:h922Dn8C >>152 オブジェクト指向言語の方が DDDに基本的に向いていると思う OO以外でももちろん可能だけど ドメインの表現はOOが一番やりやすい JavaやC# RubyやPythonも http://mevius.5ch.net/test/read.cgi/tech/1508841546/164
165: デフォルトの名無しさん [sage] 2020/03/05(木) 22:20:29.48 ID:h922Dn8C >>162 DDDというかデザインパターンの話だけど ファクトリ(系パターン)を使うのは インスタンスの生成が複雑な時 たとえばAとBのインスタンスを常にペアで使いたいとか いろんな条件でnewする部分が肥大化していくようなら 毎回書くよりファクトリパターン使う方がスマートでしょ? http://mevius.5ch.net/test/read.cgi/tech/1508841546/165
166: デフォルトの名無しさん [] 2020/03/08(日) 23:30:12.89 ID:4J5clray そうかなあ…一番DDDやりやすいのは関数型言語だと思う ドメイン設計って、 •あるデータはどんなデータがANDないしORで組み合わさって出来てるのか •業務プロセスはそれらのデータをどのように変換していくのか の2点が主だと思ってるけど、 これらは代数的データ型とパターンマッチによってダイレクトに表現できて、 業務プロセスは関数の連続で簡潔に表現できる。 また純粋なビジネスロジックは作用のない関数によって表現され、 ビジネスロジック以外の部分が作用を持つ関数になるはずで、 作用のある無しを型レベルで区別する純粋関数型言語であれば、 その辺の層分けもすごく自然 むしろ別れざるをえない http://mevius.5ch.net/test/read.cgi/tech/1508841546/166
167: デフォルトの名無しさん [sage] 2020/03/08(日) 23:55:07.82 ID:2h+/wurX 作用? http://mevius.5ch.net/test/read.cgi/tech/1508841546/167
168: デフォルトの名無しさん [sage] 2020/03/09(月) 21:19:31.81 ID:bHKN7jy6 左様でござる http://mevius.5ch.net/test/read.cgi/tech/1508841546/168
169: デフォルトの名無しさん [sage] 2020/03/09(月) 22:12:07.02 ID:ajCpPJPb Webみたいにステートレスで済むなら 関数型の方が簡潔に書ける部分もあるが ビジネスロジックは複雑な状態遷移や 階層構造を持っていることが多いので FPでもDDDはできるが OOの方が向くことが多い http://mevius.5ch.net/test/read.cgi/tech/1508841546/169
170: デフォルトの名無しさん [sage] 2020/03/09(月) 22:18:06.74 ID:aVP5r6mu 階層構造を持ってるからOOの方が向いてるってのはよくわからないな http://mevius.5ch.net/test/read.cgi/tech/1508841546/170
171: デフォルトの名無しさん [] 2020/03/09(月) 23:12:50.10 ID:y1num/wG ?複雑な状態遷移があるとFPが向かないっていうのもよくわからないな 状態の数だけ型作って、遷移の数だけ関数つくればいいだけやん OOPはむやみにクラス内に隠れた状態や依存を作って他のクラスとうまく合成されない物を作りがち そんなことしてると、非同期な処理を並列化とかしようにも気にしないといけないことが増えて大変な労力だろうに http://mevius.5ch.net/test/read.cgi/tech/1508841546/171
172: デフォルトの名無しさん [sage] 2020/03/14(土) 17:55:44.71 ID:JKHuUiBu >>171 言いたいことはわかるが、websocketみたいなコネクション管理するものを まるまる関数型で書くなら状態変化を含んだとしてもオブジェクト的に記述した方が 多分楽。 なんでもどっちかに倒そうとすること自体が悪パターンな気がするよ。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/172
173: デフォルトの名無しさん [sage] 2020/03/14(土) 18:05:14.78 ID:ZFQFhT9Y 良いとこ取りしていけ http://mevius.5ch.net/test/read.cgi/tech/1508841546/173
174: デフォルトの名無しさん [] 2020/03/15(日) 00:23:36.09 ID:UpO1XTWv >>172 WebSocketかー。やったことないからやってみよう http://mevius.5ch.net/test/read.cgi/tech/1508841546/174
175: 169 [sage] 2020/03/15(日) 05:56:57.78 ID:1/DFOu+E >>170 継承や委譲で階層構造を表現できる まあメジャー言語はたいてい OOのパラダイム入ってるから だいたいできるんだけど >>171 >状態の数だけ型作って >遷移の数だけ関数つくればいいだけ 実際にはゴチャゴチャになって 「大変な労力」だから 関数型が言うほど採用されないんだよ ただ非同期で並列化が必要な場合とか ミッションクリティカルな場合で バグを極力出したくない場合は別の話 http://mevius.5ch.net/test/read.cgi/tech/1508841546/175
176: デフォルトの名無しさん [] 2020/03/15(日) 08:25:11.78 ID:j83nFY2E >>175 あんたに限らず関数型が大規模なプログラム書くのに向かないと思ってる層がちゃんと関数型プログラミングをしたことがなく先入観でもの言ってるのはよくわかった http://mevius.5ch.net/test/read.cgi/tech/1508841546/176
177: デフォルトの名無しさん [sage] 2020/03/15(日) 08:38:54.73 ID:1/DFOu+E >>176 あんたも決めつけで言ってるだけだろ 関数型で状態遷移を把握しづらいのは 強く実感しているし普及しない原因だ http://mevius.5ch.net/test/read.cgi/tech/1508841546/177
178: デフォルトの名無しさん [] 2020/03/15(日) 09:21:24.78 ID:UpO1XTWv >>177 それはどの言語でどんなことしようとして「強く実感」したの? 関数型言語が普及しないのは、単に先入観やOOP神話の影響で学ぼう使おうと思う人が少ないからだよ。 関数型プログラミングが普及しない理由は、当然だが関数型プログラミングの諸概念を表現するのに命令型言語が不向きだから。柔道着着て水泳するようなもんだ。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/178
179: デフォルトの名無しさん [sage] 2020/03/15(日) 14:50:21.29 ID:7lggs81n >>175 >継承や委譲で階層構造を表現できる OOでは継承や委譲で階層構造を表現できると言われても 関数型の言語よりOO言語のほうがDDDには向いてるという論拠にはならないよ 少し古いスライドだけど、これ見て概要だけでも勉強して https://www.slideshare.net/ScottWlaschin/domain-driven-design-with-the-f-type-system-functional-londoners-2014 http://mevius.5ch.net/test/read.cgi/tech/1508841546/179
180: デフォルトの名無しさん [sage] 2020/03/15(日) 18:32:23.77 ID:XbDoNvCk 一昔前のOOP厨と一緒だな。 歴史を学ばん奴は一生ループする。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/180
181: デフォルトの名無しさん [sage] 2020/03/15(日) 23:47:43.93 ID:zobMuC0O >>179 そうだよなと得心する事が多くて良い資料ですね ドメインに継承や移譲が要るって考えてる人は是非とも読んで欲しいし、反例を挙げて欲しくなる http://mevius.5ch.net/test/read.cgi/tech/1508841546/181
182: デフォルトの名無しさん [] 2020/03/16(月) 00:15:47.56 ID:PIKXUqlC >>179 俺もこのスライドの作成者の本で関数型DDDに入門したクチだけど、本当にわかりやすかった もともとHaskell, purescriptはやってて関数型には慣れてたけど、 DDDについては知らなかったので、せっかくだから関数型前提で書かれている本でと手にした。 Domain modeling made functional っていう本で、 DDDの解説はもちろん、関数型プログラミングの諸概念の解説もわかりやすく、 一冊で二度美味しい内容で、実用的な関数型プログラミングの入門書としても超おすすめ。 https://youtu.be/dEKvIxsERAI ちなみにyoutubeにはこのスライドの発表動画もあったりする http://mevius.5ch.net/test/read.cgi/tech/1508841546/182
183: デフォルトの名無しさん [sage] 2020/09/16(水) 23:15:57.30 ID:hC0if/qX Matthias Felleisenの「How to Design Programs」を読んで関数型プログラミングに 興味を持ったものです。 次にモナドを勉強しようとしてHaskellの本を読んだがいまいちピンときません。 >>182さんが挙げられている本では、モナドを使ってモデルの実装をしているようですが、 モナドの使い方は理解できますか? http://mevius.5ch.net/test/read.cgi/tech/1508841546/183
184: デフォルトの名無しさん [sage] 2020/09/17(木) 01:01:40.98 ID:m/PpcUvw Scalaで良ければ、manning.comからでてる Functional and Reactive Domain Modeling にモナドでドメインサービス組み立てる話が掲載されてる。 なおFree Monadをベースとしているので軽く死ねる。 https://www.manning.com/books/functional-and-reactive-domain-modeling http://mevius.5ch.net/test/read.cgi/tech/1508841546/184
185: 183 [sage] 2020/09/17(木) 23:32:13.91 ID:pIiN+iyt >>184 ありがとうございます・・・でもDomain modeling made functional をPDFでポチっちゃいました。 後で読もうと思います。 ところでDDDを学ぶ上で、大規模な開発経験が必要なんでしょうか? 自分は学生で、そのような経験がありません。 『How to Design Programs』では小さなプログラム作成の演習はありましたが、 それ以上の大きさのプログラム作成の方法はありませんでした。 DDDは大きなプログラムをつくるガイドになりますか? http://mevius.5ch.net/test/read.cgi/tech/1508841546/185
186: デフォルトの名無しさん [sage] 2020/09/22(火) 23:49:46.08 ID:mxGu0eGU >>184 これ http://mevius.5ch.net/test/read.cgi/tech/1508841546/186
187: デフォルトの名無しさん [sage] 2020/09/23(水) 00:07:54.77 ID:NN2kaL4Y >>184 これ読んでみようかと思ったら >読者は関数型言語とドメイン駆動設計に慣れている必要がある とあるんだが、読むのにドメイン駆動設計の深ーい知識は必要だった? http://mevius.5ch.net/test/read.cgi/tech/1508841546/187
188: デフォルトの名無しさん [] 2020/09/23(水) 06:16:40.99 ID:VKAwJeUe DDD興味ある 大いに語るがよい http://mevius.5ch.net/test/read.cgi/tech/1508841546/188
189: デフォルトの名無しさん [sage] 2020/09/23(水) 07:12:30.61 ID:SbRHy3fQ >>187 必要最小限ではあるがScalaの文法解説と、各ドメインオブジェクトの解説は入っていたはず。 知っていれば理解が進みやすいくらいに考えてればいいはず。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/189
190: デフォルトの名無しさん [sage] 2020/09/23(水) 19:36:49.05 ID:4eJQ0d8P >>189 thx http://mevius.5ch.net/test/read.cgi/tech/1508841546/190
191: デフォルトの名無しさん [sage] 2020/09/30(水) 19:59:30.09 ID:0r1wHLnO DDDもそろそろバージョンアップせんと OOPは時代遅れ http://mevius.5ch.net/test/read.cgi/tech/1508841546/191
192: デフォルトの名無しさん [] 2020/12/02(水) 20:38:28.14 ID:E6FeESB6 Freeモナドなんて言語埋め込みDSLを作るってだけ http://mevius.5ch.net/test/read.cgi/tech/1508841546/192
193: デフォルトの名無しさん [sage] 2020/12/05(土) 00:03:20.35 ID:FFFEgOY+ DDDいいよね! なんちゃってOOPから脱出する際に役立ったよ http://mevius.5ch.net/test/read.cgi/tech/1508841546/193
194: デフォルトの名無しさん [sage] 2021/03/31(水) 07:17:34.67 ID:PqSCUqXE DDD、CQRS、イベントソーシング… 企業内システムでここまでやってるとこってあるんだろうか 参照系中心のシステムでDDDやるのは愚行? http://mevius.5ch.net/test/read.cgi/tech/1508841546/194
195: デフォルトの名無しさん [sage] 2021/05/18(火) 06:36:21.05 ID:Z0RWJbQc おれはさとった 名前がちがうだけのValueObjectクラスだけつくって メソッド引数の位置を間違えられないようにしときゃいいんだ それだけでいいんだ バリデーションは入り口でやる 中は値が正しい前提でまったくチェック不要 それがDDD http://mevius.5ch.net/test/read.cgi/tech/1508841546/195
196: デフォルトの名無しさん [sage] 2021/05/19(水) 20:38:26.97 ID:NeVz061v それだけでDDDは語れないような… いまだに集約がわからんよ http://mevius.5ch.net/test/read.cgi/tech/1508841546/196
197: デフォルトの名無しさん [sage] 2021/05/23(日) 21:05:34.48 ID:hHIInayx 教科書が概念的でよくわからんことばっかほざいてる時点でおかしい サンプルを一発提示すればああこんなのねって それで終わるだろ!? http://mevius.5ch.net/test/read.cgi/tech/1508841546/197
198: デフォルトの名無しさん [] 2021/07/13(火) 00:57:28.25 ID:FnRTq1rf ガサッと取ってきて変更して全部更新!ってアホなんって思った これの何がいいの? http://mevius.5ch.net/test/read.cgi/tech/1508841546/198
199: デフォルトの名無しさん [sage] 2021/07/13(火) 22:24:26.83 ID:fj1E0qkc CRUD で十分な単純なアプリならいらない http://mevius.5ch.net/test/read.cgi/tech/1508841546/199
200: デフォルトの名無しさん [sage] 2021/07/14(水) 08:14:14.87 ID:wgyTk/up >>197 2003年頃ならともかく。OSSのアプリが溢れている今の状況ならこのアプリのこの部分はこのパターンを使っているって示せると思う。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/200
201: デフォルトの名無しさん [sage] 2021/08/10(火) 20:46:36.95 ID:R7L3+gXm >>191 亀レスだが、OOPを補完するのがDDDだろうに なんでDDDスレでOOPが時代遅れだと言えるのか疑問 http://mevius.5ch.net/test/read.cgi/tech/1508841546/201
202: デフォルトの名無しさん [sage] 2021/08/10(火) 23:57:50.00 ID:yd00h36W >>201 OOPより上位レイヤーの概念なのでOOPを補完するものではないよ Eric Evansの最初の本ではDDDの実装例としてOOPが使われただけ 関数型で実装する例もある http://mevius.5ch.net/test/read.cgi/tech/1508841546/202
203: デフォルトの名無しさん [sage] 2021/08/11(水) 22:58:43.10 ID:AUz9CV9O >>202 > OOPより上位レイヤーの概念なので > Eric Evansの最初の本ではDDDの実装例としてOOPが使われた そういうのを補完って言うのでは? http://mevius.5ch.net/test/read.cgi/tech/1508841546/203
204: デフォルトの名無しさん [] 2021/08/12(木) 23:34:58.79 ID:1njm/kBk >>203 お前は国語から勉強し直さないとこの先辛いぞ? お前は概念とか言ってる場合じゃない http://mevius.5ch.net/test/read.cgi/tech/1508841546/204
205: デフォルトの名無しさん [sage] 2021/08/13(金) 08:38:17.53 ID:yFah4eQP ほかん 【補完】 《名・ス他》 足りない点を補って完全にすること。 OOPに足りない部分をDDDで補ってるって言いたかったのでは? 別に変だとは思えないけど http://mevius.5ch.net/test/read.cgi/tech/1508841546/205
206: デフォルトの名無しさん [sage] 2021/08/13(金) 09:30:37.30 ID:4chv34Gy OOPを補完するのがプログラミングだろうに なんでプログラミングスレでOOPが時代遅れだと言えるのか疑問 OOPに足りない部分をプログラミングで補ってるって言いたかったのでは? http://mevius.5ch.net/test/read.cgi/tech/1508841546/206
207: デフォルトの名無しさん [sage] 2021/08/13(金) 11:25:44.59 ID:klCtaRRF OOPはプログラミングを補うものでありプログラミングがOOPを補う訳ではない http://mevius.5ch.net/test/read.cgi/tech/1508841546/207
208: デフォルトの名無しさん [] 2021/08/13(金) 11:56:11.61 ID:VPbn/mvQ >>205 補完などではない そもそもOOPなどと書くから話がおかしくなる DDDはOODを包含した概念である http://mevius.5ch.net/test/read.cgi/tech/1508841546/208
209: デフォルトの名無しさん [sage] 2021/08/13(金) 13:49:07.82 ID:iLxHQIIJ OODと言い換えたところで補完もしてなければ包含もしてない DDDをOOの文脈でしか理解できない人は抽象概念の理解がもともと不得意なのか 日本人の書いたなんちゃってDDD本で分かったつもりになってるか そもそもOO以外を知らないか http://mevius.5ch.net/test/read.cgi/tech/1508841546/209
210: デフォルトの名無しさん [sage] 2021/08/13(金) 14:28:21.12 ID:klCtaRRF お前はDDDを学んでもOOP及びOODには何の影響もないみたいだけど、俺は別にDDDで学んだ知識がOOP/OODに役立ってるので、別にどうでもいいっす。 なんで役立ったのか想像できないのなら、その程度ってことでしょう。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/210
211: デフォルトの名無しさん [sage] 2021/08/13(金) 15:21:02.98 ID:cdK9y9f/ ブホッw http://mevius.5ch.net/test/read.cgi/tech/1508841546/211
212: デフォルトの名無しさん [sage] 2021/08/14(土) 07:58:11.46 ID:3YTtOTVG OOPにありがちな、車やエンジンを例にした説明より DDDの方がしっくりくるというか あ、OOPでこんなことができるのかと目から鱗だったな http://mevius.5ch.net/test/read.cgi/tech/1508841546/212
213: デフォルトの名無しさん [] 2021/08/14(土) 15:27:00.83 ID:db9EEEoY いつの時代になってもITの方法論は「方法論オナニストに都合のよい飯の種」の域を出ない http://mevius.5ch.net/test/read.cgi/tech/1508841546/213
214: デフォルトの名無しさん [sage] 2021/08/14(土) 15:31:45.91 ID:4CNv29yk 建設業のように国が規格を決めてしまえばよかったんだ 国所属の認定団体に承認された関数以外使ってはいけません http://mevius.5ch.net/test/read.cgi/tech/1508841546/214
215: デフォルトの名無しさん [sage] 2021/09/16(木) 15:51:11.37 ID:PMPdG/+a DDDとは、「ドメイン知識(モデル)」を「駆動」して「開発」する開発手法であって、何か特定のアーキテクチャをあらわすものではない http://mevius.5ch.net/test/read.cgi/tech/1508841546/215
216: デフォルトの名無しさん [sage] 2021/09/16(木) 15:54:48.85 ID:PMPdG/+a 嘘言いました 最後のDはDevelopmentじゃなくてDesignだったわ 恥ずかしー http://mevius.5ch.net/test/read.cgi/tech/1508841546/216
217: デフォルトの名無しさん [sage] 2021/09/16(木) 19:58:10.14 ID:d3wmnSJn もーやだー http://mevius.5ch.net/test/read.cgi/tech/1508841546/217
218: デフォルトの名無しさん [] 2021/09/26(日) 11:30:18.78 ID:0AJzxi3v 設計はアーキテクチャを示すものじゃない 言葉が違えば意味が違う http://mevius.5ch.net/test/read.cgi/tech/1508841546/218
219: デフォルトの名無しさん [sage] 2022/05/07(土) 06:20:48.85 ID:Japg54lQ DDDは大量データ更新に弱い 10万件のレコードに同じ値をセットする処理に途方もなく時間がかかる http://mevius.5ch.net/test/read.cgi/tech/1508841546/219
220: デフォルトの名無しさん [] 2022/07/27(水) 17:37:37.82 ID:hi2YYXJ0 カルト宗教だよね 設計というのはパフォーマンス要件の整理と実現に当たってのアーキテクチャを考えるために必要なわけで 機能要件にSLAがないだなんてことは設計するならばありえないし、 じゃあその要件に到達するためにシステムやミドルウェアをどう使っていくかがアーキテクトの肝なところじゃん APPサーバに閉じた議論しかしてない時点で雑魚システムしか作れんし 雑魚システムにそもそも設計なんざいらんだろって話よ こういう連中が言い出しそうなこと、DBは抽象化できる そもそもファイルを保存するならテキストでもいい 依存性の逆転を駆使すればインタフェースに依存させることができるので、アプリから実装詳細が消える! それでDBがやってくれてるトランザクション制御や成約、整合性の解決を ファイルシステムで実装するその実装を誰が書くの? アーキテクトを自称するなら君が書くってことだけど、いったい誰がそんなこと頼んだんだろう http://mevius.5ch.net/test/read.cgi/tech/1508841546/220
221: デフォルトの名無しさん [] 2022/07/27(水) 17:39:26.99 ID:hi2YYXJ0 型システムの理解も貧弱、DBMSの理解も貧弱、なんならネットワーク・プロトコルの理解も貧弱 一生システム完成させる気ないやる気なしエンジニアの最後の拠り所だろ http://mevius.5ch.net/test/read.cgi/tech/1508841546/221
222: デフォルトの名無しさん [sage] 2022/07/27(水) 20:57:03.92 ID:i1UDtnj5 だいぶ詳しい反論だなw http://mevius.5ch.net/test/read.cgi/tech/1508841546/222
223: デフォルトの名無しさん [sage] 2022/07/27(水) 21:51:14.18 ID:gDp6GlMI https://enterprisecraftsmanship.com/posts/ddd-bulk-operations/ DDDでバルク処理 そこまで拘らなくていいんじゃないかなと言う感想 http://mevius.5ch.net/test/read.cgi/tech/1508841546/223
224: デフォルトの名無しさん [sage] 2023/09/22(金) 05:22:44.35 ID:dV2V1da1 これってどうやって気にするの? http://mevius.5ch.net/test/read.cgi/tech/1508841546/224
225: デフォルトの名無しさん [sage] 2023/09/28(木) 03:45:15.07 ID:i8VmgZE9 ゴシゴシ(-_\)(/_-)三( ゚Д゚) ス、スゲー! http://mevius.5ch.net/test/read.cgi/tech/1508841546/225
226: デフォルトの名無しさん [sage] 2023/12/03(日) 23:52:03.41 ID:p5/cY/Es テスト http://mevius.5ch.net/test/read.cgi/tech/1508841546/226
227: デフォルトの名無しさん [] 2024/12/06(金) 22:29:28.26 ID:IVgCNi6x 関数型DDDの本の作者のアーキテクチャが話題になっている Repositoryはいらない 大事なのはIOをロジックの中から排除せよということらしい 以下のように"端に寄せる" IO ビジネスロジック IO 目から鱗だった IOへの依存をなくすことでテストしやすくなるしモックもいらない http://mevius.5ch.net/test/read.cgi/tech/1508841546/227
228: デフォルトの名無しさん [] 2024/12/07(土) 18:42:46.99 ID:cdxtdz0L ビジネスロジックはパイプラインで構築して副作用がないようにする http://mevius.5ch.net/test/read.cgi/tech/1508841546/228
229: デフォルトの名無しさん [] 2024/12/08(日) 00:14:30.46 ID:fPMU02oZ DDDは素晴らしいと思うけど、プロジェクト内の他エンジニアのスキルが低いとアンチパターンになるんだよな http://mevius.5ch.net/test/read.cgi/tech/1508841546/229
230: デフォルトの名無しさん [sage] 2024/12/08(日) 14:38:22.52 ID:5KF429T4 DDDって再現性ないじゃんw 偽科学 http://mevius.5ch.net/test/read.cgi/tech/1508841546/230
231: デフォルトの名無しさん [] 2024/12/08(日) 15:54:58.48 ID:yVSjHkLG 設計に再現性はないよ 要件が全く同じということがないから だから難しい http://mevius.5ch.net/test/read.cgi/tech/1508841546/231
232: デフォルトの名無しさん [sage] 2024/12/08(日) 15:56:35.36 ID:yVSjHkLG IOを"端に寄せて"ビジネスロジックはパイプラインで実行して不変データ構造にするというアイデアマジで凄い これからこの設計にする http://mevius.5ch.net/test/read.cgi/tech/1508841546/232
233: デフォルトの名無しさん [sage] 2024/12/08(日) 19:27:00.60 ID:xllqP0wk そのぶんリソースバカ食いのクソアプリの出来上がり http://mevius.5ch.net/test/read.cgi/tech/1508841546/233
234: デフォルトの名無しさん [sage] 2024/12/09(月) 00:32:52.38 ID:+1IlmX9/ 根っこに流れる考えは、コマンドラインシェルでコマンドをパイプで繋いでいくことと同じだけどね。 一連のワークフローを一つのコマンドとみなして、さらに大きなワークフローに組み込むところとかもね。 http://mevius.5ch.net/test/read.cgi/tech/1508841546/234
235: デフォルトの名無しさん [] 2024/12/19(木) 14:37:51.32 ID:fGxiJNMh F#で遊んだ時シェルのパイプじゃんとは思ってた 関数型言語の原点てシェルスクリプトなんか? http://mevius.5ch.net/test/read.cgi/tech/1508841546/235
236: デフォルトの名無しさん [sage] 2024/12/20(金) 12:36:38.38 ID:xSkBLBiw >>233 そこで遅延評価ですよ http://mevius.5ch.net/test/read.cgi/tech/1508841546/236
237: デフォルトの名無しさん [sage] 2024/12/20(金) 13:57:42.11 ID:UU1VM3lj >>236 やってから言え 遅延評価こそリソースバカ食いだ http://mevius.5ch.net/test/read.cgi/tech/1508841546/237
238: デフォルトの名無しさん [sage] 2024/12/20(金) 18:04:51.42 ID:eZ4ILWvg >>237 今の時代リソースなど死ぬほどあるのだよ 自作でサーバー組み立てる場合でもメモリ64Gなんて普通だし http://mevius.5ch.net/test/read.cgi/tech/1508841546/238
239: デフォルトの名無しさん [sage] 2024/12/20(金) 18:26:08.17 ID:zuM8e09I >>238 それはお前の作ってるものがしょぼいからだよ http://mevius.5ch.net/test/read.cgi/tech/1508841546/239
240: デフォルトの名無しさん [sage] 2024/12/20(金) 18:34:22.69 ID:zuM8e09I クラウドはリソース使えば使うだけ課金 http://mevius.5ch.net/test/read.cgi/tech/1508841546/240
241: デフォルトの名無しさん [sage] 2024/12/20(金) 19:25:56.31 ID:Sq/wbvsq 遅延評価がリソース食うっていつの時代よ? むしろ今は遅延評価しないとリソースをバカ喰いする時代だぞ キャッシュと勘違いしてない? ディープラーニングとか全部遅延評価だ それこそ>>239の作ってるものがしょぼいという証明になったな http://mevius.5ch.net/test/read.cgi/tech/1508841546/241
242: デフォルトの名無しさん [sage] 2024/12/20(金) 19:31:24.56 ID:eZ4ILWvg >>241 多分Haskellの遅延評価のことを言ってるのでは? メモリをドカ食いすると聞いたことがある しかしそれは言語のインプリメンテーションやデータ構造の問題であり 一般的な遅延評価がメモリをくうわけではないのよな http://mevius.5ch.net/test/read.cgi/tech/1508841546/242
243: デフォルトの名無しさん [sage] 2024/12/20(金) 20:48:35.33 ID:zuM8e09I >>241 だからやってから言えって Haskellの不評のひとつが遅延評価だ http://mevius.5ch.net/test/read.cgi/tech/1508841546/243
244: デフォルトの名無しさん [sage] 2024/12/20(金) 21:17:48.55 ID:Sq/wbvsq Haskell使いは大変でちゅね〜 http://mevius.5ch.net/test/read.cgi/tech/1508841546/244
245: デフォルトの名無しさん [sage] 2024/12/20(金) 22:16:28.31 ID:L0BexGzI 遅延評価だからリソースバカ喰いするわけじゃないのにね バカは因果関係がわからないからな http://mevius.5ch.net/test/read.cgi/tech/1508841546/245
246: デフォルトの名無しさん [sage] 2024/12/20(金) 22:30:04.43 ID:Sq/wbvsq Haskellしか書いてないんじゃないの? 知らんけど http://mevius.5ch.net/test/read.cgi/tech/1508841546/246
247: デフォルトの名無しさん [sage] 2024/12/21(土) 17:16:28.03 ID:unOGov3F ひぐちデブすぎんか? http://mevius.5ch.net/test/read.cgi/tech/1508841546/247
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s