Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

RDRA DDD Agile

3,742 views

Published on

越境アジャイル in 札幌。RDRA,ドメイン駆動設計,価値探索

Published in: Software
  • Be the first to comment

RDRA DDD Agile

  1. 1. ドメイン駆動設計 現場での実践報告 ギルドワークス 増田 2016年10月1日 リレーションシップ駆動要件分析+ドメイン駆動設計+アジャイル開発
  2. 2. ドメイン駆動設計の効果 役に立つソフトウエアを 確実に 効率的に ドメイン駆動設計でやらないと…
  3. 3. ドメイン駆動設計を支える技術 オブジェクト指向 インクリメンタルな設計 データクラス+機能クラスの世界から、オブジェクトの世界へ 設計レスでもなく、アップフロント設計でもない世界へ (JPA,Active Record,Entity Framework…) 技術的にはこの2つの越境が、ドメイン駆動設計のターニングポイント
  4. 4. ドメイン駆動設計と リレーションシップ駆動要件分析
  5. 5. ドメイン駆動設計の基本の活動 知識をかみ砕く 言葉を活用する モデルと実装を一致させる 第1章 第2章 第3章
  6. 6. プロジェクトを始めてみたものの 開発者が対象業務を知らない 言葉がばらばら、思いもばらばら ふわっとしてあやしげな要望 どうすればよいか?
  7. 7. そこで リレーションシップ駆動要件分析
  8. 8. リレーションシップ駆動要件分析 開発者が対象業務を学ぶ チームの言葉と思いを合わせる 実装可能なモデルを手に入れる オブジェクト指向とインクリメンタルなアプローチが ドメイン駆動設計とフィットする 実践的かつ体系的
  9. 9. 2つの越境物語 実践例の紹介 サービスの会社(スタートアップ)が本格的な業務システムに取り組んだ話 レガシーな基幹システムを抱えた会社が、サービスに取り組む話
  10. 10. 越境物語その1 アソビュー
  11. 11. サービスの会社が 業務システムに取り組む話 • アソビュー • 全国のレジャー・遊び・体験が探せる日本最大 級の検索・予約サイト • バックオフィス業務は必要最小限、かつ人間系 でがんばっているが… • 事業のさらなら発展のためには • バックオフィスのシステム充実が必須 • ただし、 • ビジネスモデルや業務フローは変わり続ける
  12. 12. 電子チケットサービス • ネット上で電子チケットの購入 • 入場時に、電子チケットの提示と「もぎり」 • 挑戦 – 金流の変更 • before : 主催会社にお金が入り、手数料を請求 • after: アソビューにお金が入り、主催会社に支払い – バックオフィス業務の複雑化 – 確実性や迅速性の要求 – バックオフィスシステムの開発経験不足
  13. 13. そこで ドメイン駆動設計 with リレーションシップ駆動要件分析
  14. 14. 「もぎり」電子チケットの購入
  15. 15. 業務を知る 言葉と思いを合わせる 実装可能なモデルを手に入れる
  16. 16. 全体の俯瞰、キーワードの洗い出し
  17. 17. 主要な関心事をとりあえず洗い出す
  18. 18. 業務の流れを追いかける
  19. 19. 業務の流れを追いかける
  20. 20. 重要な概念の発見
  21. 21. 実装可能なモデルに発展させる 商品タイプ 実体 「チケットブック」は、営業説明やヘルプに取り入れらた
  22. 22. やってみた結果 • 2か月での迅速なリリース • その後、事業もシステムも順調に成長中 • 企画部門や経営者から「チケットのような作り 方」に高い評価 • IT戦略としてのドメイン駆動設計
  23. 23. 越境物語その2 ビッグローブ
  24. 24. レガシー基幹システムを抱えた会社が サービスに取り組む話 • ビッグローブ – 1986.4 パソコン通信サービス「PC-VAN」 – 1995.2 インターネット接続サービス「mesh」 – 1996.7 総合インターネットサービス「BIGLOBE」 – 2006.7 NECから分社 – 2014.4 NECグループから独立 • 現在の主力サービス – BIGLOBE SIM • SIM差し替えでスマフォが低価格に – BIGLOBE スマホ • スマホ+回線のセットプラン – ビッグローブ光 • 速くて安心、低価格のインターネット
  25. 25. 挑戦 • 急激な事業環境の変化 • スマホ分野の激しい競争 • それに適応するための機動的なサービス投入 • ただし • レガシーな基幹システム/独自言語 • 過去のサービスと顧客のサポート
  26. 26. カオス サブシステム単位で整理をしても…
  27. 27. どうする?
  28. 28. そこで ドメイン駆動設計 with リレーションシップ駆動要件分析
  29. 29. やりはじめた時の説明資料 (抜粋)
  30. 30. リッチな ドメインモデル シンプルな ドメインモデル 実装スタイルの選択 リッチな トランザクション スクリプト シンプルな トランザクション スクリプト • 大きい(たくさんのインスタンス変数) • データの入れ物(getter/setter) • テーブルの粒度と対応 • 小さなドメインオブジェクトで役割分担 • データ+ロジックをひとかたまりに • 粒度はテーブルのカラムに近い 機能ごとの 手続き型 の記述 問題領域の オブジェクト モデル 手続指向 オブジェクト指向
  31. 31. リファクタリング モデリング プログラミング イテレーティブで発見的な活動 ドメインモデルの開発 三位一体
  32. 32. ドメイン駆動の開発プロセス 業務フロー モデルの改良 要約、骨格 画面・帳表ユースケース 属性の追加モデルの洗練 イベント 状態遷移 データモデル 初期の ラフモデル コンテキスト図 手がかかり 初日からドメインモデルの設計と実装 ロバストネス分析 必要ならシーケンス図 操作追加 Java ソース 基盤クラス追加 DDL/SQL ソース 問題領域の把握 構造化用語集
  33. 33. リレーションシップ駆動 要件定義(RDRA) ・コンテキストモデル ・業務フローモデル ・イベント/状態モデル ICONIX ・ドメインオブジェクトの発見 ・ドメインモデルの育て方 ・ロバストネス分析 ビジネスルールの発見と定義 ・業務フロー図 ・ドメインモデル ・イベント/状態モデル 問題領域を把握する 初期のラフモデルを 2時間以内で描く モデル間を関連づけ 整合性と網羅性を確保 ユースケースと実装の ギャップを埋める 三つのモデルから ビジネスルールを抽出する ヒントとテクニック
  34. 34. 実際にやってみた
  35. 35. DDD 適用サービスの歴史 2013年 2014年 2015年 Wi-Fi スポット LTE/3G 音声 Biglobe 電話 Biglobe 光 MVNO 支援 サービ ス リニュー アル ドコモ 光 LTE/3G 全部 新規 サービス LTE/3G 帯域制御 NINJA SIM ※初回S-inのみ記載。各サービスは現在 も開発中。
  36. 36. コンテキストのラフスケッチ
  37. 37. 業務フロー
  38. 38. ビックローブで初めて作ったドメインモデル
  39. 39. 変更しながらkeepしているドメインモデル
  40. 40. やってみた結果 • 第1世代 白紙からの越境 苦戦と突破 • 第2世代 手ごたえと広がり • 第3世代 それがあたりまえの方向に • 世代を超えて、現在も挑戦中
  41. 41. ドメイン駆動設計の効果 役に立つソフトウエアを 確実に 効率的に ドメイン駆動設計でやらないと…
  42. 42. ドメイン駆動設計の基本の活動 知識をかみ砕く 言葉を活用する モデルと実装を一致させる 第1章 第2章 第3章
  43. 43. プロジェクトを始めてみたものの 開発者が対象業務を知らない 言葉がばらばら、思いもばらばら ふわっとしてあやしげな要望 どうすればよいか?
  44. 44. リレーションシップ駆動要件分析 開発者が対象業務を学ぶ チームの言葉と思いを合わせる 実装可能なモデルを手に入れる オブジェクト指向とインクリメンタルなアプローチが ドメイン駆動設計とフィットする 実践的かつ体系的
  45. 45. 越境アジャイル インクリメンタルな越境 少しずつ 継続的に
  46. 46. 越境アジャイル その先にあるもの
  47. 47. ソーシャルチェンジ • どんな状況でも改善できる • どんなときでも「あなた」から改善を始められる • どんなときでも「今日」から改善を始められる エクストリームプログラミングの 「はじめに」に記された ケント・ベックのメッセージ

×