これは GLOBIS Advent Calender 2021 12日目の記事です。
12日目 → @tatsushitoji
13日目 → @fursich
と2日に渡り、チームにイベントストーミングというモデリング手法を導入してみた話をさせていただきます。
TL;DR
イベントストーミングによって
- 協働的にドメインのモデリングをしていくプロセスにおいて共通認識が得られる
- アウトプットとしての図
上記を、ビジネス〜開発者まで様々なバックグラウンドを持つメンバーがいるデジタルプロダクト開発チームの議論の共通の土台とできないかの検証と試験的な導入を行いました。
イベントストーミングとは
協働的にコト、モノ、ヒトを視覚化しながら整理しドメインのモデリングをしていくワークショップ形式のアクティビティです。
- プロセスが視覚化され、共通認識を得ることができる
- 意見の相違点や暗黙にズレている認識を発見し、認識合わせができる
- チーム内でバラバラに使用されている用語が統一される(ユビキタス言語が導き出せる)
ref: EventStorming
イベントストーミングを導入しようとした背景
課題
- 7月(2021年度2Q)からBizチームとDevチームという2チームに形式上別れてしまったため、コラボレーションが薄くなってきている
- 実装の対象とするドメインで、課題解決をWebアプリケーションでどのようにしたいのかについて誰も描けていない
- (議事録は残すが)口頭ベースの議論が行われていて、認識合わせに時間がかかる
- 同じ用語でもメンバー各々で違う意味を持って話している
こういった状態でリファインメントを行っていたため、「コーナーケースどうします?」や、「そもそもこれは違うんじゃないですか…?」といったちゃぶ台返し話などが頻繁に出てしまい、リファインメントの長時間化やリテイクを引き起こしていました。
解決策として
2021年度2QのDevチームのKRの1つに「モデリングを行いそれをベースに議論ができるようになる」というものがあり、モデリングについて調べているときに出てきたのが以下の記事でした。
ref: 「Scramble! #3 FOLIO流 複雑なドメインとの戦い方」イベントレポート
ありふれたもの 、未だ見ぬもの: FOLIO プロダクト開発の現場から
のスライドにあるように弊チームでも競合サービスにはない複雑な事象についてモデリングするという話が出てきていたこと、また、イベントストーミングのキャッチアップを進めるにつれて上述した課題の解決が図れそうだと判断しました。
(同じ記事内にイベントストーミングの紹介があったためFOLIOさんでは同時期でイベントストーミングを実施されたと勝手に思っていましたが、同時期であったかは不明です)
BPMN図やUML回路図といったもののように特別な記法が必要ない、というのもBiz/Devのコラボレーションという観点から判断のポイントとして高かったです。
イベントストーミングのキャッチアップと検証
検証を行うにあたり、プロダクト開発の初期からデータモデリングを進めてくださっていた @fursich を巻き込ませてもらい、キャッチアップに参考にした記事した記事の共有・解決したい課題を伝え、開発がペンディングとなっていた事象(未だ見ぬもの)について最小構成でMiroのテンプレートを使い行うという手法をとりました。
キャッチアップに参考にした記事
Miroテンプレート
検証前の所感
- 開発者以外のメンバーとのコミュニケーションにおいて、クラス図や特定のワークフロー図よりBigPictureの方がわかりやすそう
- 開発者でなくても参加可能なのでよさそう
- BigPictureを書ききった時点で要望要件の分析不足を明らかにできそう
- Aggregate (集約)までもっていけるとデータモデリング前までの整理ができているという状態を作れそう
- 揺れのある用語を突き詰めることができるので、自然と淘汰され結果ユビキタス言語で話せるようになりそう
- 適切な粒度でやらないと爆発しそう
検証後の所感
- タイムラインでならんでる状態までだとBizメンバーでも初見で理解できそう
- 名前や概念の曖昧さ、スコープの大きさや責務境界の曖昧さで悩んでいるが、これらを可視化してBizメンバーと共有し解決する議論ができそう
- ポストイットの並びを縦にしたり横にしたり、何度もグルーピングを変えてしっくりくるところまでやるのですが、その試行錯誤プロセスがよい
- 事前に適切な(?)粒度のスコープ&コンテキストでやる必要がありそう
検証を行った結果、議論の共通の土台となり得るものだという判断にいたりました。
チームでイベントストーミングを実施
検証によって出てきた懸念や不安点を入念に潰す準備を整えて、チームで実施をしました。
チームで実施した結果、以下のようなフィードバックをもらうことができました。
- 認識合わせにとてもいいと感じました。ただ、着地するのが難しそうだとも思いました。
- 想定する機能粒度のズレの可視化ができ、共通理解を醸成する第一歩が踏み出せたと言うことでよかったと思っています。
- 時間はかかるけど、事業理解やユーザのリアルを深く考える時間としてはコスパいいのでは?と思った。
- 多様な視点が出て非常によかったと思います。慣れてきたらもっとスムーズにできそう。
- もっとビッグ・ピクチャーになるとおもうので、みんなで作り上げていきたい。
まとめ
コストやメンバー各々のイベントストーミングへの理解度など別の問題が出てきていたり、今回イベントストーミングしたものについてはまだ実装途中というのもありますが、チームの課題解決として一定の効果が出始めているように思います。出てきた別の問題については、また進展があればどこかで記事にできればと思います。
チームで実施する前に事前に行った準備などの詳しい話は明日の @fursich のアドベントカレンダーで詳しく書かれるかと思います。