かとじゅんの技術日誌

技術の話をするところ

DDD

ドメイン固有型(値オブジェクト含む)を再考する

DDD

Value Objectが盛り上がっているらしい。 Value Objectについて整理しよう - Software Transactional Memo Value Objectの説明に異論がないものの、主題はValue Object Obsessionのほうですよね。 こちらも聞いてみた。 fukabori.fm よい機会なので、よくわ…

「DDDで複数集約間の整合性を確保する方法 Rev2」に対する考察

DDD

どうも、かとじゅんです。 松岡さん(id:little_hands)が以下の記事を更新されたそうです。松岡さん自身が悩まれた中で検討したオプションであって、唯一の正解ではないと踏まえたうえで、率直な感想を述べたいと思います。結論からいうと、論旨は前回の記事…

「DDDで複数集約間の整合性を確保する方法」に対する考察

DDD

久しぶりにブログ記事を書きますか。 ということで、松岡さん(id:little_hands)のブログ記事に対する考察記事です。 この記事は古くなったので、ぜひ以下も参照してください。 blog.j5ik2o.me little-hands.hatenablog.com 題材も松岡さんのブログ記事と同じ…

外部キー制約は何も考えずに適用するとよくない

このブログが話題になってますね。制約を付けること自体はよいことだけど、無目的に適用すると害も生じると思います。 無目的という言い方はおかしいな…。外部キー制約をどのように使えばいいのか、逆にどんなときに使うとまずいのかを考えてみたいと思いま…

Microsoft社のDDD, CQRSに関する記事一覧

CQRS+ESパターンの説明 コマンド クエリ責務分離 (CQRS) パターン ステートソーシング(CRUD)の短所としてあげているもの 読み取りと書き込みのデータ表現不一致問題 ステートの同時更新による競合問題 読み取りと書き込みが同じモデルによる、データの誤用問…

DDDリポジトリを楽に実装するライブラリ

DDDのリポジトリを実装するのがダルいので、ライブラリ化したというか前から書いていたけど、Redis, Memcachedなどの実装も追加したので、簡単に説明を書いてみる。 プロジェクトなどで自前で実装する際も、参照実装として参考になると思います。Scalaの例だ…

混乱しがちなサービスという概念について

社内でサービスがよくわからないという話になったので、考察を少しまとめておきます。 過去のエントリでも以下のように触れましたが、もう少しかみ砕いてみよう。 サービスという言葉はあいまい まず、簡単に前提の整理から。単に"サービス"って言葉が何を指…

CQRS+Event Sourcingを学ぶための教材

超久しぶりのブログ…。 Octopressに疲れたのではてなブログに戻ってきました(Octopressの過去の記事ははてなブログにインポート済です)。ついでプロに移行。 さて、海外のDDDコミュニティではCQRS+Event Sourcing(以下, ES)が人気なのですが、ようやく日本で…

DDDのリポジトリのインターフェイスをどのように設計すべきか

scala-dddbase scala-dddbaseではどのようなインターフェイスとしているか? 以下のようになっています。 戻り値はモナドにラップして返すことを想定しているので、高階型としてM型を指定できるようにしました。一般的にMには、同期型リポジトリとしてはTry…

ServiceとDCIについて

面白そうなネタがあったので、自分なりの考えをまとめてみる。 Ruby/Rails 用 DI コンテナ Dee をつくった、あるいは Ruby のカルチャーについて この記事はRuby用のDIコンテナの話題なんですが、DCIについても言及されているようです。比較軸はDIそのものと…

ScalaでのDCIの実装を考える

みなさん、こんばんわ。 会社のアドベントカレンダーで、Scalaコードでわかった気になるDDDというブログを書いたのですが、最近、老害を防ぐためにDCIについても勉強中です。 DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien とりあえず、これを…

ドメインモデルの関連を表現するには

