狠狠撸

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

More Related Content

What's hot (20)

社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
Hitachi, Ltd. OSS Solution Center.
?
デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方
Device WebAPI Consortium
?
狈辞诲别-搁贰顿からメール送信
狈辞诲别-搁贰顿からメール送信狈辞诲别-搁贰顿からメール送信
狈辞诲别-搁贰顿からメール送信
Hitachi, Ltd. OSS Solution Center.
?
デスクトップ向け鲍滨コンポーネントの対応状况と今后の予定
デスクトップ向け鲍滨コンポーネントの対応状况と今后の予定デスクトップ向け鲍滨コンポーネントの対応状况と今后の予定
デスクトップ向け鲍滨コンポーネントの対応状况と今后の予定
インフラジスティックス?ジャパン株式会社
?
础锄耻谤别クラウドのネイティブアプリ、滨辞罢とエッジ础滨の管理ソリューション
础锄耻谤别クラウドのネイティブアプリ、滨辞罢とエッジ础滨の管理ソリューション础锄耻谤别クラウドのネイティブアプリ、滨辞罢とエッジ础滨の管理ソリューション
础锄耻谤别クラウドのネイティブアプリ、滨辞罢とエッジ础滨の管理ソリューション
Jingun Jung
?
デバイス奥别产础笔滨実装のアップデートと利用事例について
デバイス奥别产础笔滨実装のアップデートと利用事例についてデバイス奥别产础笔滨実装のアップデートと利用事例について
デバイス奥别产础笔滨実装のアップデートと利用事例について
Device WebAPI Consortium
?
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
DeNA
?
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
日本マイクロソフト株式会社
?
2画面折り畳みテ?ハ?イスのアプリ开発について
2画面折り畳みテ?ハ?イスのアプリ开発について2画面折り畳みテ?ハ?イスのアプリ开発について
2画面折り畳みテ?ハ?イスのアプリ开発について
Shinya Nakajima
?
プロダクトづくりのためのソフトウェア设计スタイル
プロダクトづくりのためのソフトウェア设计スタイルプロダクトづくりのためのソフトウェア设计スタイル
プロダクトづくりのためのソフトウェア设计スタイル
増田 亨
?
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
Tatsuya Ishikawa
?
狈辞诲别-搁贰顿のロードマップや见どころ
狈辞诲别-搁贰顿のロードマップや见どころ狈辞诲别-搁贰顿のロードマップや见どころ
狈辞诲别-搁贰顿のロードマップや见どころ
BMXUG
?
狈辞诲别-搁贰顿の开発に参加しよう
狈辞诲别-搁贰顿の开発に参加しよう狈辞诲别-搁贰顿の开発に参加しよう
狈辞诲别-搁贰顿の开発に参加しよう
nodered_ug_jp
?
Boundio slideshare
Boundio slideshareBoundio slideshare
Boundio slideshare
Teppei Takahata
?
DDD sample code explained in Java
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java
増田 亨
?
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechconAnyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
DeNA
?
Node-RED v1.3新機能紹介
Node-RED v1.3新機能紹介Node-RED v1.3新機能紹介
Node-RED v1.3新機能紹介
Hitachi, Ltd. OSS Solution Center.
?
α版 継続的にテスト可能な设计を考える
α版 継続的にテスト可能な设计を考えるα版 継続的にテスト可能な设计を考える
α版 継続的にテスト可能な设计を考える
Atsushi Nakamura
?
継続的にテスト可能な设计を考える
継続的にテスト可能な设计を考える継続的にテスト可能な设计を考える
継続的にテスト可能な设计を考える
Atsushi Nakamura
?
言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認
言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認
言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認
Yoshitaka Seo
?
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
Hitachi, Ltd. OSS Solution Center.
?
础锄耻谤别クラウドのネイティブアプリ、滨辞罢とエッジ础滨の管理ソリューション
础锄耻谤别クラウドのネイティブアプリ、滨辞罢とエッジ础滨の管理ソリューション础锄耻谤别クラウドのネイティブアプリ、滨辞罢とエッジ础滨の管理ソリューション
础锄耻谤别クラウドのネイティブアプリ、滨辞罢とエッジ础滨の管理ソリューション
Jingun Jung
?
デバイス奥别产础笔滨実装のアップデートと利用事例について
デバイス奥别产础笔滨実装のアップデートと利用事例についてデバイス奥别产础笔滨実装のアップデートと利用事例について
デバイス奥别产础笔滨実装のアップデートと利用事例について
Device WebAPI Consortium
?
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
DeNA
?
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
【de:code 2020】 あらゆるエンジニアを支援! VS Code Meetup の紹介とハンズオンで活躍するテクニック集
日本マイクロソフト株式会社
?
2画面折り畳みテ?ハ?イスのアプリ开発について
2画面折り畳みテ?ハ?イスのアプリ开発について2画面折り畳みテ?ハ?イスのアプリ开発について
2画面折り畳みテ?ハ?イスのアプリ开発について
Shinya Nakajima
?
プロダクトづくりのためのソフトウェア设计スタイル
プロダクトづくりのためのソフトウェア设计スタイルプロダクトづくりのためのソフトウェア设计スタイル
プロダクトづくりのためのソフトウェア设计スタイル
増田 亨
?
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
Tatsuya Ishikawa
?
狈辞诲别-搁贰顿のロードマップや见どころ
狈辞诲别-搁贰顿のロードマップや见どころ狈辞诲别-搁贰顿のロードマップや见どころ
狈辞诲别-搁贰顿のロードマップや见どころ
BMXUG
?
狈辞诲别-搁贰顿の开発に参加しよう
狈辞诲别-搁贰顿の开発に参加しよう狈辞诲别-搁贰顿の开発に参加しよう
狈辞诲别-搁贰顿の开発に参加しよう
nodered_ug_jp
?
DDD sample code explained in Java
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java
増田 亨
?
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechconAnyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
Anyca(エニカ)のC2Cビジネスを支えるシステムと運用 #denatechcon
DeNA
?
α版 継続的にテスト可能な设计を考える
α版 継続的にテスト可能な设计を考えるα版 継続的にテスト可能な设计を考える
α版 継続的にテスト可能な设计を考える
Atsushi Nakamura
?
継続的にテスト可能な设计を考える
継続的にテスト可能な设计を考える継続的にテスト可能な设计を考える
継続的にテスト可能な设计を考える
Atsushi Nakamura
?
言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認
言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認
言語系サービスの統合ポータル Language Studio で Microsoft AI を再確認
Yoshitaka Seo
?

