Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
© BIGLOBE Inc.
2019/12/14
DDDモデリングハンズオン
レガシーをぶっつぶせ。
現場でDDD!2nd
2 © BIGLOBE Inc.
本資料の説明
本ワークショップで使う、
ソースコードは以下に公開してあります
(masterブランチ)
テストが全て通るようになる事を目指して、
モデリング/コーディングしてみて下さい
https://gith...
3 © BIGLOBE Inc.
本日、体験してもらいたい事
ドメインモデルと
ソースコード
の関係性を知る
4 © BIGLOBE Inc.
エヴァンス本 第1部
エヴァンスが言っている事とは?
第1部 ドメインモデルを機能させる
- 第1章 知識をかみ砕く
- 第2章 コミュニケーションと言語の使い方
- 第3章 モデルと実装を結びつける
エリック...
5 © BIGLOBE Inc.
コードを作成する人々がモデルに責
任を感じていない場合や、
アプリケーションのためにモデルを
機能させる方法を理解していない場
合、
そのモデルはソフトウェアと無関係
になってしまう。
実践的モデラ
6 © BIGLOBE Inc.
モデルとコードの両立
ドメインモデル
ソースコード
どっちも大事
7 © BIGLOBE Inc.
本日の目標
8 © BIGLOBE Inc.
本日の目標
モデルとコードを
往復して
ドメインを育てられる
ようになろう!
9 © BIGLOBE Inc.
本日の流れ
10 © BIGLOBE Inc.
本日の流れ
本日は
「格安SIMの料金計算システム」
の開発してもらいます。
ドメインモデルとソースコードは既にあります。
そこに仕様変更をお伝えしますので、
・ドメインモデルを変更する。
・ソースコードを変...
11 © BIGLOBE Inc.
本日の流れ
1. 導入 (20分)
2. 作業 (90分)
3. クロージング(10分)
12 © BIGLOBE Inc.
チームになろう
13 © BIGLOBE Inc.
お願いします
急激に
仲良くなって下さい
14 © BIGLOBE Inc.
自己紹介タイム
・1人1分
・名前と本日の意気込み
(日頃の役割、DDDについて、etc)
15 © BIGLOBE Inc.
サービス仕様の説明
16 © BIGLOBE Inc.
サービス仕様
プラン
格安SIM
1ギガ
料金:1000円
料金計算 1000円
17 © BIGLOBE Inc.
サービス仕様
プラン
格安SIM
1ギガ
料金:1000円
3ギガ
料金:2000円
30ギガ
料金:6000円
18 © BIGLOBE Inc.
サービス仕様
プラン
格安SIM
1ギガ
料金:1000円
3ギガ
料金:2000円
30ギガ
料金:6000円
エンタメフリーオプション
1200円
プランが3ギガ・30ギガの時に
購入可能(1ギガは購入不...
19 © BIGLOBE Inc.
料金はいくら?
20 © BIGLOBE Inc.
作業を開始!
その前に・・・
21 © BIGLOBE Inc.
議論のこころえ
22 © BIGLOBE Inc.
議論のこころえ
1. ドメインモデルには正解はありません。
2. 一般論より、このサービスに特化したモ
デル、コードを目指しましょう。
3. きづいたこと、考えていること、分から
ないこと、は声に出してみまし...
23 © BIGLOBE Inc.
喧嘩しないためのコーディング規約
• 継承禁止(移譲を使う)
• ドメイン層でプリミティブ型禁止(ラップする)
(String、int、Integer、long、Long、etc)
• ドメイン層でnull禁...
24 © BIGLOBE Inc.
現状の把握
25 © BIGLOBE Inc.
仕様書を読もう
テーブルにある
「格安SIM仕様書」
を読み合わせましょう
(3分)
26 © BIGLOBE Inc.
モデルの確認
プラン
格安SIM
1ギガ
料金:1000円
料金計算 1000円
テーブル上のモデルを
見てみましょう
(3分)
27 © BIGLOBE Inc.
ソースコードの確認
ソースコードを
見てみよう
(ReadMeも合わせて)
(3分)
28 © BIGLOBE Inc.
さっそく
作業を開始しましょう
※各テーブルの作業へ
29 © BIGLOBE Inc.
モデリングの心得
30 © BIGLOBE Inc.
名詞・動詞を探してドメインモデルへ反映
名詞=ドメイン名やドメインの属性値の候補
動詞=ドメインのメソッドの候補
引数:処理に必要なドメインを渡す
戻り値:結果のドメインが戻ってくる
※戻り値なし(void)...
31 © BIGLOBE Inc.
仕様書に書かれていないドメインを探そう
・特定のユースケース(処理)を考えみよう
・チームメンバの発言・語彙に注意しよう
例)
・料金を「〜料金」と言ってたりしないか?
・〜と〜は、のように何度も同じ組み合わ...
32 © BIGLOBE Inc.
ドメインモデルの関係性を考えてみる
例)
A -> Bの場合、
・AはBを知っている。
・AはBを持っている or AはBを利用する
・BはAを知らない。
・BはAを持っていない and BはAを利用しない
...
33 © BIGLOBE Inc.
コーディングの心得
34 © BIGLOBE Inc.
こころえ
・可能な限りドライバーに指示してあげて下さい。
例) ~を追加して。~を~に変更して。など
・間違い、構文エラーを恐れない。
違っていたら、IDEとコンパイラとドライバーが
教えてくれます。
・ドメ...
35 © BIGLOBE Inc.
ドメインを作ろう
・クラス(ドメイン)を作ってみよう
- ドメインモデルの通りに作る
・クラスが出来たらメソッドを追加して
みよう
・プリミティブ型が残るのはモデルが足
りてない証拠
36 © BIGLOBE Inc.
テストを動かしてみよう
37 © BIGLOBE Inc.
成功しました?
38 © BIGLOBE Inc.
ドメインの深い考察を求めて
39 © BIGLOBE Inc.
ドメインモデルとソースコードを比べてみよう
ドメインモデルに存在しないクラスがない?
ドメインモデルには存在しない依存関係がないか?
モデル⇒コードへ落として
分かった事を議論してみる
40 © BIGLOBE Inc.
ドメインモデルをゆさぶってみる
今後、このサービスで起きそうな仕様変
更を想像してみる
⇒影響が大きい場合、小さくする方法を議
論してみましょう
違う方式のモデルを考えてみよう。
なぜ、今のモデルの方が優れて...
41 © BIGLOBE Inc.
ゴール!!
42 © BIGLOBE Inc.
クロージング
43 © BIGLOBE Inc.
本日の目標
モデルとコードを
往復して
ドメインを育てられる
ようになろう!
44 © BIGLOBE Inc.
モデルとコードの往復
〇メリット
全体が見えやすいため共有・議論の土台になる
〇デメリット
あいまいさが許容される。間違いが分かりにくい
ドメインモデル(=抽象的)
ソースコード(=具体的)
〇メリット
あい...
45 © BIGLOBE Inc.
今日、体験してほしかったこと
抽象と具象を往復す
る事で、ドメインへの
理解が深まる
46 © BIGLOBE Inc.
最後に
47 © BIGLOBE Inc.
本日のワークショップの
続きをしたい方へ朗報
48 © BIGLOBE Inc.
BIGLOBEではエンジニアを募集中です
https://hrmos.co/pages/biglobe/jobs?category=1265875468451753984
49 © BIGLOBE Inc.
モデリングがもっと
上手になりたい人に朗報
50 © BIGLOBE Inc.
モデリングのための本を販売中です。
モデリングが上達していく
過程をまとめた1冊です。
上達のために社内で
「モデリング勉強会」
を立ち上げて、
そこで得られた2年分のノウハウをわ
ずか40ページに圧縮しまし...
51 © BIGLOBE Inc.
オウンドメディア始めました
52 © BIGLOBE Inc.
ビッグローブで働く社員の様々な一面を紹介
内容
TechBlogもあります
https://style.biglobe.co.jp
© BIGLOBE Inc.
Nächste SlideShare
Wird geladen in …5
×

DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd

873 Aufrufe

Veröffentlicht am

レガシーをぶっつぶせ。現場でDDD!2nd
https://genbade-ddd.connpass.com/event/156060/
「DDDモデリングハンズオン」セッションの資料です。

・4~6人のチームで議論しながらモデリングとソースコードを書いていく事を想定したハンズオンになります。

ソースコードのベースは以下に公開しています。
https://github.com/biglobe-isp/workshopmobile

イベント内でのセッションでは、
各ワークテーブル毎にドライバー兼ファシリテーターが1名付いて作業する前提のため、
本資料のみですと何かと不足している点があると思います。
ご了承下さい。

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd

  1. 1. © BIGLOBE Inc. 2019/12/14 DDDモデリングハンズオン レガシーをぶっつぶせ。 現場でDDD!2nd
  2. 2. 2 © BIGLOBE Inc. 本資料の説明 本ワークショップで使う、 ソースコードは以下に公開してあります (masterブランチ) テストが全て通るようになる事を目指して、 モデリング/コーディングしてみて下さい https://github.com/biglobe-isp/workshopmobile
  3. 3. 3 © BIGLOBE Inc. 本日、体験してもらいたい事 ドメインモデルと ソースコード の関係性を知る
  4. 4. 4 © BIGLOBE Inc. エヴァンス本 第1部 エヴァンスが言っている事とは? 第1部 ドメインモデルを機能させる - 第1章 知識をかみ砕く - 第2章 コミュニケーションと言語の使い方 - 第3章 モデルと実装を結びつける エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) https://www.amazon.co.jp/dp/4798121967
  5. 5. 5 © BIGLOBE Inc. コードを作成する人々がモデルに責 任を感じていない場合や、 アプリケーションのためにモデルを 機能させる方法を理解していない場 合、 そのモデルはソフトウェアと無関係 になってしまう。 実践的モデラ
  6. 6. 6 © BIGLOBE Inc. モデルとコードの両立 ドメインモデル ソースコード どっちも大事
  7. 7. 7 © BIGLOBE Inc. 本日の目標
  8. 8. 8 © BIGLOBE Inc. 本日の目標 モデルとコードを 往復して ドメインを育てられる ようになろう!
  9. 9. 9 © BIGLOBE Inc. 本日の流れ
  10. 10. 10 © BIGLOBE Inc. 本日の流れ 本日は 「格安SIMの料金計算システム」 の開発してもらいます。 ドメインモデルとソースコードは既にあります。 そこに仕様変更をお伝えしますので、 ・ドメインモデルを変更する。 ・ソースコードを変更する。 ・テストが通るようになる。 ・ドメインモデルとソースコードを比べる  本日のゴール
  11. 11. 11 © BIGLOBE Inc. 本日の流れ 1. 導入 (20分) 2. 作業 (90分) 3. クロージング(10分)
  12. 12. 12 © BIGLOBE Inc. チームになろう
  13. 13. 13 © BIGLOBE Inc. お願いします 急激に 仲良くなって下さい
  14. 14. 14 © BIGLOBE Inc. 自己紹介タイム ・1人1分 ・名前と本日の意気込み (日頃の役割、DDDについて、etc)
  15. 15. 15 © BIGLOBE Inc. サービス仕様の説明
  16. 16. 16 © BIGLOBE Inc. サービス仕様 プラン 格安SIM 1ギガ 料金:1000円 料金計算 1000円
  17. 17. 17 © BIGLOBE Inc. サービス仕様 プラン 格安SIM 1ギガ 料金:1000円 3ギガ 料金:2000円 30ギガ 料金:6000円
  18. 18. 18 © BIGLOBE Inc. サービス仕様 プラン 格安SIM 1ギガ 料金:1000円 3ギガ 料金:2000円 30ギガ 料金:6000円 エンタメフリーオプション 1200円 プランが3ギガ・30ギガの時に 購入可能(1ギガは購入不可)
  19. 19. 19 © BIGLOBE Inc. 料金はいくら?
  20. 20. 20 © BIGLOBE Inc. 作業を開始! その前に・・・
  21. 21. 21 © BIGLOBE Inc. 議論のこころえ
  22. 22. 22 © BIGLOBE Inc. 議論のこころえ 1. ドメインモデルには正解はありません。 2. 一般論より、このサービスに特化したモ デル、コードを目指しましょう。 3. きづいたこと、考えていること、分から ないこと、は声に出してみましょう。 発言をする事はチームにとって尊いこと です。 4. 安心して作業して下さい。 最後はドライバーがどうにかします。
  23. 23. 23 © BIGLOBE Inc. 喧嘩しないためのコーディング規約 • 継承禁止(移譲を使う) • ドメイン層でプリミティブ型禁止(ラップする) (String、int、Integer、long、Long、etc) • ドメイン層でnull禁止 • クラス名は日本語 (時間ないから) 言語:Java (8) フレームワーク:Spring Boot, Lombok ※細かいことはドライバーがどうにかして
  24. 24. 24 © BIGLOBE Inc. 現状の把握
  25. 25. 25 © BIGLOBE Inc. 仕様書を読もう テーブルにある 「格安SIM仕様書」 を読み合わせましょう (3分)
  26. 26. 26 © BIGLOBE Inc. モデルの確認 プラン 格安SIM 1ギガ 料金:1000円 料金計算 1000円 テーブル上のモデルを 見てみましょう (3分)
  27. 27. 27 © BIGLOBE Inc. ソースコードの確認 ソースコードを 見てみよう (ReadMeも合わせて) (3分)
  28. 28. 28 © BIGLOBE Inc. さっそく 作業を開始しましょう ※各テーブルの作業へ
  29. 29. 29 © BIGLOBE Inc. モデリングの心得
  30. 30. 30 © BIGLOBE Inc. 名詞・動詞を探してドメインモデルへ反映 名詞=ドメイン名やドメインの属性値の候補 動詞=ドメインのメソッドの候補 引数:処理に必要なドメインを渡す 戻り値:結果のドメインが戻ってくる ※戻り値なし(void)にはならない メソッドの考え方
  31. 31. 31 © BIGLOBE Inc. 仕様書に書かれていないドメインを探そう ・特定のユースケース(処理)を考えみよう ・チームメンバの発言・語彙に注意しよう 例) ・料金を「〜料金」と言ってたりしないか? ・〜と〜は、のように何度も同じ組み合わせを 主語としていないか? サービス仕様(ドメイン)の理解が深まると、 新しい概念(ドメイン)が見えてくる
  32. 32. 32 © BIGLOBE Inc. ドメインモデルの関係性を考えてみる 例) A -> Bの場合、 ・AはBを知っている。 ・AはBを持っている or AはBを利用する ・BはAを知らない。 ・BはAを持っていない and BはAを利用しない 依存関係の線をドメインモデルに書こう
  33. 33. 33 © BIGLOBE Inc. コーディングの心得
  34. 34. 34 © BIGLOBE Inc. こころえ ・可能な限りドライバーに指示してあげて下さい。 例) ~を追加して。~を~に変更して。など ・間違い、構文エラーを恐れない。 違っていたら、IDEとコンパイラとドライバーが 教えてくれます。 ・ドメインモデルをコードにする事が目標です。 頭の中にある処理をコードしたい訳ではない事 を心がけて下さい。
  35. 35. 35 © BIGLOBE Inc. ドメインを作ろう ・クラス(ドメイン)を作ってみよう - ドメインモデルの通りに作る ・クラスが出来たらメソッドを追加して みよう ・プリミティブ型が残るのはモデルが足 りてない証拠
  36. 36. 36 © BIGLOBE Inc. テストを動かしてみよう
  37. 37. 37 © BIGLOBE Inc. 成功しました?
  38. 38. 38 © BIGLOBE Inc. ドメインの深い考察を求めて
  39. 39. 39 © BIGLOBE Inc. ドメインモデルとソースコードを比べてみよう ドメインモデルに存在しないクラスがない? ドメインモデルには存在しない依存関係がないか? モデル⇒コードへ落として 分かった事を議論してみる
  40. 40. 40 © BIGLOBE Inc. ドメインモデルをゆさぶってみる 今後、このサービスで起きそうな仕様変 更を想像してみる ⇒影響が大きい場合、小さくする方法を議 論してみましょう 違う方式のモデルを考えてみよう。 なぜ、今のモデルの方が優れているのか 説明してみましょう。
  41. 41. 41 © BIGLOBE Inc. ゴール!!
  42. 42. 42 © BIGLOBE Inc. クロージング
  43. 43. 43 © BIGLOBE Inc. 本日の目標 モデルとコードを 往復して ドメインを育てられる ようになろう!
  44. 44. 44 © BIGLOBE Inc. モデルとコードの往復 〇メリット 全体が見えやすいため共有・議論の土台になる 〇デメリット あいまいさが許容される。間違いが分かりにくい ドメインモデル(=抽象的) ソースコード(=具体的) 〇メリット あいまいさや間違いに気づきやすい 〇デメリット 全体は見えにくいため議論が局所的になりやすい
  45. 45. 45 © BIGLOBE Inc. 今日、体験してほしかったこと 抽象と具象を往復す る事で、ドメインへの 理解が深まる
  46. 46. 46 © BIGLOBE Inc. 最後に
  47. 47. 47 © BIGLOBE Inc. 本日のワークショップの 続きをしたい方へ朗報
  48. 48. 48 © BIGLOBE Inc. BIGLOBEではエンジニアを募集中です https://hrmos.co/pages/biglobe/jobs?category=1265875468451753984
  49. 49. 49 © BIGLOBE Inc. モデリングがもっと 上手になりたい人に朗報
  50. 50. 50 © BIGLOBE Inc. モデリングのための本を販売中です。 モデリングが上達していく 過程をまとめた1冊です。 上達のために社内で 「モデリング勉強会」 を立ち上げて、 そこで得られた2年分のノウハウをわ ずか40ページに圧縮しました。 モデリングに悩んだ人にぜひ読んで もらいたい!! 技術書典6でも出版 内容 1冊500円
  51. 51. 51 © BIGLOBE Inc. オウンドメディア始めました
  52. 52. 52 © BIGLOBE Inc. ビッグローブで働く社員の様々な一面を紹介 内容 TechBlogもあります https://style.biglobe.co.jp
  53. 53. © BIGLOBE Inc.

×