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.

20150616 dev love発表資料

2,593 views

Published on

  • @Mao Ohnishi いろいろあったんですね。太陽に向かってがんばりましょうw。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 増田さん コメントありがとうございます。今回の発表ではしゃべらかなったんですが、失敗後の次サービスがなかなか決まらず、チームとして迷走していた時期がありました。そんな時もDDDとは直接関係ないんですが、チームの方向性に関して相談に乗ってもらい、つらい時期から抜け出せたことは今でも覚えています。本当に出会えてよかったなっと思っています。これからもお世話になる機会があるので、よろしくお願いします。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 大西さんや安西さんたちと取り組み始めた頃を、なつかしく思い出しました。さらっと書いてあるけど、プレッシャーの中での試行錯誤、ほんとうにたいへんでしたよね。そこを突き抜けた大西さんたちは、ほんとうにすばらしいです。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

20150616 dev love発表資料

  1. 1. ビッグローブ × DDD 〜ドメイン駆動設計の現場〜 ファーストサービスのリリースまでの活動
  2. 2. 自己紹介 氏名 大西 真央(@mmmmao0530) 組織としての役割 DDD布教活動 チームとしての役割 リードエンジニア(技術リーダー) 最近の関心ごと ・効果的なドメインモデル作成 ・チームビルディング
  3. 3. 太陽系戦略 Wifi 0A0 モバイル コラボ関連会員 VAS特典 商品契約 トリトン 冥王星海王星 土星 木星 火星地球 ドメイン駆動設計の拡大 認証 金星 第二 世代 時間軸:2年 今回話すところ
  4. 4. アジェンダ ① ファーストリリースまでの道のり ② DDD導入後の変化・成果
  5. 5. ファーストリリース までの道のり
  6. 6. 概略 2013/06 2014/02
  7. 7. ①DDD手法の模索
  8. 8. 増田さん DDD導入支援として、外部講師を呼んで 週1回くらいのペースで、支援してもらった。 DDDのコンセプトを説明 具体的なDDDの進め方を説明 ドメインモデル・コードのレビュー
  9. 9. 実践の場 2013年2Qに新サービスが開始予定 新旧のアーキテクチャで平行開発 あわよくば、新でリリースする(はずだった)
  10. 10. 新サービスの内容
  11. 11. 新サービスの仕様 その① ① 「BIGLOBE LTE・3G」もしくは「BIGLOBE 3G」の契約者が利用可能。 ② 利用する端末のMacアドレスの登録・変更・削除の管理が可能。 ③ 「BIGLOBE LTE・3G」もしくは「BIGLOBE 3G」を解約すると、連動して対 象のMacアドレスも削除。 ④ Macアドレスの変更可能回数は月2回まで(同月内の削除⇒登録も変 更とみなす)
  12. 12. 新サービスの仕様 ⑤ 登録できるMacアドレス数は、 「BIGLOBE LTE・3G」もしくは「BIGLOBE 3G」の料金プランによって異なる。 ⑥ 登録されたMacアドレスで、WiFiを利用可能にする。 ⑦ WiFi利用実績が90日間なければ、Macアドレスが削除。
  13. 13. 開発チームの編成 新アーキテクチャチーム 旧アーキテクチャチーム 相互連携
  14. 14. まず、初めにやったこと 守破離の 守を実践
  15. 15. Biglobeで作られた初めてのドメインモデル アプリケーション層 ドメイン層 インフラストラクチャ層 今見ると、 関連がないので よくわからない ドメインモデル エンティティとか 値オブジェクト
  16. 16. ドメインモデル⇔コードへ ①同じ機能を 個人ごとに開発 ②開発チームで 気づきの共有 ③個人の開発に フィードバッグ ④増田さんに 質問・レビュー ⑤作ったやつを壊して 0から開発
  17. 17. 意識した点 手続き型に縛られないために、オブジェクト指向設計に完全に振り切って みた。 プリミティブな値は、全て値オブジェクトでラッピング Getter・Setter禁止 1行につき1ドットまで 可能な限りIF文を除外 などなど ※オブジェクト指向エクササイズとほぼ同じ考え方を導入。
  18. 18. 結果 リリース断念 旧のアーキ テクチャを リリース アプリケーション コードが 間に合わず インフラが 間に合わず
  19. 19. 次サービスへの万全の準備 リリースできなかったサービスを最後まで完遂(未リリース) アーキテクチャ全体コンセプトの再整理 アプリケーションから利用されるライブラリの整理 インフラの整備 ビルドツールの変更(MavenからGradle)
  20. 20. ②ファーストリリースへ
  21. 21. 対象サービス 失敗したWi-Fiスポットに再チャレンジ 旧→新にアーキテクチャをリニューアル 機能強化 を同時に実施。
  22. 22. チーム編成 新アーキテクチャチーム:5名 旧アーキテクチャチーム:3名 融 合 一つのチーム:8名
  23. 23. 1チームにした理由 今回、失敗すると DDD導入活動が白紙に なる可能性があったので、 自分たちで退路を断った。
  24. 24. 僕達の心境・状況
  25. 25. 開発したモデル 守破離の破を ちょっとだけ実践 ユースケース フロー図 ユースケース記述だと、 細かい内容も記述する 必要があったので、 自分たちのスタイルと不一致
  26. 26. 例:ユースケースフロー図 ざっくりとした 処理の流れと 責務が わかればよい 処理の流れ アクターアクター
  27. 27. 苦労した点① 旧メンバへのDDDの伝え方がわからない 旧メンバが不安でいっぱい 早い段階でコード作成して、まずはコードで共有 新アーキテクチャチーム DDD暦 6ヶ月 旧アーキテクチャチーム DDD暦 0ヶ月融合
  28. 28. 苦労した点② 新アーキテクチャ 旧アーキテクチャ 20年分の貴重な資産 旧アーキテクチャの 資産を有効活用する ための腐敗防止層
  29. 29. 祝:リリース 約8ヶ月 かけて ようやく リリース。
  30. 30. リリース後 約1ヶ月間 ドメインモデルから リファクタリングを実施。
  31. 31. DDD導入後の 変化・成果
  32. 32. 変化① 上流設計 特定メンバで実施 全員で実施 (理由は次のスライド)
  33. 33. 変化② 業務 業務を理解しなくても開発可能 業務をコードで表現するため 業務を理解して開発することが必須
  34. 34. 変化③ 自動テスト 自動テスト環境がなかった 自動テスト環境整備
  35. 35. 変化④ 仕様変更 自動テストがないので、 場当たり的な対応のみ ドメインモデルから見直して ベストな設計・実装を模索
  36. 36. 変化⑤ 環境 独自言語なので外部から調達不可 惰性で開発 成長しないと不要扱いされる 危機感も刺激的
  37. 37. 成果① 過去何度もトライして、 成功しなかった 旧アーキテクチャからの進化に成功
  38. 38. 成果② DDD全展開 決定
  39. 39. ご静聴 ありがとうございました。

×