26
大阪DDD読書会 モデリングワークショップ vol.1 ガイダンス 2014/8/3 #dddosaka by @kuma_nana

大阪DDD読書会ワークショップvol.1ガイダンス

Embed Size (px)

Citation preview

Page 1: 大阪DDD読書会ワークショップvol.1ガイダンス

大阪DDD読書会モデリングワークショップ

vol.1 ガイダンス

2014/8/3 #dddosaka by @kuma_nana

Page 2: 大阪DDD読書会ワークショップvol.1ガイダンス

今日の流れ•ガイダンス、お題説明

•ペアワークでモデリング(全員)

•2組程度発表

Page 3: 大阪DDD読書会ワークショップvol.1ガイダンス

ガイダンス

Page 4: 大阪DDD読書会ワークショップvol.1ガイダンス

ドメイン駆動設計 おさらい

Page 5: 大阪DDD読書会ワークショップvol.1ガイダンス

根幹となる2つのパターン表紙裏ナビゲーションマップ参照!

ユビキタス言語:ドメインモデルを取り巻いて構築され、チームのあらゆる活動をソフトウェアと結びつけるために、チームメンバー全員によって使用される言語(p.520)!!

モデル駆動設計:ソフトウェア要素のサブセットがモデル要素と密接に対応している設計。また、相互に一致した状態を保ちながら、モデルと実装を共に開発するプロセス。(p.519)

Page 6: 大阪DDD読書会ワークショップvol.1ガイダンス

問題空間と解決空間!

!

!

!

!

!

!

!

[※1]

Page 7: 大阪DDD読書会ワークショップvol.1ガイダンス

ソフトウェア開発の モデル

Page 8: 大阪DDD読書会ワークショップvol.1ガイダンス

ソフトウェア開発のモデル!

!

!

!

!

!

!

!

[※2]

Page 9: 大阪DDD読書会ワークショップvol.1ガイダンス

ソフトウェア開発のモデル!

!

!

!

!

!

!

[※2]

Page 10: 大阪DDD読書会ワークショップvol.1ガイダンス

モデリング

Page 11: 大阪DDD読書会ワークショップvol.1ガイダンス

モデリングの流れ1. 業務分析をしてシステムの全体像を把握する(要求の収集) ↓2. ドメインモデリング !これらは、工程として独立しているのではなく、行き来を繰り返しながらそれぞれ洗練させていくことになる

Page 12: 大阪DDD読書会ワークショップvol.1ガイダンス

業務分析ってどうやるの?特に決まりは無いです。例:・システム概要図・「三要素分析法」業務フロー図 [※3]・マインドマップも良いですね!

!

システムの目的、全体像をつかむ。

Page 13: 大阪DDD読書会ワークショップvol.1ガイダンス

ドメインモデリングって?3つのモデリングツール (スターターキット)[※1]!!

1. ドメイン辞書2. ユースケースモデル3. 概念モデル!!これらは独立している工程ではなく、行き来しながらそれぞれ洗練させていく。※決まりは無いので、できる人は好きなやり方でどうぞ!

Page 14: 大阪DDD読書会ワークショップvol.1ガイダンス

1. ドメイン辞書を作るドメイン知識の基盤。ドメインで利用されている言葉をピックアップ、認識を共通化。

!

• モノ:  識別する必要があるもの、データ !

• コト:  動作、振る舞い、制約

Page 15: 大阪DDD読書会ワークショップvol.1ガイダンス

2. ユースケースを書く- システムユーザーとシステムとの間の典型的なやり取りを記述したもの。システムがどのように使われるかをストーリーとして提供。- システムユーザー:人間 or 外部システム。- ユビキタス言語の検証!

!

ユースケースのタイトル(~~する) !

内容(自由な文章)・・・

Page 16: 大阪DDD読書会ワークショップvol.1ガイダンス

2. ユースケースを書くユースケースにはレイヤーがある。アプリケーションユースケースからドメインユースケースを導くと分かりやすい。

!アプリケーションユースケースの例: https://speakerdeck.com/hidenorigoto/phpkanhuarensu2013-moderutofalsexiang-kihe-ifang-domeinqu-dong-she-ji-ti-yan-wakusiyotupu-suraido?slide=53

!

ドメインユースケースの例: https://speakerdeck.com/hidenorigoto/phpkanhuarensu2013-moderutofalsexiang-kihe-ifang-domeinqu-dong-she-ji-ti-yan-wakusiyotupu-suraido?slide=54

