Slide 1

Slide 1 text

経験者がいない状態で、戦略的 DDDを現場でやってみた話 @Object-Oriented Conference 2020.02.16 岡本滉平 #ooc_2020 #ooc_e 1

Slide 2

Slide 2 text

自己紹介 岡本滉平 ・シンプレクス株式会社 ・Javaがはじめて触った言語です ・昨年終わりからScrumチームで開発してます ・最近競プロはじめました ・twitter : @koko72_flavor 今回のトーク採択が決まって慌ててアカウント作りました 2

Slide 3

Slide 3 text

目的 • 戦略的DDDがやりたい • 知っているけど最初何したらいい か分からない という方が第一歩を踏み出せる手助 けができればと思っています。 3

Slide 4

Slide 4 text

本日のおおまかな流れ 4

Slide 5

Slide 5 text

本日のおおまかな流れ いきなりBounded Contextを探すこと になった経緯と理由をお話します 5

Slide 6

Slide 6 text

いきなり!DDD 6

Slide 7

Slide 7 text

~今のPJの期限が終わりそうなとある日~ • 今使っているシステムを複数のScrum Teamで 開発できるように分割したい • これからBounded Contextを見つける活動に専 属でかかわってほしい 7

Slide 8

Slide 8 text

• Scrumという言葉とスクラムイベントは知って いる(けど経験はない) • プロジェクト型開発の経験しかない • マイクロサービスも言葉しか知らない • DDDという単語聞いたことない ←当時の私 8

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

「わかりました!!」 10

Slide 11

Slide 11 text

Bounded Context モデリング部 11

Slide 12

Slide 12 text

なぜBounded Contextを 見つけたいのか 12

Slide 13

Slide 13 text

Scrum Team Product 13

Slide 14

Slide 14 text

Scrum Team Product 14

Slide 15

Slide 15 text

Product Scrum Team Scrum Team 15

Slide 16

Slide 16 text

Scrum Team Product Scrum Team Product 16

Slide 17

Slide 17 text

Scrum Team Product Bounded Context Scrum Team Product 17

Slide 18

Slide 18 text

実際に行動したこと 分かったこと 本編です! 18

Slide 19

Slide 19 text

具体的には以下の三冊 本を読む。ネットサーフィンする。 19

Slide 20

Slide 20 text

ちょっと経ってから以下も読みました(おすすめ) 本を読む。ネットサーフィンする。 20

Slide 21

Slide 21 text

ググったり本を読んでもBounded Contextの見つけ方 は書いていない!! 〇そもそもDDDが何かを知った 〇Bounded Contextという概念を理解できた △日本語の文献が少ない。時間はかかるが、英語の勉強 になる ×本は一緒に議論できる人がいないと読むのがしんどい ×英語で読まないと不自然な日本語を解読するのがスト レス 本を読む。ネットサーフィンする。 21

Slide 22

Slide 22 text

Antonio Brandolini氏 Martin Fowler氏 Sam Newman氏 Vaughn Vernon氏 →twitterで質問してみる 有識者に聞いてみた。 22

Slide 23

Slide 23 text

Antonio Brandolini氏 Martin Fowler氏 Sam Newman氏 Vaughn Vernon氏 “Look for distinct business capabilities. Who would you have to ask to gain insight on those, and what is their responsibility?” Business Capabilityに着目するとよい → Business Capabilityはそのビジネスが何をできるか 有識者に聞いてみた。 23

Slide 24

Slide 24 text

Business Capabilityというキーワードを手に入れた 〇ダメもとで試したが、価値があった 〇モチベーション向上 ×勇気が必要 有識者に聞いてみた。 24

Slide 25

Slide 25 text

毎日一時間の会議だけだと停滞。。 25

Slide 26

Slide 26 text

何はともあれ、やってみないと分からない。 実際に全員で手を動かしてみる。 既存機能を付箋に書いて、ホワイトボードに張り付けて いって、グルーピングしていく 自作のワークショップを開いてみる。 26

Slide 27

Slide 27 text

