タグ

dddに関するmakotot-riceballのブックマーク (44)

  • DDDにおける値オブジェクトの位置付け(モデルとコード事例あり)[ドメイン駆動設計] - little hands' lab

    株式会社ログラスの松岡(@little_hand_s)です。 最近、値オブジェクトに関して書かれているブログ記事を見ますが、 SNSなどにおいてDDDにおける値オブジェクトについて誤解されているような反応が見受けられました。 そこで、この記事では「DDDにおける値オブジェクトの位置付け」について解説し、具体的なモデル・コードを用いながら誤解を解いていきたいと思います。 なお、値オブジェクトに関する詳細な説明はここでは行いませんのでご了承下さい。 DDDの目的 まず最初に、DDDの目的について確認します。 DDDの目的は、モデリングを通じてソフトウェアの価値を大きくすることです。 これに関しては、こちらの記事で詳細に解説しているのでこちらをご覧ください。 ドメイン駆動設計は何を解決しようとしているのか - little hands' lab ここで大切なのは、モデルは一回のモデリングで完成形

    DDDにおける値オブジェクトの位置付け(モデルとコード事例あり)[ドメイン駆動設計] - little hands' lab
  • #fukabori をきいて Value Object と Value Object パターンについて頭の中を整理 - Mitsuyuki.Shiiba

    連休の余韻も楽しんだので今日から散歩を再開した。ちょっと前までは「陽の光を浴びなきゃ!」と思って3時過ぎにウロウロしてたけど、これからはもうちょっと涼しい時間帯がいいなと思って、夕暮れ時に散歩しながら fukabori.fm を聴いてた。Value Object のお話。面白いなぁ 73. Value Object w/ kumagi | fukabori.fm kumagi さんの記事はこちら Value Objectについて整理しよう - Software Transactional Memo お絵描き PoEAA や DDD はだいぶ前に読んだことがあるけど、Value Object を雰囲気で捉えてるからちゃんと見直しておこうと思って、調べたりしながら絵を描いた。こういうことなのかな? (絵をかくほどでもなかった・・・ Value Object とは? kumagi さんも書いてる

    #fukabori をきいて Value Object と Value Object パターンについて頭の中を整理 - Mitsuyuki.Shiiba
  • ドメイン固有型(値オブジェクト含む)を再考する - かとじゅんの技術日誌

    Value Objectが盛り上がっているらしい。 Value Objectについて整理しよう - Software Transactional Memo Value Objectの説明に異論がないものの、主題はValue Object Obsessionのほうですよね。 こちらも聞いてみた。 fukabori.fm よい機会なので、よくわかっているつもりの、値オブジェクトというかドメイン固有型について再考してみよう。 それは値か属性か それはエンティティの全メンバーやデータベースの全列のために「顧客郵便番号」「送付先郵便番号」「事業所郵便番号」「契約日」などのクラス(メンバではなくクラス!)を定義して、immutableな振る舞いを強制する事を以てValue Objectであると言い張り、ドメイン知識の断片をそれぞれのクラスに書き散らして「高凝集になった」「型システムが守ってくれる」と喜

    ドメイン固有型(値オブジェクト含む)を再考する - かとじゅんの技術日誌
  • Value Objectについて整理しよう - Software Transactional Memo

    Value Objectとは何であるか? マーチン・ファウラーのPatterns of Enterprise Application Architecture(PofEAA)やエヴァンス・エリックのDomain Driven Design: Tackling Complexity in the Heart of Software(DDD)が原典であるが、PofEAAではこう切り出している。 When programming, I often find it's useful to represent things as a compound. プログラミング時は物をcompound(合成物)として表現すると便利なことがしばしばある。 例えば2次元空間上での座標のように複数のメンバ(属性)を持つ物は便利である、と。しかしそれらを比較する方法は一意ではない、そこで Objects that a

    Value Objectについて整理しよう - Software Transactional Memo
  • イベントストーミング導入

    コラボレーションの必要性 アジャイル的な観点で考えると、人と人とのコラボレーションという非常に価値のあるプロセスである。様々な専門性や視点を持った人がある課題に対して各々の知識を集結させて、解決策や新しい視点・課題の発見につながる大きなメリットがある。有名なあるアフリカのことわざで「早く行きたければ一人で進め、遠くまで行きたければ皆で進め」というものがあり、これはコラボレーションの重要性を説いているのだと思う。 私が働いているソフトウェアの会社然り不確実性が高い業界や市場などで何かしらの成果を出す場合は、コラボレーションを適切に行うことで大きな結果を生むことができると考えられている。 しかし、実際は各々のコラボレーションは結構難しいのが一般的だと思う。自分の専門としない分野とのコラボレーションは未知への恐怖・防御反応や心理的安全性が少ないことからコラボレーションがしにくいなど様々な障害が存

    イベントストーミング導入
  • bliki: Bounded Context

    Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models of the underlying domain. A model acts as a UbiquitousLa

    bliki: Bounded Context
  • Redux and Doman-Driven Design

  • 実はDDDってしっくりこないんです - タオルケット体操

    DDD失敗パターン集 DDDという方法論それ自体に対する僕の立場はあんま好きじゃない寄りのフラット(といいつつほぼ忘れかけている)なんですが、過去何度もDDDでプロジェクトが爆死するのをみたり、爆破してしまったり……というのを見てきたので供養したいとおもいます。 メンバーの大半がDDDを知らない 「えっ!? ドメイン駆動を知らずにDDDを?」 「出来らぁっ!」 DDDを知らずにDDDをする、という前提がすでに禅問答じみてる気がしますが、たぶん一番よく見かける失敗パターンなんじゃあないでしょうか。 どういうことかというと、オニオンとかレイヤードとかクリーンなアーキテクチャのモジュールの命名ルールと構造を採用(採用できているとは言っていない)しただけの状態です。 私見ですが、アーキテクチャというのはメンバー全員がそれを理解できていない限り*1即破綻します。 理解できない人はどこに処理を書いてい

    実はDDDってしっくりこないんです - タオルケット体操
  • IBM Dojo 挫折しないドメイン駆動設計 20210825pm

    あらゆる場面でデザインを駆使するための技術 / Techniques for Applying Design in Any Situation

    IBM Dojo 挫折しないドメイン駆動設計 20210825pm
  • 実践! Typescript で DDD - マイクロサービス設計のすすめ - Leverages Tech Blog

    対象読者 マイクロサービス化を検討しており、実際に作る場合の構成を参考にしたい。 ドメイン駆動設計について、基的な用語の知識がある。 TypeScript を多少触ったことがある。理解がある。 はじめに こんにちは。エンジニアの吉村です。 現在、弊社が運営する teratail というサービスに携わっており、CakePHP で動作しているモノリシックな既存サービスをマイクロサービスに移行するというプロジェクトを進行中です。 この記事では、実務を通して得た知見として、マイクロサービス化によりどんな恩恵があるのか、具体的にどのような構成で実装をしているのかについてご紹介します。 TL;DR マイクロサービスのバックエンドサービスの実装に焦点を絞って、ドメイン駆動設計 + オニオンアーキテクチャをベースに設計をしました。 記事では、具体的に「ユーザ新規登録処理」の実装をする場合を例にとり、実

    実践! Typescript で DDD - マイクロサービス設計のすすめ - Leverages Tech Blog
  • ドメイン駆動設計 モデリング/実装ガイド - little-hands - BOOTH

    書は、初めてDDDを学ぶ方、もしくは実際に着手して「難しい!!」と感じているエンジニアの方を対象とした、ドメイン駆動設計(以下、DDD)についての解説書です。 近年、ソフトウェアのレガシー化が社会的に問題になっていると言われています。 DDDはレガシー化への対策として非常に有用なものですが、日語で出ている書籍「エリック・エヴァンスのドメイン駆動設計」や「実践ドメイン駆動設計」は非常に重厚かつ難解で、初学者が実用に到達するまでには長い時間と試行錯誤が必要なのが実情です。 そこで書では、迷子になりがちな「DDDの目的」や「モデル」の解説からはじめ、 具体的なモデリングを行い実装まで落とす事例を元に、DDDの魅力や効果を体感することを目指します。 また、その後にはレイヤーごとの個別のトピックについて、1章ずつ詳しく解説します。 ■書の構成 書は以下の構成になっています。 「第1章 DD

    ドメイン駆動設計 モデリング/実装ガイド - little-hands - BOOTH
  • GitHub - ddd-crew/context-mapping

    Context Maps describe the contact between bounded contexts and teams with a collection of patterns. There are nine context map patterns and three different team relationships. The context map patterns describe a variety of perspectives like service provisioning, model propagation or governance aspects. This diversity of perspectives enables you to get a holistic overview of team and bounded contex

    GitHub - ddd-crew/context-mapping
  • アプリケーションをドメインモデルで設計する - Qiita

    親記事 : https://qiita.com/Regpon/items/1116679adadd8fb76f3f ドメインモデルで設計する狙い オブジェクト指向プログラミングにおいてかなり重要な内容となっているが如何せん概念的な内容となっている。ドメインモデルを設計するには幾度とない失敗の経験を重ねていき、常に改良していく精神が重要。そのための指針となる内容なので是非とも押さえておきたい。 それを踏まえてドメインモデルで設計する狙いは以下の通り。 業務的な判断・加工・計算のロジックを重複なく一元的に記述できる 業務の関心事(データ)とコードを直接対応させ、どこに何が書いてあるのかわかりやすく整理する 業務のルールの変更や追加の時に、変更の影響を狭い範囲に閉じ込める ドメインモデルの設計の難しさ ドメインモデルの設計は手続き型(スクリプト型)のプログラミングと比べて設計がむずかしいとされる

    アプリケーションをドメインモデルで設計する - Qiita
  • FluxとDDD(レイヤードアーキテクチャ)について考えてみた - embryo

    トレタ Advent Calendar 2016 - Qiita 16日目の記事になります。 フロントエンドエンジニアのすえだです。 はじめに Flux実装する上で曖昧性をできるだけ無くすために頑張る話です。 ***アーキテクチャはこうあるべきみたいな原理主義的な話はありません。あくまで参考です。 この記事で書いていること Fluxについて DDD(レイヤードアーキテクチャ)について FluxとDDDの関係性 Fluxのレイヤー化 Fluxについて 単方向に伝搬されるデータでアプリケーションの状態を表現するアーキテクチャパターンです。 CQRSとEvent Sourcingを組み合わせたような形になります。 恩恵 単方向のデータフローにより、行ったり来たりのような処理が少なく振る舞いを理解しやすい DispatcherやActionがシングルトンで表現されるので参照に悩まされづらい DDD

    FluxとDDD(レイヤードアーキテクチャ)について考えてみた - embryo
  • GitHub - little-hands/ddd-q-and-a: DDD質問箱 回答記録

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - little-hands/ddd-q-and-a: DDD質問箱 回答記録
  • 技術的負債に立ち向かう ③ロコガイドの現在地編 - ロコガイド テックブログ

    こんにちは!@ar_tamaです。「技術的負債に立ち向かう」シリーズは①実装編と②ドキュメント編で終わりの予定だったのですが、小出しにしていたロコガイドでの実践についてもまとめておこうと思い、再度筆を執りました。 今回は ③ロコガイドの現在地編 と称しまして、現在私たちがどのような課題を抱え、それをどのように乗り越えていこうとしているかをご紹介します。 ※ あくまでも2021年5月時点でのスナップショットであり、今後取られるであろう様々な舵によって着地点が大きく変わる可能性があります 課題とアプローチ ロコガイドが運営するトクバイのコードが抱える負債や課題についてはCTO前田の記事「トクバイにおけるレガシーシステム改善への取り組み」にて概説されているとおりで、意図しない密結合によるエンバグや、歴史的経緯の紐解きによりデリバリーコストがかさむといった問題がだんだんと無視できない状況となってき

    技術的負債に立ち向かう ③ロコガイドの現在地編 - ロコガイド テックブログ
  • オブジェクト指向プログラミングとドメイン駆動設計を学ぶのに適切な書籍とおすすめの読む順番 - Qiita

    オブジェクト指向プログラミングが学べる書籍たち もし私が今から最初から学ぶならこの順番でこの読むだろうという紹介です。 新人プログラマの方々は右も左も分からないというところからスタートとなるため、オブジェクト指向プログラミングを学ぶときに何から学べば良いか全くわからないという状況かと思います。 オブジェクト指向プログラミングを学んでいると自然と出会うドメイン駆動設計についても同様です。 そうした方々が書籍から学ぼうとした場合に、少しでも効率良く進められる順番を示してあげられれば良いなと思って紹介します。ただし、各書籍についての詳細な説明は書いていません(というか結構忘れててかけない)…。 なお、前提言語はJavaで言語構文にも十分詳しいことが大前提です。 以降、オブジェクト指向プログラミングはOOPと略します。 現場で役立つシステム設計の原則 OOPらしさの雰囲気がわかります 入り口に最

    オブジェクト指向プログラミングとドメイン駆動設計を学ぶのに適切な書籍とおすすめの読む順番 - Qiita
  • 【書評】ドメイン駆動設計 モデリング/実装ガイド | DevelopersIO

    はじめに コードを書いていると、途中で「このモジュールなんか長くなってきたな・・・どうしよ」「この処理ってここのモジュールに書くべきなんだっけ」等と設計的な悩みが発生することが結構あります。 チームで開発しているので、そういう場合には途中でSlackやビデオチャットで相談したり、コードレビューの段階でやりとりして解決していました。 そこで、ふと「いつも的確なコメントくれるなぁ」と思っていたメンバーがいたので、話を聞いてみると「ドメイン駆動設計」を参考にしているとのことで、読んだを教えてもらいました。それが「ドメイン駆動設計 モデリング/実装ガイド」でした。 読んでみると最初の悩みがかなりスッキリしたので、私と同じような悩みを持っている方向けにブログを書くことにしました。 の簡単な概要 初めてDDD(以下、ドメイン駆動設計)を学ぶ方や、実際に着手して「難しい」と感じているエンジニアを対象

    【書評】ドメイン駆動設計 モデリング/実装ガイド | DevelopersIO
  • クソコード動画「Userクラス」で考える技術的負債解消の観点

    2021/04/10開催 Developer eXperience Day 2021 「クソコード動画『Userクラス』で考える技術的負債解消の観点」の解説資料です。 https://dxd2021.cto-a.org/program/time-table/b-3 クソコード動画はこちら https://twitter.com/MinoDriven/status/1380773721032433674 YouTubeライブのリンクはこちら https://www.youtube.com/watch?v=ajPaGPdj6tU

    クソコード動画「Userクラス」で考える技術的負債解消の観点
  • DDD, hexagonal architecture and frontend: What is this all about?