社内交流会でLTをする機会があったので「ユビキタス言語」についてDDD本を再度読みなおしてみました。speakerdeck.com 最近、「DDDは負け犬」みたいな話が少しバズりましたが、ユビキタス言語=ユーザの言葉と解釈するのはあまりに勿体無いのではないかなと思います。 ユビキタス言語はより良い・深いモデルを探求するために必要なものです。 スライドの補足 第2章はスライドに書いたことよりも、もっと多くのことについて言及されています。 ここでは、それらの省略してしまった部分を補足しつつ、スライド構成の今ひとつだった部分を正したいと思います。 まず、第2章最初の一文 しなやかで知識豊富な設計を行うには、用途の幅広い、共有されたチームの言語と、その言葉を使った活発な実験が必要である。 – 書籍「ドメイン駆動設計」(p.24) 省略しようがないくらいに、この一文に詰まっているのですが、スライド
ある出版社プロジェクトにおける事例 出版社は「書籍」と「雑誌」を制作している。制作した「書籍」と「雑誌」は、取次(※出版業界における卸のような位置付けの業態)や書店へ卸す。 「書籍」には返品があり得て、また在庫は会計上資産として扱われる。「雑誌」は返品はあり得ず、また在庫は資産として扱われない。 「書籍」には「ジャンル」という販売管理上の分類がある。具体的には下記の通り。 一般書籍 企画書籍(※雑誌と書籍の中間的なもの、書籍だが決して重版しない) 音響・映像媒体付き(※特別扱い) 成人向け(※特別扱い) 販売管理観点では、「雑誌」もある種の一つの「ジャンル」として扱っている。販売管理観点での「ジャンル」は、つごう下記5つという認識。 一般書籍 企画書籍 音響・映像媒体付き書籍 成人向け書籍 雑誌 「取引条件」という売価、支払サイト等に関わる諸条件が、おおよそ取引先(=取次や書店)×ジャンル

こちら2つを読んで ユビキタス言語とは ソフトウェア開発チーム全体で作り上げる共有言語 ドメインのユーザーが使う用語とプログラムを構成する用語を一致させた言葉 プロダクトオーナー、開発者間のコミニュケーションを円滑にするためのようなもの ユビキタスとは 「満遍なく」とか「どこにでもある」という意味 ユビキタス言語の考え方 その業務自体が、どのような考えでどのように動くのかプロジェクトにとっての最善の用語か ユビキタス言語における変更は、モデルに対する変更である ドメインエキスパートは用語や理解を伝えるために適切かどうかに、開発者は設計を妨害する不整合さがないかどうかに着目すべき ユビキタス言語のスコープ チーム。チームによって話されて、チームが開発する単一のドメインモデルで表現される 「業界全体で」とか「全社的に」あるいは「世界中で」共通なドメイン言語を想定したものではない(ユニバーサル

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

Este documento presenta conceptos clave de diseño de dominio y arquitectura de software. Explica patrones como agregados, fábricas y repositorios para modelar entidades y servicios, y describe técnicas como capas de anticorrupción y contextos de dominio acotados para dividir una aplicación. También cubre temas como modelado de eventos, diseño estratégico ymapeo de contextos de dominio.
境界づけられたコンテキストとは 公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています) bounded context A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable. 境界づけられたコンテキスト 特定のモデルを定義・適用する境界を明示的に示したもの。 代表的な境界の例は、サブシステムやチームなど。 まぁなかなかよくわからないですよね。DDD用語の中でもかなり難解なワードです。 境界づけられたコンテキストは、2つの観点から解説が必要でしょう。 ・概念としての境界づけられたコンテキスト ・境界づけられたコンテキストをどう実装に
![境界づけられたコンテキスト 概念編 - ドメイン駆動設計用語解説 [DDD] - little hands' lab](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f9937daa254a41c5056666b79af8b3df3f2fd5d30%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fcdn.image.st-hatena.com%252Fimage%252Fscale%252F32039c959bfcd9d3964a49b1cde6b8c986b5d171%252Fbackend%253Dimagemagick%253Bversion%253D1%253Bwidth%253D1300%252Fhttps%25253A%25252F%25252Fcdn-ak.f.st-hatena.com%25252Fimages%25252Ffotolife%25252Fl%25252Flittle_hands%25252F20171128%25252F20171128072027.png&f=jpg&w=240)
ドメイン駆動設計の4つの基本活動、Springのプログラミングモデル、ドメイン駆動設計のためのSpringの使い方
ドメインモデル(ドメイン駆動設計)では、集約ルートにはグローバル空間で一意なIDを付けるべし、という情報を得ました。 DDD本にも、「(集約)ルートエンティティはグローバルな同一性を持つ」という記述があります。 ※ごめんなさい、電子書籍なのでページ番号分かりません。集約の不変条件についての記述です。 このことについて疑問がありますので教えて下さい。 例えば、プロジェクト管理アプリケーションを作っているとします。 ざっくりとした要件はこんな感じです。プロジェクトを複数管理できる ひとつのプロジェクトは複数のタスクから構成される 人員を複数管理できる 人員は、色々なプロジェクトのタスクに割り振られる こうすると、集約としては「プロジェクト」と「人員」が出てくるかなと思います。 どちらも「プロジェクトID」と「人員ID」という、グローバル空間で一意なIDを付ければ良さそうです。 また、「タスク
2016/10/19 に大阪で開催されたLaravel Osaka 2016 にて、「DDD パターンを活用したLaravel アプリケーション開発」を発表しました。 会場の MOTEX さん。巨大スクリーンが 2 面あり、話しやすい環境でした。 発表資料Laravel の具体的なテクニックに比べると抽象的な内容なので、どれだけ伝えられるか思案したのですが、聞いて頂いた方からのフィードバックや参加者アンケートでも概ね良い評価を頂けたので安心しました。 ValueObject については、さらに掘り下げて話せるテーマなので、これ単体でもまた話してみたいです。 Value Object は基本ですね | DDDパターンを活用したLaravelアプリケーション開発/ddd-with-laravel https://t.co/ZzRTnt0tY6—増田 亨. (@masuda220) O

Reactive Messaging Patterns読書会のなかで、「マイクロサービスとAkkaとGo」な面白い話題が出たので代表でまとめる試みエントリです。(結構、色々な話題に飛んでいるので難度高い。) まとめ方としては、会話ログを転記して、最後にまとめる形をとっています。また、議論と私の考えが混ざらないように所感は分けておきます。 ddd-cqrs-es.connpass.com TL;DR 要素技術(どんな言語使うとか、どんなアーキテクチャにするとか)の前に、組織やプロダクトの性格を考えて戦略を決めましょう。 そして、その中で最適と思われる戦術をとれるような要素技術を採用しましょう。 Akka良いよ。 ログ(一部抜粋)Slackからの引用のためテキストベースです。 事の始まりは、荒木さん(以下、 @applideveloper )の発言でした。 (この記事絡みですね。 集合知で各
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 経緯 casyというインターネットを使って手軽に家事代行を頼むことができるサービスのプログラマをしています。 Webだけでなく、スマホアプリも出すことにあたり、Webアプリサーバ(Rails)から機能を切り出し、APIサーバ(Rails)を別途作成し、Webアプリの場合はWebアプリサーバからAPIサーバを呼び出し、アプリからは直接APIサーバを呼び出すような仕組みにしました。 ただ、全部の機能をAPIサーバに移すのは容易なことではなかったため、いくつかの機能はまだWebアプリサーバに残っていて、アプリよりもWebのほうが機能が多い状態

あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く