Slide 1

Slide 1 text

Sansan株式会社 部署 名前 試行錯誤しながら イベントストーミングにチャレンジした話 Sansan技術本部 技術本部 Bill One Engineering Unit 鈴木満

Slide 2

Slide 2 text

ERPパッケージベンダーを経て、2022年6月にSansan株式会社 へ入社。インボイス管理サービス「Bill One」における請求書の 発行機能の開発を担当。 技術的負債の解消とプロダクトの成長をバランスよく両立させる ことを目指し、日々開発に向き合っている。 最近福岡に移住しました。 鈴木満 Sansan株式会社 技術本部 Bill One Engineering Unit

Slide 3

Slide 3 text

請求書受領から、月次決算を加速する インボイス管理サービス「Bill One」 あらゆる請求書をオンラインで受け取り、 企業全体の請求書業務を加速する インボイス管理サービスです。

Slide 4

Slide 4 text

- イベントストーミングを試してみた背景 - イベントストーミングとは - 新規開発でイベントストーミングを試してみた - 既存のシステムにもイベントストーミングを活用 アジェンダ

Slide 5

Slide 5 text

イベントストーミングを試してみた背景

Slide 6

Slide 6 text

新しい業務ドメインの機能開発がスタート - 従来の請求業務(請求書の作成や発行)に加え、入金消込から仕訳作成 まで自動でできるように

Slide 7

Slide 7 text

- 専門的なドメイン知識が必要 - あらゆる入金のパターン(合算入金、分割入金、差額など) - 仕訳などの会計知識 - 外部システムとの複雑な連携 - 仮想口座の発行や入金通知の受信など - バッチ処理や非同期処理など、さまざまなタイミングで連携が必要 - 設計やモデリングの経験が浅いメンバーが多い 開発の課題になりそうだったポイント これらの辛みと戦うために、イベントストーミングに着目

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

イベントストーミングとは 引用元: Introducing EventStorming P.261 (Alberto Brandolini) - 業務やシステムのフローを可視化するためのワークショップ - ドメインエキスパートと開発者が共同で行う - ビジネス要求や課題点を明らかにし、ソフトウェア設計に活用する

Slide 10

Slide 10 text

