ドメイン駆動開発/DDD体験ワークショップに参加しました(PHPカンファレンス2013) http://www.ark-web.jp/sandbox/wiki/10222.html

[edit]

まえがき

「PHPカンファレンス2013」に行ってきたので、久々にSandboxを書いてみますよ! by 竹村

[edit]

概要

2013年9月14日(土) PHPカンファレンス2013(以降、PHPカンファ)
http://phpcon.php.gr.jp/w/2013/
場所:大田区産業プラザPiO

10:45〜
モデルとの向き合い方:ドメイン駆動設計体験ワークショップ -PHPメンターズ

[edit]

いきなりまとめ!w

[edit]

基礎

[edit]

前提:良いソフトウェアとは (P.6)

読みづらいコード (P.9のコード参照)

なんとなくなイメージとメソッド記述にズレがある
…これが読んでて気持ち悪い

”メンタルモデルとの乖離がないソフトウェア=良いソフトウェア”

どうしたらいいの?

[edit]

DDDってなんぞ? (P.14)

DDD概要

詳しくは、エリック・エヴァンスのドメイン駆動設計(以降、 DDD本 )のまえがきを読んで。

「DDD本」の見開き

ユビキタス言語

モデル駆動設計

モデリングとは?

モデル探索 (P.24参照)

シナリオ -> モデル -> コード -> シナリオに戻る
   │         ↓        │
   └→  ドキュメント ←┘
[edit]

実践方法 (P.26)

※↑この辺が「DDD本」には書いてないので分かりづらいのかも、とのこと。

[edit]

ワークショップ (P.29)

要件を出すので、ドメインモデルとユースケースを書いてみよう!

[edit]

要件 (P.31)

以下は当日の私のメモ

書店システム
店舗とEC
会員サービスがある。種類が有料・無料がある
有料はポイントの値引き・特典サービス
優待へのアップグレードは申請が必要

プレミアム会員をやっている

既存:
店舗で申請している
FAXで送信
クレカのチェック

要望:
ネットからでも申請したい
会員番号とかわすれたら名前・電話から探す
FAXはやめる。ネット申請に寄せる
クレカはASPを利用する? ←後から追記
[edit]

ドメイン辞書 (P.36)

やってみる (※以下は当日の私のメモで正解とは限りません)

- 会員 (会員情報)
- プレミアム会員
- プレミアム申請用紙
- プレミアム処理
- 新規会員登録処理
- 電話番号等からのリマインド
- 購買履歴
- カード与信サービス
[edit]

ドメインモデル (P.39)

関係性を見ていこう

※正解を求めすぎないで!
※記述の仕方もテキトーでやって!
→まだモデリング段階デスカラ。

モデル例:
|公開| -----*|貨物|

付箋紙CRCを使う手もある

ビルディングブロック

に絞ってモデリングする
”ミニマムビルディングブロック!”

やってみる(※以下は当日の私のメモで正解とは限りません)

* エンティティ (DBに入りそうなモノ)
** 1)会員
** 2)プレミアム会員
** 3)プレミアム会員申請

* リポジトリ (エンティティの集合)
** a)会員情報
** b)購買履歴

* サービス (シナリオのようなもの)
** A)プレミアム処理
** B)電話番号等からのリマインド
** C)カード与信サービス
** D)新規会員登録処理

ドメインモデル
A) --- 1) --- 2)
A) --- 3)

B) --- a)
B) --- b)

※C)は検討できてない

D) --- 1)
D) --- B)
[edit]

ユースケース (P.44)

ドメインモデル・ユビキタス言語の検証(動的な構造)

やってみる(※以下は当日の私のメモで正解とは限りません)

1) ---> 3)を使って ---> A) (true) ---> 2) ←基本コース
                           (false)---> B)を使って ---> A) ←代替コース
                                      ↑
                                       a)とb)から1)を割り出す
                           (false and B経由) ---> D)
C)の要件聞き忘れたorz
D)ってのをあとから気づいて追加したよ。ユビキタス言語にも追加した

追記:「サービス起点」と言っているのに 1)会員 がアクターで書いてるなーorz A)プレミアム処理 からのを書くべきらしい
まぁ、初心者はコレでもいいんじゃないかな^^;;
[edit]

実装へ落とし込む (P.51)

技術フレームワーク(Symfonyとか使うとイイ)に、モデルを落としこむ

Symfonyに適用したディレクトリの例がP.53に書いてあるので参考に。

DDDとPHPのメリット

[edit]

まとめ (P.55)

ドメイン駆動設計の本を読もうぜ!

フレームワークへ落とす実装などは PHPメンターズさんのブログ参照とのこと。
PHPメンターズ: http://phpmentors.jp/

投稿者竹村 | パーマリンク

| append.gif

tag:ドメイン駆動設計?, DDD?


添付ファイル: fileDDDBook_s.jpg 233件 [詳細] fileDDDBook.jpg 391件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-09-16 (月) 12:03:00 (1223d)

アークウェブのサービスやソリューションはこちら