Slide 1

Slide 1 text

本当にはじめられた イベントストーミング ―実践してみて見えたこと― 2019.08.14 Scramble! #3 FOLIO流 複雑なドメインとの戦い方

Slide 2

Slide 2 text

これはアンサーソング 同イベントで@yoskhdiaが発表した 明日からはじめられるEventStorming https://speakerdeck.com/yoskhdia/ lets-try-eventstorming に捧げます

Slide 3

Slide 3 text

わたし •よこな •Twitter: @ihcomega (あとでここに資料流します) •チキン南蛮が好きです

Slide 4

Slide 4 text

10秒でおさらい command aggregate event read model policy actor external system issue 発生するイベント 連携する外部システム イベントを発生させるコマンド コマンドを実行するアクター アクターの判断材料 コマンドのトリガー 集約 イシュー この順に 付箋を貼り出す

Slide 5

Slide 5 text

実践編でお伝えすること •いつ、どんなときにやればいいの? •やってみてどうなの?

Slide 6

Slide 6 text

 一、 イベントストーミングの 分類

Slide 7

Slide 7 text

イベストのタイプ 多様 一様 参加者の職種 (バックグラウンド) 低い 高い 視点の 高さ

Slide 8

Slide 8 text

FOLIOでやったもの 多様 一様 参加者の職種 (バックグラウンド) 実績なし ① ② ③ 低い 高い 視点の 高さ

Slide 9

Slide 9 text

① 複数職種で: 機能のストーリー確認 ② エンジニアで: 役割分担の検討 ③ エンジニアで: 設計の準備として FOLIOでやったもの 多 一 低 高 実績なし ① ② ③

Slide 10

Slide 10 text

① 複数職種で: 機能のストーリー確認 ② エンジニアで: 役割分担の検討 ③ エンジニアで: 設計の準備として ①と③を扱います FOLIOでやったもの 多 一 低 高 実績なし ① ② ③

Slide 11

Slide 11 text

 二、 機能のストーリー確認

Slide 12

Slide 12 text

様々な職種でものづくり 証券 バックオフィス カスタマー サービス コンプライアンス 経営企画 QA エンジニア デザイナー セキュリティ 投資戦略

Slide 13

Slide 13 text

足並み揃えたいが… •大人数で会議をしてみる •アウトプットしづらい •当事者意識が薄れる •マネージャーが調整を頑張る •時間も手間もかかる •漏れる

Slide 14

Slide 14 text

イベストチャンス! 何らかの機能やプロジェクトなど、 フローやストーリーがあるものを取り扱おうとして •関係者が多く調整が多発するとき •何から始めよう?と思ったとき •情報整理の術について迷っているとき •全体を可視化したいとき

Slide 15

Slide 15 text

command aggregate event read model UI policy actor external system issue スコープ

Slide 16

Slide 16 text

イベントとイシューに しぼって実施した command aggregate event read model UI policy actor external system issue スコープ

Slide 17

Slide 17 text

結果

Slide 18

Slide 18 text

よいところ •パラレルに作業するため、参加者全員 が効率よくアウトプットできる •15人ほどでやったこともある •用語の統一や知識の移転ができる •早い段階で強力な共有コンテキス トを作れる •共有の手間や漏れリスクが減る

Slide 19

Slide 19 text

よいところ •苦労せず視覚的な成果物が生まれる このへんに ʘイシューが多いʗ あのオレンジ ʘって…?ʗ 右側は割と ʘ楽そうʗ

Slide 20

Slide 20 text

工夫が必要なところ •急にやろうとすると参加者の時間調整 に少々苦労する •参加者の必須レベルを見極めて、 途中入退室可としたり、1回の中で パート分けをしたりする コンプライアンス部と 開発メンバーが 必須のパート 全員でやるパート

Slide 21

Slide 21 text

工夫が必要なところ •成果物のポータビリティがとても低い 上に場所を取る •壁リソースが潤沢なら、移動しな い前提で場所選びをした方がよい •模造紙を活用して持ち運んだり、 パノラマ写真を撮ったり、歯を食 いしばってデジタル化したりする •成果物を継続的に使うか見極める

