yoskhdia’s diary

DDDとかプログラミングとかアーキテクチャとか雑多に

2018-01-01から1年間の記事一覧

Scalaを例に「仕様」パターンを実装する

この記事はFOLIO Advent Calendar 2018の6日目です。 FOLIOでも使っている「仕様」パターンをScalaで実装する方法について紹介します。 「仕様」パターンとは Eric Evans氏とMartin Fowler氏による仕様パターンに関する論文があります。 https://martinfowle…

エンティティの同一性を表現するためにequalsをオーバーライドすべきか否か

このエントリは ドメイン駆動設計 #1 Advent Calendar 2018 の5日目です。 4日目は @s_edward さんの「Microservices と DDD」でした。 6日目は @kawakawa さんの ドメインオブジェクトとユースケースの関係について です。 TL;DR エンティティの同一性を表…

新しいモデリング手法: EventStorming (イベントストーミング) をはじめるための準備

EventStorming (イベントストーミング) というモデリング手法があります。 www.eventstorming.com EventStorming is a flexible workshop format for collaborative exploration of complex business domains. EventStormingは、複雑なビジネスドメインを協…

「Don't build framework, Build platform」というテーマでエムスリーさんのTech Talkに参加してきました

ScalaMatsuri 2018で @jooohn1234 さんから、エムスリーさんで行われているTech Talkにご招待いただいたので発表してきました。 なんと、今回で第92回(!) m3dev.github.io 発表資料 docs.google.com 今回もトークスクリプトを付けて発表資料を公開します…

そのトランザクションは果たして本当にトランザクションなのだろうか?

DDDネタです。 DDD Community-JPのDiscordで「複数の集約(Aggregate)をまたいで整合性をどう担保するのが良いのか?」という話がされていました。 この話を読んでいて、 yoskhdia.hatenablog.com でもサラッと触れた「トランザクション」をもう少し掘って…

Kamonを使ってログにトレースIDを出力する(+Play Framework)

一般に非同期処理を行うと、その実行をログからトレースすることは難しくなります。 Scalaアプリケーションを運用する際もこれが問題となります。 コツコツとログにIDを埋めて回ることもできますが、横断的な関心事はAOPで解決したくもなります。 ということ…

「Reactive Messaging Patternsに学ぶシステム間統合」というテーマで発表してきました

第5回Reactive System Meetup in 西新宿で登壇してきました*1。 reactive-shinjuku.connpass.com 発表資料 docs.google.com 一部表現を変えつつ、補足をして発表資料を公開します*2。 トークスクリプトもつけてありますので併せてどうぞ。 明日から開催のSca…

Scalaで良い感じにURI(URL)を操作する

Java標準に良い感じのURL(URI)ビルダーが無いの微妙にしんどい— Okuda (@yoskhdia) 2018年2月26日 TL;DR sttpのcoreライブラリだけ使用しました。 しかし、デフォルトでデコードも行われるため、これを回避する方法を考えました。 将来的に使えなくなる可…

Snowflake形式のIDを採用した場合の苦労ポイント

高速にIDを採番できる仕組みを検討したとき、Snowflake形式のID生成は選択肢のひとつとして有力です。 Snowflakeを紹介する記事は見つかりますが、実際に採用して苦労した話はあまり聞かないため、備忘的に書いてみるエントリです。