Upgrade to Pro — share decks privately, control downloads, hide ads and more …

経験者がいない状態で、戦略的DDDを現場でやってみた話/ OOC2020

F1aa6b846cd5e9d6ae5cd5f93aec7dcc?s=47 kohei.okamoto
February 16, 2020

経験者がいない状態で、戦略的DDDを現場でやってみた話/ OOC2020

OOC2020での登壇用資料です。

プロポーザルは以下リンクから。
https://fortee.jp/object-oriented-conference-2020/proposal/68aed814-c5b4-4662-bcc3-40345ad09612

F1aa6b846cd5e9d6ae5cd5f93aec7dcc?s=128

kohei.okamoto

February 16, 2020
Tweet

Transcript

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

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

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

  4. 本日のおおまかな流れ 4

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

  6. いきなり!DDD 6

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

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

    8
  9. 9

  10. 「わかりました!!」 10

  11. Bounded Context モデリング部 11

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

  13. Scrum Team Product 13

  14. Scrum Team Product 14

  15. Product Scrum Team Scrum Team 15

  16. Scrum Team Product Scrum Team Product 16

  17. Scrum Team Product Bounded Context Scrum Team Product 17

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

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

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

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

    レス 本を読む。ネットサーフィンする。 21
  22. Antonio Brandolini氏 Martin Fowler氏 Sam Newman氏 Vaughn Vernon氏 →twitterで質問してみる 有識者に聞いてみた。

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

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

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

  27. ・客の呼び込み ・席への案内 ・注文をとる ・キッチンに注文を連携する ・料理を作る ・ドリンクを作る ・料理を提供する ・お客さんと絡む ・バッシング ・食器を洗う

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

    ・タイムカードを切る ・手洗いをする ・店内の清掃を行う ・仕込みをする ・料理を作る ・ドリンクを作る ・賄いを作る ・食器を洗う ・新レシピを考案する ・給料を支払う ・食材の発注をする ・食器の発注をする 接客 作る 日常業務 商品開発 経理 食器管理 在庫管理 28
  29. 自作のワークショップを開いてみる。(例) 接客 作る 日常業務 商品開発 経理 食器管理 在庫管理 29

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

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

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

  33. Eventstormingとは ・Albelto Brandoliniが考案したワークショップ ・DDDD本でも紹介 ビジネスの流れに着目してビジネスドメインをワーク ショップ形式でモデリングしていく手法 • 対象のビジネスドメイン全体を時系列で並べるこ とで、参加者の視座を引き上げる •

    ドメインの理解、モデリングを高速で実現できる • 議論しながらモデリングすることで、ビジネスド メインの捉え方の違いを明らかにできる Eventstormingをやってみる。 33
  34. ※イメージ図です 34 EventStorming Big Picture - Photo credits Alberto Brandolini

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

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

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

  38. 振り返ってみて まとめ 38

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

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

    →なので、なおさら全員で手を動かすことが大事
  41. 41 Bounded Context is not defined, We define the Bounded

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