Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Takuya Kawabe
6,143 views
ぐるぐるDDD(ドメイン駆動設計)に参加してみました
2014/03/15にDevLove関西で開催されました「ぐるぐるDDD/Scrum - ドメイン駆動設計。モデリングと実装のうずまきをまわしてみよう」のワークショップに参加したときの体験談です。
Technology
◦
Read more
14
Save
Share
Embed
Embed presentation
Download
Downloaded 18 times
1
/ 57
2
/ 57
3
/ 57
4
/ 57
5
/ 57
6
/ 57
7
/ 57
8
/ 57
9
/ 57
10
/ 57
11
/ 57
12
/ 57
13
/ 57
14
/ 57
15
/ 57
16
/ 57
17
/ 57
18
/ 57
19
/ 57
20
/ 57
21
/ 57
22
/ 57
23
/ 57
24
/ 57
25
/ 57
26
/ 57
27
/ 57
28
/ 57
29
/ 57
30
/ 57
31
/ 57
32
/ 57
33
/ 57
34
/ 57
35
/ 57
36
/ 57
37
/ 57
38
/ 57
39
/ 57
40
/ 57
41
/ 57
42
/ 57
43
/ 57
44
/ 57
45
/ 57
46
/ 57
47
/ 57
48
/ 57
49
/ 57
50
/ 57
51
/ 57
52
/ 57
53
/ 57
54
/ 57
55
/ 57
56
/ 57
57
/ 57
More Related Content
PDF
DDDをScrumで廻す あるいは ScrumをDDDで廻す
by
Kiro Harada
PDF
ぐるぐるDDD/Scrum - モデリングと実装のうずまきをまわそう
by
Kiro Harada
PDF
[DL輪読会]Deep Learning for Sampling from Arbitrary Probability Distributions
by
Deep Learning JP
PPT
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
PDF
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
by
Takakiyo Tanaka
PDF
SQLアンチパターン読書会 第10章 サーティワンフレーバー
by
tkfuji
PDF
TDDBC お題
by
Takuto Wada
PDF
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
by
Daiki Maekawa
DDDをScrumで廻す あるいは ScrumをDDDで廻す
by
Kiro Harada
ぐるぐるDDD/Scrum - モデリングと実装のうずまきをまわそう
by
Kiro Harada
[DL輪読会]Deep Learning for Sampling from Arbitrary Probability Distributions
by
Deep Learning JP
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
by
Takakiyo Tanaka
SQLアンチパターン読書会 第10章 サーティワンフレーバー
by
tkfuji
TDDBC お題
by
Takuto Wada
i-Cart miniを対象としたつくばチャレンジ用ソフトウェアパッケージの開発
by
Daiki Maekawa
What's hot
PDF
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
PDF
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
PDF
カークマンの女学生問題と有限幾何
by
yam6da
PDF
はじめてのWallaby.js
by
Shunta Saito
PDF
ユースケースの善し悪し
by
akipii Oga
PDF
Rの高速化
by
弘毅 露崎
PPTX
エンジニアのプレゼン資料作成/入門
by
iKenji
PPT
E school japan waseda july11
by
Stanford University
PDF
MySQL 5.7 トラブルシューティング 性能解析入門編
by
Mikiya Okuno
PDF
ユーザーデータ基盤を1からScalaでつくった話し
by
Hideaki Tarumi
PPTX
概念モデリング再入門 + DDD
by
Hiroshima JUG
PDF
良いプレゼン 良いスライド
by
京大 マイコンクラブ
PPTX
Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning
by
Kohei Nishimura
PDF
data.tableパッケージで大規模データをサクッと処理する
by
Shintaro Fukushima
PPTX
良いコードとは
by
Nobuyuki Matsui
PPTX
R6パッケージの紹介―機能と実装
by
__nakamichi__
PPTX
【講演資料】ハード+ソフトの協調アジャイル開発
by
Hiroaki Matsunaga
PDF
チームメイトのためにdocstringを書こう! pyconjp2019
by
cocodrips
「ドメイン駆動設計」の複雑さに立ち向かう
by
増田 亨
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
Python におけるドメイン駆動設計(戦術面)の勘どころ
by
Junya Hayashi
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
カークマンの女学生問題と有限幾何
by
yam6da
はじめてのWallaby.js
by
Shunta Saito
ユースケースの善し悪し
by
akipii Oga
Rの高速化
by
弘毅 露崎
エンジニアのプレゼン資料作成/入門
by
iKenji
E school japan waseda july11
by
Stanford University
MySQL 5.7 トラブルシューティング 性能解析入門編
by
Mikiya Okuno
ユーザーデータ基盤を1からScalaでつくった話し
by
Hideaki Tarumi
概念モデリング再入門 + DDD
by
Hiroshima JUG
良いプレゼン 良いスライド
by
京大 マイコンクラブ
Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning
by
Kohei Nishimura
data.tableパッケージで大規模データをサクッと処理する
by
Shintaro Fukushima
良いコードとは
by
Nobuyuki Matsui
R6パッケージの紹介―機能と実装
by
__nakamichi__
【講演資料】ハード+ソフトの協調アジャイル開発
by
Hiroaki Matsunaga
チームメイトのためにdocstringを書こう! pyconjp2019
by
cocodrips
Viewers also liked
PDF
ドメイン駆動設計 基本を理解する
by
増田 亨
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
PDF
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
PDF
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
by
Takuya Kawabe
PPTX
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
by
A AOKI
PPTX
GANMA!でDDDをやってみてから1年くらい経った
by
Yasuyuki Sugitani
PDF
保守とDDDと私
by
Takuya Kawabe
PDF
いまなぜドメイン駆動設計か
by
増田 亨
PDF
ドメイン駆動設計(DDD)導入判定チェックシート
by
Takuya Kawabe
PDF
kintoneエンジニアが紹介する品質向上のための取り組み
by
Yasuharu Sakai
PPTX
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
by
sairoutine
PPTX
kintoneチームのKAIZEN文化
by
Ryo Mitoma
PPTX
Ddd × 新人教育
by
侑亮 原田
PDF
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!
by
Yasuyuki Sugitani
PDF
デザパタ勉強会(上級編)
by
kaz3391
PDF
戦略思考 〜考えろ、さすれば道は開かれん〜
by
Kentaro Takasaki
PDF
社内勉強会で読んだ本とか
by
Shinsuke Kuroki
PPTX
福岡DDD勉強会vol.1
by
Yunosuke Taga
PDF
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
by
kan-notice
ドメイン駆動設計 基本を理解する
by
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
by
増田 亨
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
by
増田 亨
Base DDD(ドメイン駆動設計) 参考文献を巡る旅
by
Takuya Kawabe
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
by
A AOKI
GANMA!でDDDをやってみてから1年くらい経った
by
Yasuyuki Sugitani
保守とDDDと私
by
Takuya Kawabe
いまなぜドメイン駆動設計か
by
増田 亨
ドメイン駆動設計(DDD)導入判定チェックシート
by
Takuya Kawabe
kintoneエンジニアが紹介する品質向上のための取り組み
by
Yasuharu Sakai
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
by
sairoutine
kintoneチームのKAIZEN文化
by
Ryo Mitoma
Ddd × 新人教育
by
侑亮 原田
Scala/Scrum/DDD 困ったこと50連発ガトリングトーク!!
by
Yasuyuki Sugitani
デザパタ勉強会(上級編)
by
kaz3391
戦略思考 〜考えろ、さすれば道は開かれん〜
by
Kentaro Takasaki
社内勉強会で読んだ本とか
by
Shinsuke Kuroki
福岡DDD勉強会vol.1
by
Yunosuke Taga
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
by
kan-notice
Similar to ぐるぐるDDD(ドメイン駆動設計)に参加してみました
PDF
実践に向けたドメイン駆動設計のエッセンス
by
増田 亨
PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
by
Koichiro Matsuoka
PDF
ドメイン駆動設計とは何か 【入門編】
by
増田 亨
PDF
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
by
Koichiro Matsuoka
PPTX
FiNC DDD第一回勉強会
by
裕紀 重村
PDF
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
by
Fumiyasu Sumiya
PDF
ぐるぐるDDDは何を目指しているのか
by
Kiro Harada
PDF
Scrumワークショップ
by
You&I
PDF
大阪DDD読書会ワークショップvol.1ガイダンス
by
kumamidori
PPTX
Implementing Domain-Driven Design: Part 1
by
Atsushi Kambara
PDF
ドメイン駆動設計を実践するプログラマーの悩み
by
haljik Seiji
PDF
実践に向けたドメイン駆動設計のエッセンス
by
GuildWorks
PPTX
20100324 勉強会資料(ドメイン駆動)
by
Masayuki Kanou
PPTX
ドメイン駆動設計勉強会発表
by
shingo suzuki
PPTX
DDDモデリング勉強会 #7
by
株式会社Jurabi
PPTX
社内 DDD 勉強会第1回
by
shingo suzuki
PDF
DDDのすすめ
by
Ryo Amano
PDF
2022_sakura-yube_ddd.pdf
by
toshiki kawai
PPT
勉強会開催の案内
by
ReiObata
PPTX
Relationship betweenddd and mvc
by
Takao Tetsuro
実践に向けたドメイン駆動設計のエッセンス
by
増田 亨
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
by
Koichiro Matsuoka
ドメイン駆動設計とは何か 【入門編】
by
増田 亨
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート)
by
Koichiro Matsuoka
FiNC DDD第一回勉強会
by
裕紀 重村
【JJUG CCC 2016 Fall 公開版】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
by
Fumiyasu Sumiya
ぐるぐるDDDは何を目指しているのか
by
Kiro Harada
Scrumワークショップ
by
You&I
大阪DDD読書会ワークショップvol.1ガイダンス
by
kumamidori
Implementing Domain-Driven Design: Part 1
by
Atsushi Kambara
ドメイン駆動設計を実践するプログラマーの悩み
by
haljik Seiji
実践に向けたドメイン駆動設計のエッセンス
by
GuildWorks
20100324 勉強会資料(ドメイン駆動)
by
Masayuki Kanou
ドメイン駆動設計勉強会発表
by
shingo suzuki
DDDモデリング勉強会 #7
by
株式会社Jurabi
社内 DDD 勉強会第1回
by
shingo suzuki
DDDのすすめ
by
Ryo Amano
2022_sakura-yube_ddd.pdf
by
toshiki kawai
勉強会開催の案内
by
ReiObata
Relationship betweenddd and mvc
by
Takao Tetsuro
More from Takuya Kawabe
PDF
C#実装から見るDDD(ドメイン駆動設計)
by
Takuya Kawabe
PDF
概念モデルって難しいですよね
by
Takuya Kawabe
PDF
オブジェクト指向アンチパターンを考えてみた
by
Takuya Kawabe
PDF
Visual studio2013からGithubへPushする方法
by
Takuya Kawabe
PDF
TFS超入門。いつやるの。今でしょ
by
Takuya Kawabe
PDF
Windows497日問題体験記
by
Takuya Kawabe
PDF
役に立つソフトウェアを目指してLet'sチャレンジ
by
Takuya Kawabe
PDF
はじめてのDart
by
Takuya Kawabe
PDF
顧客価値って奥深いですね
by
Takuya Kawabe
PPTX
20130302 わんくま勉強会大阪 tfsを使ってみよう
by
Takuya Kawabe
PDF
デブサミ関西2013 わんくま同盟LT
by
Takuya Kawabe
PDF
Wifiの暗号種別を調べてみました
by
Takuya Kawabe
C#実装から見るDDD(ドメイン駆動設計)
by
Takuya Kawabe
概念モデルって難しいですよね
by
Takuya Kawabe
オブジェクト指向アンチパターンを考えてみた
by
Takuya Kawabe
Visual studio2013からGithubへPushする方法
by
Takuya Kawabe
TFS超入門。いつやるの。今でしょ
by
Takuya Kawabe
Windows497日問題体験記
by
Takuya Kawabe
役に立つソフトウェアを目指してLet'sチャレンジ
by
Takuya Kawabe
はじめてのDart
by
Takuya Kawabe
顧客価値って奥深いですね
by
Takuya Kawabe
20130302 わんくま勉強会大阪 tfsを使ってみよう
by
Takuya Kawabe
デブサミ関西2013 わんくま同盟LT
by
Takuya Kawabe
Wifiの暗号種別を調べてみました
by
Takuya Kawabe
ぐるぐるDDD(ドメイン駆動設計)に参加してみました
1.
ぐるぐるDDDに参加してみました! 1
2.
お断り <(_ _)>ペコリ 当資料は、DevLove関西で行われたワークショップ 『ぐるぐるDDD/Scrum –
ドメイン駆動設計。 モデリングと実装のうずまきをまわしてみよう』 の体験記となります。 ワークショップ未経験者にはネタバレ箇所をボカシつつも、 ワークショップの醍醐味は失わないように書いたつもりです。 もしワークショップの面白さが伝わらなかったのならば、私の 責任です。 ワークショップは本当に面白く、目から鱗が出るほど、 素晴らしい経験をする事が出来ました。 2
3.
自己紹介 3 ● かわべ たくや ● Twitter
: @kawakawa ● 大阪在住 ● C#をメインにお仕事しています ● DDD猛烈勉強中!
4.
ワークショップ講師紹介 原田騎郎氏 ・ 株式会社アトラクタ代表 ・ Twitter
: @haradakiro ・ アジャイルコーチ ・ ドメインモデラー ・ SCM(サプライチェーンマネジメント)コンサルタント 4
5.
ワークショップ講師紹介 原田騎郎氏 ・ 株式会社アトラクタ代表 ・ Twitter
: @haradakiro ・ アジャイルコーチ ・ ドメインモデラー ・ SCM(サプライチェーンマネジメント)コンサルタント DDD&Scrumのワークショップが少ないのは、 両方を同時にコーチング出来る人が少ないからではな いでしょうか。 そういう意味でも、凄い人です。 5
6.
DDDで大切な事 6
7.
DDDで大切な事 『ドメイン』と『ドメインロジック』に注意しよう ドメイン=問題の領域や、知識範囲など。 ドメインロジック=ドメインを実現する箇所や方法。 7
8.
DDDで大切な事 難しい・複雑なドメイン設計は、 モデルに基づくべきである。 ・難しいモデルは実装してみて判る事が多い。 ・そのため、プログラム実装⇒フィードバック⇒ モデル再構築の流れ(リズム)が大切になる。 8
9.
DDDで大切な事 モデルは複数存在している。 Theモデルなんてものは存在しない。 正しいモデルを探すのではなく、 “使えるモデル”を探すのがDDDである。 9
10.
DDDで大切な事 ツールに頼らない ● ホワイトボードなどに殴り書きでもいいので、全員がモ デルを書けるようになることが大切 ● きれいなモデル図は必要ない。殴り書きでよい。 ● 綺麗なモデル図が必要な場合は、モデルが落ち着い てから、ツールで清書してリポジトリに保管。 10
11.
なぜ?Scrumなの? 11
12.
なぜ?Scrumなの? DDD(ドメイン駆動設計)は設計手法である ● DDDは、ウォーターフォールやアジャイルなど、いろ いろな開発フレームワークで利用出来る。 ● 逆に言うとDDDは、開発を進めるリズムについては規 定していないことになる。 12
13.
なぜ?Scrumなの? DDD(ドメイン駆動設計)は設計手法である ● DDDは、ウォーターフォールやアジャイルなど、いろ いろな開発フレームワークで利用出来る。 ● 逆に言うとDDDは、開発を進めるリズムについては規 定していないことになる。 ●
その為、当ワークショップは、Scrumでイテレーション を回して、フィードバックでモデルがどのように変化し ていくのか体験するのが目的の1つとなります。 13
14.
Model Exploration Whirlpool 14 •
原田さん資料より http://www.slideshare.net/kiroh/scrum-andddd-tdc2013distss
15.
Model Exploration Whirlpool 15 •
原田さん資料より http://www.slideshare.net/kiroh/scrum-andddd-tdc2013distss シナリオとモデルを回して洗練させつつ、 プログラム実装の大きいループでも、 フィードバック得て、洗練させる。
16.
閑話休題 16
17.
群盲象を評す 17 • http://upload.wikimedia.org/wikipedia/commons/4/45/Blind_monks_examining_a n_elephant.jpg
18.
群盲象を評す ● 群盲象を評す(ぐんもうぞうをひょうす) ● 数人の盲人が象の一部だけを触って感想を語り合 う、というインド発祥の寓話。 ● 盲人達は、それぞれ象の鼻や牙など別々の一部分だ けを触り、その感想について語り合う。しかし触った部 位により感想が異なり、それぞれが自分が正しいと主 張して対立が深まる。しかし何らかの理由でそれが同 じ物の別の部分であると気づき、対立が解消する、と いうもの。 ● 以上、ウィキペディア
より抜粋。 18
19.
群盲象を評す ● システム開発も同じで目に見えない物が対象。 ● ではどうやって、全員でシステムを認識するの? ● みんなで集まって、触った(担当)個所のドメインモデ ルを作る ● 大切なのは、みんなでモデルを作る事。 ● プログラマーだけがモデル化しても意味が無い ●
プログラマー視点の、偏ったモデルになる危険性があ る。 19
20.
モデルの抽象度 20
21.
牛のベッシー 21 • http://homepage3.nifty.com/manabizz/Chushou.pdf
22.
牛のベッシーの教訓 ● ベッシー 、牝牛、 家畜、
農場資産、 資産、 富 ● 右に行くほど、抽象度が高くなる。 ● 抽象度が高いほど、話が通じる人は増えるが、具体 性は減少していく。 ● 抽象度が低いほど、コンテキストが一致しないと意味 が通じない。(ベッシーが牛であることを知らないとい けない) 22
23.
プログラムにおける抽象度 ● プログラムも同様に、必要以上に抽象度が高いモデ ルを使うと、ロジックコピペが蔓延することになる。 ● つまり、抽象度が高いほど良いということはない。 ● プロジェクトに役に立つか検証する必要がある。 (⇒確かめないと判らない) ●
抽象度が判らない場合は、まずは具象的な形で作業 を進めたほうが良い。 23
24.
いよいよ本題 DDD/Scrumワークショップ 24
25.
お題は『駐車場』 ● 無人有料駐車場(時間貸し)の管理システムを構築。 ● チームに分かれて、作業を行います。 ● 1イテレーション50分で複数回まわします。 ● 1つのイテレーション内でソース実装まで行いリリース できる状態にします。 25
26.
1イテレーション目 26
27.
まずはイメージの共有 ● ゲート式の駐車場をイメージ ● 入り口用と出口用ゲートは別れている 27
28.
次にストーリを考えてみる 28 1.[ユーザ]車でゲートにくる 2.[システム] 発券する 3.[ユーザ] 券を受け取る 4.[システム]
ゲート開ける 5.[ユーザ] ゲートに券を入れ る 6.[システム] 金額を計算して、 表示する 7.[ユーザ] 金額を入れる 8.[システム] ゲートを開ける
29.
ストーリをモデル化 29
30.
ストーリをモデル化 30 ● 最初は、ユーザや車などのオブジェクトも考えていま したが、コアドメインには含まれないだろうと判断して 除外しました。 除外したクルマや ユーザなどの オブジェクト
31.
いよいよプログラム実装 31 ● まずはストーリを成立させるテストを書く (例:チケットをゲートにいれてお金をいれるとゲートが 開く など) ● 次にテストがレッドになるように、プロダクトソースを書 く ●
テストがグリーンになったら、次のストーリへ進んで良 い ● ATDDと同じ?
32.
1イテレーション目終了 &ふりかえり 32
33.
ふりかえり 33 ● すべてのストーリを実装できなかった。 ● プログラム実装に入るのが時間ギリギリだった。 (普段、無駄な設計するよりか、プログラムしたほうが マシだよねって思ってたのに…ぐぬぬ) ● プログラム実装に入ってから気づいた事が多かった ⇒ 料金計算がメンドクサイ ⇒
チケット無くしたらどうするの? ⇒ チケットの紙が無くなったら、どうするの? ⇒ 満車になったら、どうするの? ● Scrum的に、リリースできるものが無いって・・・otz
34.
原田さんからヒント 34 ● 自分たちのモデルがコアドメインに注力できていたか 考えてみよう。 ● プログラム実装で気づきが多いということは、良いこと だが、モデルが大きくて不確定要素を多く含んでいる というサインでもある。 ● 全チームとも、モデルが大きかった。 ●
コンテキストマップを描いて、別領域と考えてもいいも のがあるのでは? (料金計算や、チケット読み取り処理など) ● みんながイメージしている駐車場を、もっと単純化して みよう。
35.
2イテレーション目 & 3イテレーション目 35
36.
再度イメージを練り直し ● 単純に1台だけの車が入って、出るだけの駐車場 ● 料金は時間に関係なく、一律1000円と設定 ● モデルを単純化 36
37.
再度プログラム実装 ● モデルの単純化は、テストの単純化につながった。 (お金を払う⇒出庫OK、 お金を払わなない⇒出庫NG) ● この時、お金も1000円という具体的な金額より、[お 金]という抽象的なものでOKという事が分かった。 ⇒モデルにフィードバック 37
38.
モデルの拡張 ● 3イテレーション目に入って、モデルの拡張に挑戦 (時間経過による料金計算、または複数台駐車) ● まずは複数台駐車に挑戦 38 駐車場所Noを持つ事で、 複数台駐車に対応
39.
プログラム実装で問題発生 ● 単純に駐車場Noを持たせれば、簡単に複数台駐車 に対応できると思っていたが、意外と難航。 ● テストに複数条件を書く必要が出てきて、テストケース が急激に増加。。。 ●
プロダクトソースに手を加える箇所が多かった。 39
40.
2・3イテレーション目終了 &ふりかえり 40
41.
ふりかえり 41 ● グリーンには出来なかったが、全ストーリをプログラム 実装することは出来た。 ● プログラムが複雑化したとき、1回目より深いレベルで モデル検討が出来た気がした。 ● 複雑化したといっても、1回目にくらべたら、かなりシ ンプルなプログラムになった。
42.
原田さんからの再ヒント1 42 ● イテレーション2回目以降で回転が早かったのには、 理由がある ⇒ モデルを小さくした ⇒
ユビキタス言語使うことで、話がスムーズになった ● 小さくする技術は、捨てる技術でもあるよ。 ● コアドメインは、状況・目的が変わるともちろん変わ る。使えるドメインを探すようにしよう。 ● プログラムが複雑化したときは、モデル再検討が結局 一番の近道である。
43.
原田さんからの再ヒント2 43 ● DDDで嵌る問題として、モデルを作る事を目的として しまう事がある。 ● それをScrumを使う事で、一定間隔でリリースすると いう制約で補う事ができる。 ●
また短いサイクルでフィードバックを得ることで、軽量 なモデルを作る事が出来る。 ● しかし、DDDは難しいので常に練習して素振りするこ とが大切である。
44.
いろいろQ&A 44
45.
いろいろQ&A 質問: ロック式とゲート式駐車場のコアドメインは同じに なるのですか? 回答: それを考えるのがリファクタリンク。 答えを言うと、同じになりますよ。 (後でモデル図を用いて、同じになる事を実演) 45
46.
いろいろQ&A 質問: コアドメインとサブドメインはどうやって決めるの ですか? 回答: 切り分けられるのならば、コンテキストマップを使う。 判らないのなら、実装して試してみよう。 話し合っても判らないのなら、永遠に判らない。 まずは実装だ。 46
47.
いろいろQ&A 質問: モデル検討からプログラム実装へ移るタイミング は? 回答: やれば判るよ。 今日のワークショップで何となく判ったでしょ。 47
48.
いろいろQ&A 質問: モデルのリファクタリングに指標はありますか? 回答: ● TDDと同じで、モデルをリファクタリングしても、TDD はグリーンのままとなる。 ● リファクタリング内容によっては、テストも手直しする 必要があります ●
しかし、モデルのリファクタリングとテスト手直しは同 時にしてはならない。 ● このあたりのやり方に慣れるには、多少試行錯誤が 必要。 48
49.
興味深かった話 49
50.
プロジェクトを小さく回す ● 出来るチームは、小さいプロジェクトを小さく回 せる。 ● これができないチームに大きいプロジェクトは任 せられない。 ●
つまり、小さく回すことが出来ず、無駄に大きくし てしまう。 50
51.
常にグリーンになるテストの対処法 ● 1年以上、グリーンになるテストはUnitテストか ら外しても良い。 ● 開発中のテスト(特にTDD)は、フィードバックの スピードが重要。 ● つまりスコープを小さくするのが大切。 ● 常にグリーンになるテストがいるとフィードバック が遅くなる危険がある。 ● 重要なテストならば、リリース前にだけテスト確 認すれば良い 51
52.
DDDの練習課題 DDDやプログラミングの練習には、ボブおじさん の「Bowling Game Kata」がオススメ。 http://butunclebob.com/ArticleS.UncleBob.Th eBowlingGameKata 52
53.
デザインパターンについて デザインパターンなどのパターンは、形にはまる と強力だが、その本質を理解しないで利用すると 応用が利かない、歪んだ形となる事が多い。 パターンの本質を理解しないのなら、使わない方 がマシ。 53
54.
インスタンス生成のコスト クラスからインスタンスを生成する際、容易に newしていませんか? 駐車場クラスを安易にnewしてませんでしたか? 現実はそんなに簡単に、駐車場は作られませ ん。それなりにコストが必要です。 DDD本にも、エンジンを作る工場の話がありま すが、役割(責務)だけでなく、生成コストも視野 に入れて、モデルを考えてみると良いですよ。 54
55.
自分のふりかえり 55
56.
自分のふりかえり ● DDDのリファクタリンクとはどのようなものか、 体験できたのは本当に貴重な経験となった。 ● コアドメインを探求する抽象化(または単純化) の感覚がまだ見えてこない。 なんかセンスが必要な気がしてきた・・・うーむ。 ● プログラムからのフィードバック重要。卓上のモ デル化だけでは見えてこない事が多い。 56
57.
自分のふりかえり ● 今回のワークショップとても勉強になったので、 是非またワークショップに参加してみたい。 ● でも、DDDのワークショップはなかなか見かけ られない状況。 ●
DDDワークショップに興味を持った方は、 twitter: @kawakawa までご連絡下さい。 自身も初心者ながら、どのような形でワーク ショップが出来るのか、考えて行きたいです。 57
Download