タグ

DDDに関するj5ik2oのブックマーク (162)

  • 100日間かけてエヴァンス本を完読しました(PDF公開) - そこに仁義はあるのか(仮)

    11/25から3/4の100日間かけてエリック・エヴァンスのドメイン駆動設計を完読しました! ソフトウェア開発の複雑さに立ち向かうための方法に「ドメイン駆動設計」があります。 エリック・エヴァンスのドメイン駆動設計(以降、エヴァンス)は発売から20年・日語訳発売から10年経っても読まれていて、ドメイン駆動設計の原著であり、多くのエンジニアが名著という一冊です。 その分厚さや内容が難しそうというイメージからずっと積んだままになっていている人も多いのではないでしょうか。 エリック・エヴァンスのドメイン駆動設計 作者:Eric Evans翔泳社Amazon 私もそんな一人で、ドメイン駆動設計をなんとなく知った風に過ごしていましたが、ドメイン駆動設計に関する勉強会への参加をきっかけにエヴァンスと向き合い、知ったこと・学んだことを毎日1ページにまとめてツイートする活動を始めました。 100日間

    100日間かけてエヴァンス本を完読しました(PDF公開) - そこに仁義はあるのか(仮)
    j5ik2o
    j5ik2o 2022/03/05
  • 最近の海外DDDセミナーを聞いてみたら色々と常識が破壊された - Qiita

    TL;DR 最近の設計志向はイベント駆動がかなり中心になっている とくにDDD界隈がここまでイベント駆動一槍だとは思わなかった ストーリーを出発点にイベント駆動で設計を組み立てる「イベントストーミング」がかなり多くの場所で事例として取り上げられている はじめに 最近、洋書や動画の講演資料などいくつか海外の情報源に当たることがおおくなり、その中で「結構日でやられている取り組みとちがうなー」と考えることが多く、一旦そのあたりの差分をまとめておこうかと思いました。 ただの出羽守(あるいは鹿鳴館精神)ではなく、一つの潮流としてこんなのがあるってのを記述できればなと思います イベントが設計の基線となりつつある、、、のか? まず1つ目に驚いたのが、イベントが設計の中心になっている、そう感じる機会が多かったこと。 ここで言うイベントは、実践ドメイン駆動設計の中でも「ドメインイベント」として実装パタ

    最近の海外DDDセミナーを聞いてみたら色々と常識が破壊された - Qiita
    j5ik2o
    j5ik2o 2022/02/26
    イベントストーミングは最近注目されていますがイベントを使った設計自体は新しくないです。昔からある。ご参考→ https://speakerdeck.com/j5ik2o/domeinibentofalseguan-dian-karazai-kao-surusohutoueashe-ji
  • ドメイン駆動設計を導入するために転職して最初の3ヶ月でやったこと[DDD] - little hands' lab

    この記事は ドメイン駆動設計 Advent Calendarの記事です。 今年の9月にログラスというスタートアップに転職しました。 ログラスは元々DDDについて講師として勉強会をさせてもらっていた会社であり、DDD自体は社として取り組んでおりある程度進んでいました。ですが、講師ではなく中の人になったからこそできる色々な取り組みがあり、3ヶ月である程度形になりました。 記事では、DDDを広めるための取り組みについて、極力再現性がある形を意識しつつ、ご紹介したいと思います。 入社時の状況 なにをしたか テストの話が多い理由 実施内容詳細 TDD Boot Campの@t_wadaさんの基調講演観賞会を行った Serviceクラスを1パブリックメソッドにした レイヤーごとのオブジェクトの依存関係を整理 レイヤーごとのテスト方針 クラス名の重要性 参照実装を作成した 「責務」と「テスト」の重要性

    ドメイン駆動設計を導入するために転職して最初の3ヶ月でやったこと[DDD] - little hands' lab
    j5ik2o
    j5ik2o 2020/12/23
    設計改善の治具としてのテスト重要。他にもDDDとTDDの関連は"意図の明白なインタフェース"にある。TDDのように利用者の視点で設計を考え"意図の明白なインタフェース"を目指すことでモジュール性を高めることができる
  • ドメイン駆動設計に関する何か - 日々常々

    2020-03-13追記: 「ドメイン駆動設計」のハードルを上げる意図はありません。そもそもそんな特殊技能でもないと思っています。「ドメイン駆動設計が合っているか」を測る材料になるかも?くらいの気持ちで読んでいただけると幸いです。 何度目か知りませんがDDDがまたブームを迎えているようで。DDD難民と言う言葉が出た頃を思うと感慨深いですね。実際難民になったわけではないので肌感覚で知らないのが残念なところですが、これはどうでもいい。 DDD、日語ではドメイン駆動設計となりますが、DDDを冠していてもドメインが語られることは少ないようです。 数ある書籍もドメインモデリングの話ではなく、ドメインモデルをいかに実装に落とし込むかにフォーカスしていると感じています。 これはこれで仕方ないと言うか、ドメインの話って広く語れないんですよね。 ドメインは領域で境界があって範囲が限定されています。特定ドメ

    ドメイン駆動設計に関する何か - 日々常々
    j5ik2o
    j5ik2o 2020/03/10
    久しぶりに清い心でブクマできた
  • 設計の楽しさを伝えたい!「Mix Leap Study 特別編 レガシーをぶっつぶせ。現場でDDD!」を開催しました

    設計の楽しさを伝えたい!「Mix Leap Study 特別編 レガシーをぶっつぶせ。現場でDDD!」を開催しました こんにちは、ヤフーの大阪オフィスでサービスを支えるプラットフォームの開発をしている辻(@crossroad0201)です。 2019年8月31日(土)、グランフロント大阪にある大阪オフィスで「Mix Leap Study 特別編 - レガシーをぶっつぶせ。現場でDDD! コラボカンファレンス」を開催しました。 今回のイベントはDDD(ドメイン駆動設計)をテーマとしたカンファレンスで、関東と関西から17名の登壇者陣、参加者も164名(ヤフー社員含む)もの方々にご来場いただき、懇親会まで大盛況のうちに閉幕となりました。 この記事では、イベントを主催させていただいたひとりとして、このイベントに込めた思いをお伝えしたいと思います。 DDDとは DDDはドメイン駆動設計(Domain

    設計の楽しさを伝えたい!「Mix Leap Study 特別編 レガシーをぶっつぶせ。現場でDDD!」を開催しました
    j5ik2o
    j5ik2o 2019/09/09
    機会があればまた登壇したい。ありがとうございました
  • 10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由 - エンジニアHub|Webエンジニアのキャリアを考える!

    10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由 10年以上運用されているサービスには、さまざまな技術的な負債が発生しています。今後の継続的な改善のため、いったん新規開発を止めて4年かけて全面的なリニューアルを実施した「はてなブックマーク」の開発者に、プロジェクトの課題や解決する手法などを聞きました。 改善1つに数カ月かかるなら全てを書き換えられないか 2000年代にトレンドだった開発手法の負債 過去の開発意図を探る考古学的手法 データセンター移行も見据えて刷新しよう ドメインモデル設計とScalaとマイクロサービス化 コアロジックにはScalaを採用 きちんとしたドメインモデルによる設計と実装を継続したい 段階的なリリースとデータの移行という2つの大きな課題 求められる機能に沿ったデータベーススキーマに再構築 新旧の2システムを維持しながら

    10年モノのサービスをアーキテクチャから再設計─はてなブックマークがScalaとDDDを使う理由 - エンジニアHub|Webエンジニアのキャリアを考える!
    j5ik2o
    j5ik2o 2019/09/05
    “そのコードをアプリケーションレイヤに書くべきか、ドメインレイヤに書くべきかといった事柄を皆がちゃんと意識していますし、コードレビューのときも議論になったりします。”
  • ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~

    1. ドメイン駆動設計 ユーザー、モデル、エンジニアの 新たな関係 PHPメンターズセミナー in PHPカンファレンス Oct.3, 2015 杉twitter: @sugimoto_kei http://www.fusions.co.jp 2. 自己紹介 • 会計事務所系コンサルティング会社(アクセンチュア/アンダーセン)出身。 • 生産管理/会計系基幹システム構築 (スクラッチ開発, SAP R/3等) ~ 会計・経営管理領域の制度設計・業務改革 ~ パッケージソフト(連結会計)開発など。 • 2003年独立、経営管理基盤ソフトウェア「fusion_place」の開発販売・導入支援。 http://www.fusions.co.jp • 現役 Java プログラマ。OOPラブ × XPラブ × DOAラブ。 • 全然アップデートしていないブログあり。 http://hot-h

    ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
  • 「実践ドメイン駆動設計」を読んだので、実際にDDDで設計して作ってみた! - Qiita

    こんにちは、クラウドワークスの新規事業のエンジニアとして仕事をしている高梨です! 最近、「実践ドメイン駆動設計」というを読みました! 500ページ近くもある技術書で、なかなか量は多かったのですが、DDDがどんなものなのか一通り大枠を掴めた気がします。 ただ読み終わった後にこんな疑念や不安をいだきました。 「たしかにかなり面白そうだけど、実際にやるとどれだけ工数かかるんだろう...?」 「設計の話は全然出てこなかったけど、DDDで作るとなるといったい何から始めればいいんだ?」 「戦術についての知識はついたけど、実際に書こうとしたらできなそうだな...」 そこで、そういった疑念や不安を解決するために、実際にDDDでサンプルプロダクトを作ってみようと思ったわけです。 実際に作ってみるのが、結局一番理解が進みますしね。 今回は、そのプロダクトがリリースされるまでの過程や感想を、作成した設計書やソ

    「実践ドメイン駆動設計」を読んだので、実際にDDDで設計して作ってみた! - Qiita
    j5ik2o
    j5ik2o 2018/12/17
    RDRA, ICONIX, DDDの実践例!
  • ドメイン駆動設計を勉強するときのオススメ資料 - Qiita

    この記事は、ドメイン駆動設計 #1 Advent Calendar 2018の9日目です。 明日は@kmdsbngさんです。 今回は、ドメイン駆動設計(以下DDD)を学ぼうとする人に対して参考になる資料をまとめます。 DDD関連資料のオススメ まずはDDDの青い、エリック・エヴァンスのドメイン駆動設計から手を出したいところですが、500ページ超えで分厚く、初学者の人とっては解説される内容が抽象度が高く、理解するのに苦労すると思います。 ですのでこれから紹介するSTEPの順番から読んでいくのことをオススメします。 STEP1 まずはDDDの概念から理解していくことから始めましょう。下記のがオススメです。 わかる!ドメイン駆動設計 ~もちこちゃんの大冒険~ https://booth.pm/en/items/392260 このはストーリー形式でDDDを解説されていますので比較的理解しやす

    ドメイン駆動設計を勉強するときのオススメ資料 - Qiita
    j5ik2o
    j5ik2o 2018/12/10
    最後に僕の資料が!ご紹介ありがとうございます!
  • 「集約の境界と整合性(略」に対して頂いたアイデアの分類と現状での僕の回答らしきもの - kbigwheelのプログラミング・ソフトウェア技術系ブログ

    解決策1 集約をマージするタイプのアイデア 解決策2 一時的な整合性の破綻を受け入れ結果整合性を使うタイプのアイデア A. 組織へ無効状態で追加後、有効化するアイデア A.i 連続的に追加・有効化を行うアイデア A.ii 追加後、有効化を別スレッドやイベント駆動で行うアイデア B. 組織に所属するユーザー一覧というドメインオブジェクトをアイデア B.i ユーザー一覧を組織集約に持たせるアイデア B.ii ユーザー一覧を独立した集約にするアイデア C. イベント駆動アーキテクチャの長期プロセス(サーガ)的なアイデア D. オーバーがNGなら逆に現在ユーザー数を先に増やすアイデア 解決策3 アンチパターンではあるが集約間の整合性維持のためトランザクション制御を用いる 解決策4 ユースケースの見直しによる再モデリングタイプのアイデア 僕の現時点での回答らしきもの 現時点での回答: 解決策2 B.

    「集約の境界と整合性(略」に対して頂いたアイデアの分類と現状での僕の回答らしきもの - kbigwheelのプログラミング・ソフトウェア技術系ブログ
    j5ik2o
    j5ik2o 2018/12/10
    集約の設計について。みなさんのリアクション と考察など。
  • DDDにおいて、なぜ複数の集約にまたがってトランザクションをかけてはいけないのか(multiple aggregates in one transaction) - pospomeのプログラミング日記

    DDDでは 集約 = トランザクション境界 でなければならないので、 複数の集約をまたがるデータの永続化処理は結果整合性になる。 なぜ集約をまたいでトランザクションをかけてはいけないのかというと、 集約で「データの一貫性の境界」を表現するため。 なので、集約同士はデータの一貫性を保証しない = 結果整合性 ということになる。 集約がトランザクション境界ではない場合はどうなるのかというと、「データの一貫性の境界」がドメインレイヤで表現できなくなる。 あるときは 集約A, 集約B が一緒のトランザクションで登録され、 あるときは 集約A, 集約B, 集約C が一緒のトランザクションで登録される、というケースがあると、 「データの一貫性の境界」はアプリケーションレイヤのトランザクション開始から終了までのコードで表現されてしまうので、 それぞれの集約がどの粒度で一貫性を保たれるのかが分からなくなる

    DDDにおいて、なぜ複数の集約にまたがってトランザクションをかけてはいけないのか(multiple aggregates in one transaction) - pospomeのプログラミング日記
    j5ik2o
    j5ik2o 2018/12/03
    よいまとめ
  • 集約の境界と整合性の維持の仕方に悩んで2ヶ月ぐらい結論を出せていない話 - kbigwheelのプログラミング・ソフトウェア技術系ブログ

    記事はドメイン駆動設計 Advent Calendar 2018 - Qiitaの3日目の記事です。 2日目は、grimroseさんのぐるぐるDDDで気をつけてることでした。 4日目は、s_edwardさんのMicroservices と DDDです。 Table of Contents Table of Contents 以下の記事を読むにあたり前提となる知識 問題 サービス詳細 ユビキタス言語 重要なビジネスルール モデリング 上の何が問題? 解決策 解決策1 集約をマージする 解決策2 一時的な整合性の破綻を受け入れ結果整合性を使う 解決策3 アンチパターンではあるが集約間の整合性維持のためトランザクション制御を用いる 解決策4 ユースケースの見直しによる再モデリング まとめ とりあえず今どうやっているか 最終的にどうするべきだと考えているか(2018/12/01時点) ソリューシ

    集約の境界と整合性の維持の仕方に悩んで2ヶ月ぐらい結論を出せていない話 - kbigwheelのプログラミング・ソフトウェア技術系ブログ
    j5ik2o
    j5ik2o 2018/12/03
    おー、すごい面白い記事!このあとゆっくり読む!
  • ぐるぐるDDDで気をつけてること - open build/reports/life/index.html

    ぐるぐるDDDで気をつけてることDecember 01, 2018 Blog DDD はじめにこの記事は、ドメイン駆動設計 Advent Calendar の2日目の記事です。 1日目は、@tanaka9230 さんの 「DDD」にまつわる諸課題の整理でした。 3日目は、@bigwheel さんの 集約の境界と整合性の維持の仕方に悩んで2ヶ月ぐらい結論を出せていない話です。 ぐるぐるDDDとはぐるぐるDDD で検索すると、@haradakiro さんの資料がみつかると思います。 DDDとScrumを回していくことで、モデリングと実装をしていくやり方です。 ドメイン駆動設計というとどうしても実装の話が多いので、どうやってやっていくと、モデルと実装の乖離を減らしつつ、要求に答えられるシステムを開発出来るのか、 自分が気をつけてることを書きたいと思います。 モデル探求のうずまき https://

    ぐるぐるDDDで気をつけてること - open build/reports/life/index.html
    j5ik2o
    j5ik2o 2018/12/02
    DDDとScrumの組み合わせについて
  • 「実践ドメイン駆動設計」 から理解するDDD (2018年11月)

    Modeling Forum 2018 技術公演トラックで発表した内容となります。 VernonVaughn Vernon 氏が発表 した書籍「 実践ドメイン駆動設計(通称: IDDD )」の 流れに沿って、 DDD の基からモデリング手法までを 幅広く紹介します。

    「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
    j5ik2o
    j5ik2o 2018/11/30
    わかりやすくまとまってる
  • Scala関西Summit 2018に参加したので感想を書きます - MicroAd Developers Blog

    マイクロアドのサーバサイドエンジニアの松宮です。少し時間が経ってしまったんですが、今年もScala関西Summitに参加してきましたのでマイクロアドと絡めながらつらつらと感想を書きたいと思います。 ちなみに今年はマイクロアドからも初めてスポンサードさせて頂きました! 今までもマイクロアドではScalaを採用したプロダクトはいくつかありましたが、全体ではJavaがメインだったため、Scala関係のイベントへのスポンサードはしておりませんでした。しかしここ数年でApache Sparkを採用したり、主要プロダクトのScala化をきっかけに社内全体にScalaが浸透していき、その結果、今回のScala関西Summit 2018へのスポンサードができました! Apache SparkやScalaへの変遷については以前のブログ記事で紹介させて頂いていますので、良ければご覧ください。 順序保証型分散ス

    Scala関西Summit 2018に参加したので感想を書きます - MicroAd Developers Blog
    j5ik2o
    j5ik2o 2018/11/21
    お疲れさまです!刺激を与えることができてよかった!
  • 新しいモデリング手法: EventStormingをはじめるための準備 - yoskhdia’s diary

    EventStorming (イベントストーミング) というモデリング手法があります。 www.eventstorming.com EventStorming is a flexible workshop format for collaborative exploration of complex business domains. EventStormingは、複雑なビジネスドメインを協同的に探求するための柔軟なワークショップ形式のひとつです。(意訳) 考案者はAlberto Brandolini氏で2013年にはブログに最初の投稿がされています。 海外での認知度は高く*1、Eric Evans氏のプレゼンテーションの中でも強力な手法であると言及*2されています。 近々、この手法を試せる機会が来そうなので、そのやり方について(私見を交えつつ)まとめてみるエントリです。 注意 現在進行系

    新しいモデリング手法: EventStormingをはじめるための準備 - yoskhdia’s diary
  • マイクロアドに新卒で入っていきなりScalaを書かされた話 - MicroAd Developers Blog

    はじめまして。マイクロアドでアプリケーションエンジニアをしている新卒1年目の石田です。 主に、MicroaAd BLADEという広告配信プラットフォームの開発をしています。 内定者アルバイト時代からマイクロアドでBLADEの開発に携わっていました。BLADEのソースコードはJava/Scalaを中心になっており、大半がJavaでした。現在は新規機能開発や、リファクタではScalaで実装を行なっています。 今回は、自身が担当した 「JavaコードのScala化を行う実案件」 に絡めて、「可変オブジェクトの問題」や「ScalaでのDDD」に関する話を書いていきたいと思います。 JavaコードのScala化 自分のScala力が多少まともになった要因となったのが、このScala化の案件です。 私が学生の時には、とあるインタプリタ方式の手続き型プログラミング言語を書いていました。加えて浅学だったの

    マイクロアドに新卒で入っていきなりScalaを書かされた話 - MicroAd Developers Blog
  • ボトムアップドメイン駆動設計 後編

    ボトムアップドメイン駆動設計 後編 1. ボトムアップ ドメイン駆動設計 後編 成瀬 允宣2018/10/23 in GMO Yours 1 2. 自己紹介 • 成瀬 允宣 - Masanobu Naruse • プログラマ • C#, Scala, Typescript • DDD とかアーキテクチャの話が好きです • @nrslib • https://nrslib.com 2 3. もくじ • はじめに • 値オブジェクト • エンティティ • ドメインサービス • リポジトリ • アプリケーションサービス • ファクトリ • トランザクション • 集約 • アーキテクチャ • ドメイン駆動設計への誘い 3 4. 閑話休題 4 アプリケーションが 作れるようになりました ここから後半です 5. ファクトリ 5 後半最初のテーマは ファクトリ 6. ファクトリ | 採番 6 サンプルの

    ボトムアップドメイン駆動設計 後編
    j5ik2o
    j5ik2o 2018/10/24
    ページ数がぱない
  • ボトムアップドメイン駆動設計 前編

    怖さの原因は? 辛さの原因は? ドメイン駆動設計の用語は2パターン 挫折した方がもう一度手に取ってみたいと思ったら、私の勝ちです C# だと比較ってこんな感じに実装します 勿論こんなこと毎回やってられませんから どうなりますか? コードで表すと 識別子の値オブジェクトを作って(任意 その値オブジェクトを識別子にする 同じ属性でも 名字を変更しました 識別子を使います 例えば‘ MySql を使うと 注目すべきは このコンストラクタで受け取った userRepository これが InMemoryUserRepository か UserRepository かで動作が変わる アプリケーションサービスはユースケースを強く意識します ボトムアップドメイン駆動設計 前編 1. ボトムアップ ドメイン駆動設計 成瀬 允宣2018/10/23 in GMO Yours 1 2. 自己紹介 • 成瀬

    ボトムアップドメイン駆動設計 前編
    j5ik2o
    j5ik2o 2018/10/24
    ページ数がぱない
  • [レポート]レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡 #DDDAlliance | Developers.IO

    こんにちは。プロダクトグループのshoito(しょいと)です。 9/26(水)に開催された レガシーコードにドメイン駆動設計で立ち向かった5年間の軌跡 に参加してきたのでレポートします。 当日のtwitterのハッシュタグ#DDDAllianceのツイートがTogetterでまとめられています。 BIGLOBEにおける、5年間のDDDへの取り組みと今後について ビッグローブ株式会社 西 秀和さんより 30年間、事業を支えてきた業務システムをDDDで刷新する。 そのためには、組織的、エンジニアのレベルなど多くの問題があります。 その壁をどう乗り越えたのか? そして、壁の向こうで得た恩恵とは何のか? 5年という期間を経て、得ることのできた気づきや組織的な変化をお伝えしたいです。 アジェンダ DDD導入に至るまで 導入時の苦労 導入による効果 今後の目標 BIGLOBE販売システムについて、DD

    [レポート]レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡 #DDDAlliance | Developers.IO
    j5ik2o
    j5ik2o 2018/09/27