Slide 22

Slide 22 text

ファシリテーション •必ず準備しよう •ゴールやスコープは? •誰に参加してもらうべきか? •参加者の文房具リテラシーをあげるの はオススメ •付箋の剥がし方 •水性・油性マジックの違い

Slide 23

Slide 23 text

ファシリテーション •参加者の迷いを払拭しよう •「何このイベント?」と思ってい る人を導く(ただし、思考を狭めな いよう多くは指示しない) •誤りや重複を気にしないよう安心 させる •発言を付箋化するよう促す

Slide 24

Slide 24 text

ファシリテーション •意外と疲れるので、元気を保てる工夫 をしよう(参加者も疲れる) •飲み物やおやつを用意する •休憩を取る •動きやすい格好推奨(ヒールで足が棒になった…)

Slide 25

Slide 25 text

ファシリテーション •イベスト文化ができていくので、毎度 大きくやり方を変えない方がベター •たとえば、FOLIOでは「イシュー = ピンクの付箋」という認識が生 まれつつある •「あのへんにピンクが多い…」 •「このピンクをやっつけるぞ」

Slide 26

Slide 26 text

 三、 設計の準備

Slide 27

Slide 27 text

メールアドレスの再設定 メアドが使えず ログインできぬ… 資産をお預かり中 ログインを諦めていただく わけにはいかない

Slide 28

Slide 28 text

メールアドレスの再設定 ご本人様確認を します

Slide 29

Slide 29 text

メールアドレスの再設定

Slide 30

Slide 30 text

メールアドレスの再設定 …という機能を開発する際に用いた

Slide 31

Slide 31 text

開発あるあるな悩み •複雑な仕様と戦うための知識レベルが チーム内でバラバラである •設計をいきなり手分けするのは難しい •決まったことの記録や共有が不十分な ことがある

Slide 32

Slide 32 text

イベストチャンス! •何から始めよう?と思ったとき •チーム内で知識移転したいとき •設計の前に情報整理しておきたいとき •タスクの分解に悩んだとき

Slide 33

Slide 33 text

command aggregate event read model UI policy actor external system issue スコープ

Slide 34

Slide 34 text

(イベストの登場人物ではないUIを除き) すべてを扱った command aggregate event read model UI policy actor external system issue スコープ UI

Slide 35

Slide 35 text

結果

Slide 36

Slide 36 text

可視化・情報共有・知識移転などのメリットは 前半の話と同様にもちろん存在する では、詳細な設計をするにあたり •イベストが役立ったことは? •イベストだけではイマイチだった・足り なかったことは? ※バックエンドにフォーカスした内容です ここまではいいとして…

Slide 37

Slide 37 text

QA イベストのその先へ ì í î ï ð ï ñ ò î ó ô õ ì î ö ÷ ø î ó ù ñ ð ú ñ ð 記 述 ü ñ ú î ð 図 画 面 ÿ ! ñ ÷ " ì î # î $ ER 図 見 積 ' ( ) 計 画 精 緻 化 開 発 ÷ " ì î $ ! , - . ï / 0 , õ î ï ì ü 1 ñ 2 解 決 ) 仕 分 3 4 ð ï 設 計 書 6 ñ ô

Slide 38

Slide 38 text

見 積 ' ( ) 計 画 精 緻 化 QA イベストのその先へ ì í î ï ð ï ñ ò î ó ô õ ì î ö ÷ ø î ó ù ñ ð ú ñ ð 記 述 ü ñ ú î ð 図 画 面 ÿ ! ñ ÷ " ì î # î $ ER 図 開 発 ÷ " ì î $ ! , - . ï / 0 , õ î ï ì ü 1 ñ 2 解 決 ) 仕 分 3 4 ð ï 設 計 書 6 ñ ô ダイレクトに イベストが活きるのは このあたり

Slide 39

Slide 39 text

イシューの整理

Slide 40

Slide 40 text

