What is it, naokirin?

イベントストーミングを一人で素振りしてみた

最近はプライベートですることが多くて、休日もあまりゆっくりできていませんが、その中でもやってみたことを備忘として残しておきます。

イベントストーミングとは

イベントストーミングは、Alberto Brandolini氏が考案したビジネスモデルを協働して発見していくワークショップ形式のアクティビティです。

特にDDDの領域の戦略的フェーズで、「ユビキタス言語」「コアドメイン」「サブドメイン」「境界づけられたコンテキスト」の定義に用いられます。

他の方法に比べると、エンジニア以外のビジネスエキスパートやステークホルダにもわかりやすいとされています。

イベントストーミングを一人で素振りしてみる

上記記載のように基本的には複数人で行うものですが、今回は理解を深める目的で一人でやってみることにしました。

アナログのホワイトボードと付箋を使うのもアリですが、今回はオンラインホワイトボードツールのMiroを使ってやってみました。

書き出す全体像を先に載せておきます。

ドメインイベントを書き出す

まずはドメインイベントを書き出していきます。

ドメインイベントは過去形(英語でいうと過去完了形)で書き出していきます。

この時点でも部分部分しか知らないために、「ここってどうなんだっけ?」というのが多数出てきます。

一人でやっていると解決できない部分なので、一旦「?」をつけておいてこういう感じのはずだというのを書いておきました。
また不明点などはこの時点で懸念事項として書き出しておきました。

時間順に並べる

今回やってみた際には、最初の時点である程度時間順になっていましたが、それをさらに整理しておきます。

フェーズごとに区切る

フェーズが別れている部分についてはざっくり区切っておきます。

契約フェーズとサービス提供フェーズなどで区切っていきます(内容によってもう少し区切ったりもしていますが…)。

コマンドとユーザーの役割(ロール)、方針(ポリシー)、読み取りモデル(リードモデル)、外部システムを書き出す

手順として分けて書かれているものもあるのですが、今回はここは時間順に見ていきながら追加していきました。

集約を書き出す

集約を書き出していきます。

ここが少し悩みました。自信を持って書き出すには、もう少し訓練が必要かもしれません。

コマンドで整合性を保って書き換えを行う必要がある部分を見つけていくことを意識してみました。

ただ、この部分をエンジニア以外に理解してもらうのが難しい感じがしましたが、この部分は詰まらずに進むんでしょうか…?

コンテキスト境界を見つける

コンテキスト境界については、フェーズの区切りからなんとなく見えている部分があるので、それを参考に見つけていきます。

用語の変わり目なども大事かなと思いました(たとえば、「申し込み」「審査」「契約」など…)

結果

色々あって結果にはぼかしを入れていますが、雰囲気は伝わるかなと思います(一応例題として行っており、現在の業務などとは関係ありません)。

おわりに

個人でやるよりは複数人、特にドメインへの知識があるステークホルダに参加してもらうと知見がアウトプットに出てくるのではないかと思いました。

個人でも、自分が何となくしか理解していない部分をあぶり出すのに非常に有効かと思います(ここって誰がやってるんだろう、とかも)。

あと、ビジネスドメイン〜システム設計までのつなぐ方法へのイメージが非常によく湧いたので、機会があればぜひ使ってみたいと思います。