Page 17: 大阪DDD読書会ワークショップvol.1ガイダンス

3. 概念モデルを描く- 解決ドメインモデルの中核を構成するドメインオブジェクト- ドメインオブジェクト間の関連を明らかにする- 基本のモデル型(第4章のビルディングブロック) - サービス - エンティティ!!ですが、ビルディングブロックを使わない記法でもモデル図は描けるので、ご自由に!

Page 18: 大阪DDD読書会ワークショップvol.1ガイダンス

3. 概念モデルを描く例:DoorKeeperイベント申込サービスは、ログインユーザエンティティとイベントエンティティを関連付けて、参加申込エンティティとして記録する。

Page 19: 大阪DDD読書会ワークショップvol.1ガイダンス

ではワークショップをはじめます

Page 20: 大阪DDD読書会ワークショップvol.1ガイダンス

流れ- お題の要件の抜粋を紙で配るのでまずは読む。- ペアワークで、業務分析・ドメインモデリングを紙、ペン、付箋でする。 - イテレーション2回で。- 実装まではやりません。- 2組発表。

Page 21: 大阪DDD読書会ワークショップvol.1ガイダンス

イテレーション1のお題「PHPカンファレンス2013 モデルとの向き合い方:ドメイン駆動設計体験ワークショップ」https://speakerdeck.com/hidenorigoto/phpkanhuarensu2013-moderutofalsexiang-kihe-ifang-domeinqu-dong-she-ji-ti-yan-wakusiyotupu-suraido?slide=37!!要件の抜粋を紙で配るのでまずは読んで下さい。

!書かれていないけれど必要な仕様があれば、適宜想定して下さい。

Page 22: 大阪DDD読書会ワークショップvol.1ガイダンス

再掲:やり方(例)1. 業務分析(要求の収集):好きなやり方で2. ドメインモデリング:

(1)ドメイン辞書 (2) ユースケースモデル (3) 概念モデル !※決まりは無いので、できる人は好きなやり方でご自由にどうぞ!

Page 23: 大阪DDD読書会ワークショップvol.1ガイダンス

★注意:NG例★・システムには目的があり、対象範囲、境界がある。モデリングもそう。!・ドメインの言葉として、下記のようなキーワードが出てくるのはNG☆

☓ インターネット? ☓ PC?

Page 24: 大阪DDD読書会ワークショップvol.1ガイダンス

イテレーション2のお題「PHPカンファレンス2013 モデルとの向き合い方:ドメイン駆動設計体験ワークショップ」https://speakerdeck.com/hidenorigoto/phpkanhuarensu2013-moderutofalsexiang-kihe-ifang-domeinqu-dong-she-ji-ti-yan-wakusiyotupu-suraido?slide=37!!要件の抜粋を紙で配るので読んでモデリングをして下さい。

Page 25: 大阪DDD読書会ワークショップvol.1ガイダンス

オプション課題早く終わってしまった方向け。!●アップグレードに「審査」を加える ・購入履歴やその他の条件によって審査する ・審査条件は、経営・管理層の意向により条件が変更される場合がある !●アップグレード数集計を加える ・アップグレード申込数の多い店舗を月別に表彰する ●山村書店アップグレードシステムの「ユビキタス言語」を作る ドメイン辞書を作っただけでは、まだユビキタス言語になっていません。(辞書(用語集)と言語は違う) http://phpmentors.jp/post/87045561213/practical-ddd-4 語と語を、その関係を表す言葉で結ぶような作業をやってみる。

Page 26: 大阪DDD読書会ワークショップvol.1ガイダンス

引用、参考資料引用資料

[※1] PHPによるドメイン駆動設計入門 (後藤 秀宣、久保 敦啓)

(PHPメンターズトレーニングサービステキスト)

[※2] マインドマップではじめるモデリング講座(浅海智晴) p.8

[※3] 業務システムモデリング練習帳(渡辺幸三)

[ワークショップのお題]「PHPカンファレンス2013 モデルとの向き合い方:ドメイン駆動設計体験ワークショップ」https://speakerdeck.com/hidenorigoto/

phpkanhuarensu2013-moderutofalsexiang-kihe-ifang-domeinqu-dong-she-ji-ti-yan-wakusiyotupu-suraido?slide=46!

参考資料

ジェネレーティブプログラミングの世界 http://www.slideshare.net/iteman/ss-31235579 !

★Thanks★ PHPメンターズプログラミング道場の皆さま