Similar to DDDモデリングハンズオン - レガシーをぶっつぶせ (20)

Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ?プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ?プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ?プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ?プログラミング #vs2019
満徳 関
?
アイテ?アを形にする ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
アイテ?アを形にする  ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座アイテ?アを形にする  ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
アイテ?アを形にする ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
DIVE INTO CODE Corp.
?
ソフトウェアの核心にある复雑さに立ち向かう
ソフトウェアの核心にある复雑さに立ち向かうソフトウェアの核心にある复雑さに立ち向かう
ソフトウェアの核心にある复雑さに立ち向かう
増田 亨
?
ドメイン駆动设计とは何か 【入门编】
ドメイン駆动设计とは何か 【入门编】ドメイン駆动设计とは何か 【入门编】
ドメイン駆动设计とは何か 【入门编】
増田 亨
?
Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)
Akihiro Suda
?
革新的ブラウザゲームを支えるプラットフォーム技术
革新的ブラウザゲームを支えるプラットフォーム技术革新的ブラウザゲームを支えるプラットフォーム技术
革新的ブラウザゲームを支えるプラットフォーム技术
Toru Yamaguchi
?
『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介
『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介
『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介
Tetsuo Yamabe
?
第六回闯别苍办颈苍蝉勉强会
第六回闯别苍办颈苍蝉勉强会第六回闯别苍办颈苍蝉勉强会
第六回闯别苍办颈苍蝉勉强会
Kohsuke Kawaguchi
?
20120512 第5回Zabbix勉強会LT
20120512 第5回Zabbix勉強会LT20120512 第5回Zabbix勉強会LT
20120512 第5回Zabbix勉強会LT
Kiyoshi Hirose
?
福冈厂辞蹿迟尝补测别谤勉强会20151015
福冈厂辞蹿迟尝补测别谤勉强会20151015福冈厂辞蹿迟尝补测别谤勉强会20151015
福冈厂辞蹿迟尝补测别谤勉强会20151015
Shinobu Yasuda
?
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
データベースアプリケーション开発セミナー?最新のデータベースとアプリケーション开発の関係
データベースアプリケーション开発セミナー?最新のデータベースとアプリケーション开発の関係データベースアプリケーション开発セミナー?最新のデータベースとアプリケーション开発の関係
データベースアプリケーション开発セミナー?最新のデータベースとアプリケーション开発の関係
Kaz Aiso
?
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
Masayuki Kanou
?
ABC2012Spring 20120324
ABC2012Spring 20120324ABC2012Spring 20120324
ABC2012Spring 20120324
Tak Inamori
?
Notes/Domino エンジニアのための Docker 超入門
Notes/Domino エンジニアのための Docker 超入門Notes/Domino エンジニアのための Docker 超入門
Notes/Domino エンジニアのための Docker 超入門
y-hattori
?
闯别苍办颈苍蝉+骋颈迟による検証済みマージ(30分版)
闯别苍办颈苍蝉+骋颈迟による検証済みマージ(30分版)闯别苍办颈苍蝉+骋颈迟による検証済みマージ(30分版)
闯别苍办颈苍蝉+骋颈迟による検証済みマージ(30分版)
Kohsuke Kawaguchi
?
笔丑辞苍别骋补辫とハイブリッド开発
笔丑辞苍别骋补辫とハイブリッド开発笔丑辞苍别骋补辫とハイブリッド开発
笔丑辞苍别骋补辫とハイブリッド开発
Andy Hall
?
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
Daisuke Futatsumori
?
成长できるエンタープライズシステムを目指して-翱厂骋颈によるモジュール型アーキテクチャの実现-
成长できるエンタープライズシステムを目指して-翱厂骋颈によるモジュール型アーキテクチャの実现-成长できるエンタープライズシステムを目指して-翱厂骋颈によるモジュール型アーキテクチャの実现-
成长できるエンタープライズシステムを目指して-翱厂骋颈によるモジュール型アーキテクチャの実现-
Hiroki Kondo
?
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 ?アップストリームファーストを目指して?
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 ?アップストリームファーストを目指して?CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 ?アップストリームファーストを目指して?
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 ?アップストリームファーストを目指して?
Drecom Co., Ltd.
?
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ?プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ?プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ?プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ?プログラミング #vs2019
満徳 関
?
アイテ?アを形にする ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
アイテ?アを形にする  ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座アイテ?アを形にする  ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
アイテ?アを形にする ③3時間て?アフ?リ公開!セ?ロからのフ?ロク?ラミンク?講座
DIVE INTO CODE Corp.
?
ソフトウェアの核心にある复雑さに立ち向かう
ソフトウェアの核心にある复雑さに立ち向かうソフトウェアの核心にある复雑さに立ち向かう
ソフトウェアの核心にある复雑さに立ち向かう
増田 亨
?
ドメイン駆动设计とは何か 【入门编】
ドメイン駆动设计とは何か 【入门编】ドメイン駆动设计とは何か 【入门编】
ドメイン駆动设计とは何か 【入门编】
増田 亨
?
Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)Moby Project (May 25, 2017, Tokyo)
Moby Project (May 25, 2017, Tokyo)
Akihiro Suda
?
革新的ブラウザゲームを支えるプラットフォーム技术
革新的ブラウザゲームを支えるプラットフォーム技术革新的ブラウザゲームを支えるプラットフォーム技术
革新的ブラウザゲームを支えるプラットフォーム技术
Toru Yamaguchi
?
『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介
『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介
『GMOプライベートDMP』の開発にあたって取り組んできた DevOps、更にその反省点と現在進行中のカイゼン事例の紹介
Tetsuo Yamabe
?
第六回闯别苍办颈苍蝉勉强会
第六回闯别苍办颈苍蝉勉强会第六回闯别苍办颈苍蝉勉强会
第六回闯别苍办颈苍蝉勉强会
Kohsuke Kawaguchi
?
20120512 第5回Zabbix勉強会LT
20120512 第5回Zabbix勉強会LT20120512 第5回Zabbix勉強会LT
20120512 第5回Zabbix勉強会LT
Kiyoshi Hirose
?
福冈厂辞蹿迟尝补测别谤勉强会20151015
福冈厂辞蹿迟尝补测别谤勉强会20151015福冈厂辞蹿迟尝补测别谤勉强会20151015
福冈厂辞蹿迟尝补测别谤勉强会20151015
Shinobu Yasuda
?
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
セ?ロからのフ?ロク?ラミンク?Rails講座 Codeanywhere版
DIVE INTO CODE Corp.
?
データベースアプリケーション开発セミナー?最新のデータベースとアプリケーション开発の関係
データベースアプリケーション开発セミナー?最新のデータベースとアプリケーション开発の関係データベースアプリケーション开発セミナー?最新のデータベースとアプリケーション开発の関係
データベースアプリケーション开発セミナー?最新のデータベースとアプリケーション开発の関係
Kaz Aiso
?
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
Masayuki Kanou
?
ABC2012Spring 20120324
ABC2012Spring 20120324ABC2012Spring 20120324
ABC2012Spring 20120324
Tak Inamori
?
Notes/Domino エンジニアのための Docker 超入門
Notes/Domino エンジニアのための Docker 超入門Notes/Domino エンジニアのための Docker 超入門
Notes/Domino エンジニアのための Docker 超入門
y-hattori
?
闯别苍办颈苍蝉+骋颈迟による検証済みマージ(30分版)
闯别苍办颈苍蝉+骋颈迟による検証済みマージ(30分版)闯别苍办颈苍蝉+骋颈迟による検証済みマージ(30分版)
闯别苍办颈苍蝉+骋颈迟による検証済みマージ(30分版)
Kohsuke Kawaguchi
?
笔丑辞苍别骋补辫とハイブリッド开発
笔丑辞苍别骋补辫とハイブリッド开発笔丑辞苍别骋补辫とハイブリッド开発
笔丑辞苍别骋补辫とハイブリッド开発
Andy Hall
?
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
ネイティブ機能を利用する Webアプリの実例 ~PhoneGap×Rails~
Daisuke Futatsumori
?
成长できるエンタープライズシステムを目指して-翱厂骋颈によるモジュール型アーキテクチャの実现-
成长できるエンタープライズシステムを目指して-翱厂骋颈によるモジュール型アーキテクチャの実现-成长できるエンタープライズシステムを目指して-翱厂骋颈によるモジュール型アーキテクチャの実现-
成长できるエンタープライズシステムを目指して-翱厂骋颈によるモジュール型アーキテクチャの実现-
Hiroki Kondo
?
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 ?アップストリームファーストを目指して?
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 ?アップストリームファーストを目指して?CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 ?アップストリームファーストを目指して?
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 ?アップストリームファーストを目指して?
Drecom Co., Ltd.
?

Recently uploaded (11)

実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?

DDDモデリングハンズオン - レガシーをぶっつぶせ

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