- 最近出たさまざまなDDD本でも登場 - 関数型ドメインモデリング: 2024年6月28日(Scott Wlaschin) - [入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ: 2024年7月1日(増田亨 他) - ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法: 2024 年7月20日(Vlad Khononov) - ユビキタス言語やドメイン知識が対話を通して自然と形成されるため、 ドメインモデリングの手法としても活用される イベントストーミングとドメイン駆動設計

Slide 11

Slide 11 text

イベントストーミングで解決したかったこと 元々の課題 イベントストーミングへの期待 専門的なドメイン知識 外部システムとの複雑な連携 モデリング・設計の経験が浅い ドメインエキスパート を巻き込んだ対話 一枚の絵に図示して整理できる ドメインモデリングの肝となる ユビキタス言語や集約を全員で決める

Slide 12

Slide 12 text

新規開発でイベントストーミング を試してみた

Slide 13

Slide 13 text

はじめてのイベントストーミング - タイミング - 入金消込開発のキックオフ - 参加者 - ドメインエキスパート(PdMや経理経験者)2名 - 開発メンバー10名 - 時間 - 3時間程度

Slide 14

Slide 14 text

イベントストーミングの流れ(ざっくり) 1. イベント(業務的な意味のある出来事) 1. ホットスポット(留意点・懸念点など) ※ここは各ステップで都度行う 1. コマンド(イベントをトリガーした操作) 1. アクター (コマンドを発生させた人やシステム) 1. リードモデル・ポリシー (アクターがコマンドをするきっかけ) 1. 集約(一貫性のある単位) 入金が消し 込まれた 入金が 通知された 入金を 通知する 入金が 通知された 入金を 通知する 住信SBI ネット銀行 入金が 通知された 入金を 通知する 住信SBI ネット銀行 通知ポリシー - 振込時に即時 - 夜間や休日は停止 入金が 通知された 入金を 通知する 住信SBI ネット銀行 通知ポリシー - 振込時に即時 - 夜間や休日は停止 入金 入金が 通知された 入金が通知される タイミングは? 請求書が 届いた

Slide 15

Slide 15 text

成果物 - 全体像(規模感や複雑さ)やコンテキスト境界が見えてきた! - ドメインエキスパートとの対話も通して、知識も伝播された! - 開発を進める上で課題になりそうな点がわかってきた! - 良かった点は色々あるが、もう少し上手くやれたのでは?というモヤモヤも・・・

Slide 16

Slide 16 text

振り返りで改善点を探す - イベントストーミングの進め方に問題がある - 細かい議論に入りがちで本筋から外れてしま う場面があった - 特定の人が議論の中心になってしまった - 業務の解像度がところどころ低い - 全体を見るには単純に時間が足りなかった - モデリングや設計に活用できてない - イベントストーミングの結果を後続の作業に どう活かすか?

Slide 17

Slide 17 text

改善点1:イベントストーミングの進め方 対策: イベントストーミングのフェーズを意識してスコープを決めて、フ ェーズごとに必要な参加者を変える 参加者の範囲 が広い フォーカスの深さ ビッグピクチャー イベントを洗い出して時系列に並べる ビジネスプロセスモデリング コマンドやアクターを追加して業務フローを整理 ソフトウェアシステムモデリング 集約やコンテキストの定義・深堀り イベントストーミングのフェーズ 引用元: [入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ (2.3 イベントストーミング)

Slide 18

Slide 18 text

改善点2:業務の解像度がところどころ低い 対策:スプリントに組み込み、繰り返し少しずつ解像度を上げていく イベント ストーミング ドメイン モデリング 詳細設計・ 実装 イベント ストーミング ドメイン モデリング 詳細設計・ 実装 イベント ストーミング ドメイン モデリング 詳細設計・ 実装 スプリント1 スプリント2 スプリント3

Slide 19

Slide 19 text

- イベントストーミングの主目的を、業務の流れを整理してドメイン知識 を獲得することに限定してしまっていた - これだけだと知識の習得に留まってしまい、後続の設計作業の インプットに活用できていなかった - 結果として、ドメインモデリングの段階では習得したドメイン知識を 元に、ゼロから設計をし直していた 改善点3:モデリングや設計に活用できてない

Slide 20

Slide 20 text

改善点3:モデリングや設計に活用できてない 入金を消し込む 入金が消し込まれ た 消込 コマンド 集約 イベント - ユースケース - ドメインの振る舞い - 集約 - エンティティ - 値オブジェクト - ドメインイベント そのまま 変換 そのまま 実装 対策: イベントストーミングの成果物をそのままドメインモデリングに活用する 設計資料(クラス図など) ソースコード イベントストーミング図

Slide 21

Slide 21 text

既存のシステムにも イベントストーミングを活用

Slide 22

Slide 22 text

イベントストーミングの使い所 - Build a ubiquitous language - Model the business process - Explore new business requirements - Recover domain knowledge - Explore ways to improve an existing business process - Onboard new team members 引用元: Learning Domain-Driven Design (P. 196 When to Use EventStoming) 既存の部分の 改善にも活用できそう

Slide 23

Slide 23 text

既存の請求業務(請求書発行)のフローも作成 - ソースコードからドメインイベントと集約を機械的に抽出し、そのままイベン ト・集約として付箋化 - 残りの要素(コマンド・アクター・ポリシー等)を付け加えていく - (あるべきは一旦無視し、既存の仕様をそのまま落とし込んだ) - 既存の請求業務と入金消込業務のイベントストーミング図を統合し、債権管理 業務の全体フローを作成

Slide 24

Slide 24 text

債権管理業務全体(発行から入金消込まで)の図が完成

Slide 25

Slide 25 text

- 歪な場所を特定してホットスポットを貼り、改善を検討する - 1つのコマンドから複数の集約が発生している - 似たようなドメインイベントがある(統廃合の検討) - 命名がおかしい、揺らぎがある - 新しく入ってきたメンバーへのオンボーディングや、他チームへの共有 どう活用するか?

Slide 26

Slide 26 text

まとめ

Slide 27

Slide 27 text

やってみてどうだった? - ドメインモデリングに対する心理的なハードルが下がった - 正解の分からないアートの領域というイメージがあった - 孤独な作業ではなく、全員で一体感をもって進められる - 全体が一枚の絵にまとまっている安心感 - 業務プロセスやシステム間の連携が視覚的に整理され、全体の流れが明確になった - 問題点や改善点が一目で把握でき、議論や意思決定がスムーズに進むようになった - イベントストーミングという手法や活用方法に工夫の余地が無数にある - 回数を重ねるごとに、もっと改善したい!という気持ちに - チームのカラーにあったやり方を模索すると良さそう

Slide 28

Slide 28 text

No content