(Scala前提の記事なので注意してください) たとえばこんなモデルがあって、相互に依存しているケースを考えよう。 注意:説明を簡単にするために、varを利用しています。 従業員 class Employee( val id: Long, val name: String, var department: Option[Dep…

「エリック・エヴァンスのドメイン駆動設計」 を献本していただきました

嬉しいことに「エリック・エヴァンスのドメイン駆動設計」 を献本していただきました! 訳者の和智さん、関係者の方々、翔泳社さん ありがとうございます。おめでとうございます!Tシャツまでもらった!! 実は、私とid:daisuke-mは、この翻訳版の実装編のレ…

日経ソフトウエアの特集がムックになりました

まず、 3月11日の「東北地方太平洋沖地震」で、被害にあわれた皆様に心よりお見舞い申し上げるとともに、犠牲になられた方々とご遺族の皆様に対し、心よりお悔やみを申し上げます。 私も関西出身で阪神大震災の酷さを体験している人間でもありますし、気を負…

生成だけではなく複製もファクトリに任せたほうがよい

DDDで設計を始めると不変条件を維持するために、エンティティなどの可変オブジェクトの複製を行うことがよくあります。 Javaの場合は、Cloneableインターフェイスを実装して、実装型に応じた複製インスタンスを返すcloneメソッドを作る。以下のような感じ。 …

意図に関係する大事なことがら

最近、DDDの"意図の明白なインタフェース"というパターンの章を読みなおしています。このパターンが一環して主張していることは"名前が重要"ということです。その名前の重要性について、いろいろな文献からの引用を用いて考えてみたいと思います。 名前重要 …

副作用を最小限に抑えるために必要なこと

若干、難しい話ですが、設計力を上げたいプログラマ向けなエントリ。私も道半ばです。一緒に考えていただければ幸いです。 堅牢なアプリケーションを実現する上で「副作用を最小限に抑える」という設計思想は、非常に重要な示唆を含んでいます。 その「副作…

DDDのバリューオブジェクトは不変性が本質ではない

id:ryoasaiさんから紹介してもらったエントリで「バリューオブジェクトは不変性が本質ではない」ということを知って、「あれ?」っと思ったので、もう一度DDD本を読んで簡単にまとめてみました。 不変性は本質ではない DDD P97-98より引用 The system has to…

結構大事なアグリゲートについてもう少し考えてみる

ちと、小難しい話になります。DDDの話なんで、コードで学ぶドメイン駆動設計入門 〜アグリゲート編〜 - じゅんいち☆かとうの技術日誌でも取り上げたアグリゲートに関する考察です。どうあるべきかはちょっと分かっていません。これを読んでこうしたらよいの…

ScalaでDDDをはじめてみよう

2010年も今日で終わりですが、皆様におかれましてはどのような年でしたか。 私は、この一年で「新しい技術の価値観」と「人との出会い」の二つの機会が恵まれた年でした。仕事に、コミュニティ活動に、お世話になった皆様、本当にありがとうございました。20…

コードで学ぶドメイン駆動設計入門 〜ファクトリ編〜

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 と続いて、このエントリはファクトリ編を解説しま…

コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 からの連投エントリ。振る舞いとサービス編です。今回もコードを使って解説したいと思います。 サービスとは、モノとして扱うと不自然なものをサ…

コードで学ぶドメイン駆動設計入門 〜アグリゲート編〜

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜ファクトリ編…

コードで学ぶドメイン駆動設計入門 〜リポジトリ編〜

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜振る舞いとサービス編〜 - じゅんいち☆かとうの技術日誌 コードで学ぶドメイン駆動設計入門 〜ファクトリ編…

コードで学ぶドメイン駆動設計入門 〜エンティティとバリューオブジェクト編〜

先日、DevLOVEで発表した「コードで学ぶドメイン駆動設計入門」ですが、入門としながらも難しかったかもしれません。モデリングの話は難しい方の話題なので仕方ないのですが、できるだけわかりやすく補足するブログを書いてみたいと思います。まず、レイヤー…

DEVLOVE HangarFlight で話したスライド&ソースコード

12月18日 DEVLOVE HangarFlight - Winter Sortie -(東京都) で、「コードで学ぶドメイン駆動設計入門」と題してしゃべってきました。スライドはこちら。http://slidesha.re/h0ffOI ソースコードはこちら。https://github.com/tricreo/schema-generator休日に…

Value Objects と Immutable

DDD

おつかれさまです。そろそろ、プログラミングに関するエントリも書かなければwDDDの勉強を開始するにあたって、一番最初にEntitiesとValue Objectsに出会う。 今回は、まず先にValue Objectsと関連が深いImmutableについて、考えてみよう。なぜ、Value Objec…

ドメインモデリング能力を鍛える

DDD

ドメインモデルに対する日米の温度差|Ouobpo私が思うにドメインモデリングが敷居が高いということではなくて、オブジェクト指向自体がそもそも敷居が高いからだと思う。 多態性やデザインパターンとか出てくると目がぐるぐる回るというかw そこまで厳格に…

ぽちりました

DDD

Domain-Driven Design: Tackling Complexity in the Heart of Software作者: Eric Evans出版社/メーカー: Addison-Wesley Professional発売日: 2003/08/22メディア: ハードカバー購入: 4人 クリック: 109回この商品を含むブログ (89件) を見る 久々に洋書を…