🎃

新たな機能開発をする前にイベントストーミングをしてみたら良かったので共有したい

2024/08/06に公開

はじめに

株式会社CastingONEでバックエンドエンジニアをしている しんのすけ と申します。
今回、新しい機能を開発する前に私のチームでイベントストーミングをやってみたところ、とても良い成果を得られたので、こちらで共有させて頂きます。

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

イベントストーミング のサイトには以下のような説明があります。

EventStorming is a flexible workshop format for collaborative exploration of complex business domains.

簡潔に抜粋すると「複雑なビジネスドメインを探求するワークショップ」となりますが、具体的にはドメイン内のイベントの流れとそれに関わるユーザーの操作、外部システム、関連するデータとその制約などをまとめることで、複雑なビジネスドメインを整理することができます。

イベントストーミングについての概要や進め方については他の記事に記載がありますので、こちらでは省略をさせていただきメンバーの状況や新機能の開発内容の前提条件を踏まえて実施した結果、どのような利点があったかを紹介させていただきます。

以下の記事にて詳細に記載されており、実際にイベントストーミングをする際に参考にさせていただきました。
https://zenn.dev/yamachan0625/books/ddd-hands-on/viewer/chapter5_event_storming

なぜイベントストーミングを実施したのか(前提条件)

新たな機能を開発をするにあたり、既存のシステムの一部を利用できることがわかったため、その既存システムの理解を深めるとともに新規機能周りの情報を整理することでよりスムーズにタスクに取りかかれると考え、実施しました。
また、イベントストーミングはチームとしては初めての取り組みでもあったため、トライアルで実施してみるという意味合いもありました。

イベントストーミングをした結果

使用したツール

今回はブレインストーミングに適したFigmaFigJamを使って実施しました。
Figmaはバーチャルの付箋を使ってオンライン上のボードに情報をまとめられるため、色ごとにイベントストーミングの要素(ドメインイベントやコマンド、アクターなど)を分けることができ、視覚的にわかりやすかったです。
以下が実際の一部を抜粋した画像です。(分岐も綺麗にまとめることができ、システムの流れがとてもわかりやすいです)

イベントストーミングをして得られたこと

イベントストーミングを実施したことで、以下のメリットがありました。

  • 情報が整理されたことで、実際には不要だったタスクと、本当に必要なタスクを区別できたため、より正確な開発期間の見積もりができた
  • 今回はバックエンドのメンバーで実施したので、関わりがあるインフラの深いところまで議論ができた
  • 全体像をバックエンドメンバーで理解を深められたため、コードレビューがより精度の高いものとなった

イベントストーミングを進めるにあたっての方針

  • 詳細な仕様が決まっていないと進められない箇所もあるため、そこは「HotSpot」として一旦飛ばすようにした

イベントストーミングをしてみての気づき

参加メンバーによっては、イベントストーミングの一部の要素を省略して進める方が理解しやすいと感じました。特に、集約(Aggregate)はデータに関連する内容なので、バックエンドメンバーのみが関わることが多いため、PDMやデザイナーも含めての実施の場合は考慮せずに進める方が良いかもしれません。

まとめ

今回はイベントストーミングをしてみて得られたことを記載しました。
以下に当てはまる方やチームはイベントストーミングをしてみると恩恵を受けれるのではないでしょうか。

  • タスクの計画がうまくできなくて悩んでいる
  • 入社歴が若いメンバーが多いチームで開発をする
  • 複雑な機能開発を行う予定
  • チームでのワークショップやコラボレーションの方法を探している

また、今回はバックエンドエンジニアのみで実施しましたが、エンジニアだけでなくデザイナー、PDMとともに実施することで様々な視点から情報を整理することができます。

ぜひ、この記事を読んでいただき、実際にイベントストーミングを試してみて、より機能開発がしやすくなれば幸いです。

Discussion