イシューの整理 何をした?どうだった? •挙がったイシューをすぐ解決するか、 解決に向けた計画を立てた •そのプロジェクトで「やること」と 「やらないこと」を明確に分けた •既にリストアップは済んだ状態なので スムーズ◎ VS データ化が大変△

Slide 41

Slide 41 text

command aggregate event read model UI policy actor external system read model UI external system aggregate issue command policy actor イシューの整理 イベストとの関係

Slide 42

Slide 42 text

ドメインモデリング

Slide 43

Slide 43 text

ドメインモデリング 何をした?どうだった? •アウトプットは  概念図 •イベストの結果は あまり活用でき ず、イチから検討 してしまった

Slide 44

Slide 44 text

•イベストで出た境 界の中身を埋める ようなアプローチ ができたかも •イベスト中にこと ばの定義を明らか にするプロセスが 足りなかったかも aggregate ドメインモデリング 次はこうしたい

Slide 45

Slide 45 text

command aggregate event read model UI policy actor external system issue read model UI external system command policy actor ドメインモデリング イベストとの関係 event

Slide 46

Slide 46 text

ユースケース記述

Slide 47

Slide 47 text

•イベストの結果を 元に丁寧に書いた •QAメンバーへの仕 様共有、テスト設 計書作成 •見積もりや計画 に役立った ユースケース記述 何をした?どうだった?

Slide 48

Slide 48 text

ユースケース記述 次はこうしたい •参加メンバーにとっては価値が薄い可 能性があるため、浸透の努力をしたい •非参加メンバーへの伝達手段 •メンテし続けるドキュメント •後世への記録 として価値はあるし、イベストを していると書き起こしやすい

Slide 49

Slide 49 text

command aggregate event read model UI policy actor external system issue read model UI external system aggregate ユースケース記述 イベストとの関係

Slide 50

Slide 50 text

ユースケース記述 イベストとの関係

Slide 51

Slide 51 text

command event policy actor event アクター 目的 事前条件 メインフ ロー 代替フロー 事後条件 command policy ユースケース記述 イベストとの関係

Slide 52

Slide 52 text

ユースケース記述 イベストとの関係 ※説明用に変更・簡略化しています

Slide 53

Slide 53 text

設計の準備 まとめ

Slide 54

Slide 54 text

設計とイベスト command aggregate event read model UI policy actor external system read model UI external system issue ユースケース記述 ドメイン モデリング イシュー 整理

Slide 55

Slide 55 text

設計とイベスト command aggregate event policy actor external system external system issue ユースケース記述 ドメイン モデリング イシュー 整理 デザイン ? read model UI

Slide 56

Slide 56 text

設計とイベスト command aggregate event policy actor external system external system issue ユースケース記述 ドメイン モデリング イシュー 整理 デザイン ? read model UI 設計を進めるのに 必要な思考の過程を 複数人で集中して 辿ることができる

Slide 57

Slide 57 text

よいところ •前半の計画や設計 を手厚く行う助け となり、後半でス ピードが出た  (一番左がすごいことになってます   が、正直にお見せします) •いわゆる認識齟齬 による手戻りはな かった 計画 実績 時 間 (グラフはJIRAより取得)

Slide 58

Slide 58 text

•参加したメンバー 内での共有が強力 な反面、外への共 有は意識的にやる 必要がある 工夫が必要なところ border ? … ?

Slide 59

Slide 59 text

 四、 おわりに

Slide 60

Slide 60 text

イベストはおすすめか? •工夫は要るがまずやってみて損はない •少しでも良いなと思ったら、何度か やってみると洗練されていく •アクティビティそのもののみならず、 「イベストで出たものをどう活用して いくか?」を考えることに価値がある し、ここにチームごとのカラーが出る

Slide 61

Slide 61 text

参考文献 • 「新しいモデリング手法: EventStorming (イベントストーミング) をはじ めるための準備」from yoskhdia’s diary https://yoskhdia.hatenablog.com/entry/2018/11/09/200556 • Alberto Brandolini「Introducing EventStorming」 • ダグ・ローゼンバーグ、マット・ステファン「ユースケース駆動開発実践ガ イド」

Slide 62

Slide 62 text

T H A N K Y O U