・客の呼び込み ・席への案内 ・注文をとる ・キッチンに注文を連携する ・料理を作る ・ドリンクを作る ・料理を提供する ・お客さんと絡む ・バッシング ・食器を洗う ・会計 ・席のセットアップ 自作のワークショップを開いてみる。(例) ・タイムカードを切る ・手洗いをする ・仕込みをする ・食材の発注をする ・食器の発注をする ・新レシピを考案する ・賄いを作る ・給料を支払う ・店内の清掃を行う 27

Slide 28

Slide 28 text

・客の呼び込み ・席への案内 ・注文をとる ・キッチンに注文を連携する ・料理を提供する ・お客さんと絡む ・バッシング ・会計 ・席のセットアップ 自作のワークショップを開いてみる。(例) ・タイムカードを切る ・手洗いをする ・店内の清掃を行う ・仕込みをする ・料理を作る ・ドリンクを作る ・賄いを作る ・食器を洗う ・新レシピを考案する ・給料を支払う ・食材の発注をする ・食器の発注をする 接客 作る 日常業務 商品開発 経理 食器管理 在庫管理 28

Slide 29

Slide 29 text

自作のワークショップを開いてみる。(例) 接客 作る 日常業務 商品開発 経理 食器管理 在庫管理 29

Slide 30

Slide 30 text

自作のワークショップを開いてみる。(例) 接客 作る 日常業務 商品開発 経理 食器管理 在庫管理 30

Slide 31

Slide 31 text

手を動かすことで、疑問点が浮き彫りになった 〇机上で会話するより、実際に手を動かしてアウト プットを出した方が生産的 〇参加者全員の主体性を引き出せた ×準備が大変 自作のワークショップを開いてみる。 31

Slide 32

Slide 32 text

Eventstormingとは ・Albelto Brandoliniが考案したワークショップ ・DDDD本でも紹介 Eventstormingをやってみる。 32

Slide 33

Slide 33 text

Eventstormingとは ・Albelto Brandoliniが考案したワークショップ ・DDDD本でも紹介 ビジネスの流れに着目してビジネスドメインをワーク ショップ形式でモデリングしていく手法 • 対象のビジネスドメイン全体を時系列で並べるこ とで、参加者の視座を引き上げる • ドメインの理解、モデリングを高速で実現できる • 議論しながらモデリングすることで、ビジネスド メインの捉え方の違いを明らかにできる Eventstormingをやってみる。 33

Slide 34

Slide 34 text

※イメージ図です 34 EventStorming Big Picture - Photo credits Alberto Brandolini

Slide 35

Slide 35 text

業務の全体像を共有しつつモデリングできた 〇明確に何をすればいいか表現されているので、進行 しやすい 〇実績あるワークショップで、全員の意見が出しやす いように作られている △日本語の文献が皆無なので、英語で読まなければな らない。が、勉強にはなる。 ×場所の準備が大変 Eventstormingをやってみる。 35

Slide 36

Slide 36 text

・自作ワークショップ ・Eventstorming の成果物をmergeして我々の考える境界を引けた 結果 36

Slide 37

Slide 37 text

・自作ワークショップ ・Eventstorming の成果物をmergeして我々の考える境界を引けた 結果 37

Slide 38

Slide 38 text

振り返ってみて まとめ 38

Slide 39

Slide 39 text

兎にも角にも全員で経験を積むのが大事 ・経験者がいないので、「どうやればいいか」を詳細に 話し合い続けてもフィードバックが得られない →やってみれば、学びが得られるので、それをもとに次 のアクションにいかせる ・まずやってみようという雰囲気になれたのがよかった 39 まとめ

Slide 40

Slide 40 text

40 まとめ Bounded Contextは引かれているもの(reactive) ではなく Bounded Contextは自分たちで引くもの(proactive) →だから、見つけ方が具体的に書いていない 参加者全員で作り上げるものなので、こうすれば見つけ られるという正解はない。 →なので、なおさら全員で手を動かすことが大事

Slide 41

Slide 41 text

41 Bounded Context is not defined, We define the Bounded Context

Slide 42

Slide 42 text

ご清聴 ありがとうございました 42