Modeling Workshop

647 views

Published on

http://www.wankuma.com/seminar/20130202nagoya26/

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
647
On SlideShare
0
From Embeds
0
Number of Embeds
70
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Modeling Workshop

  1. 1. モデリング・ワークショップ 2013/02/02 You&I わんくま同盟 名古屋勉強会 #26
  2. 2. ダレ、イッタイ。• H/N You&I(読み:ユーアンドアイ)• 出身 生まれも育ちも名古屋市• 年齢 30代中盤• 本職 商学部出身の職業プログラマ• 言語 C++,C#,VB6,日本語COBOL• 日記 http://d.hatena.ne.jp/youandi/• 所属 名古屋アジャイル勉強会 プログラミング生放送 名古屋支部 わんくま同盟 わんくま同盟 名古屋勉強会 #26
  3. 3. AGENDA1. モデリング・ワークショップ概要説明2. モデリングの勘所解説 by furuyoshiさん3. グループ分け&自己紹介4. モデリングワークショップ1(モデリング)5. モデリングワークショップ2(モデリング)6. モデリングワークショップ3(実装)7. まとめ わんくま同盟 名古屋勉強会 #26
  4. 4. 始める前に ドメイン駆動設計の考え方は とても難しいです>< みんなで一緒にやれば怖くない!分からない事はどんどん質問しましょう。 わんくま同盟 名古屋勉強会 #26
  5. 5. AGENDA1. モデリング・ワークショップ概要説明2. モデリングの勘所解説 by furuyoshiさん3. グループ分け&自己紹介4. モデリングワークショップ1(モデリング)5. モデリングワークショップ2(モデリング)6. モデリングワークショップ3(実装)7. まとめ わんくま同盟 名古屋勉強会 #26
  6. 6. 1.モデリング・ワークショップ概要説明 (1/9)• まず質問ですが、ソフトウェア開発を行っている方 で、設計を行った事がある方はいらっしゃいます か? わんくま同盟 名古屋勉強会 #26
  7. 7. 1.モデリング・ワークショップ概要説明 (2/9)• 続いて質問ですが、書籍「エリック・エヴァンスのド メイン駆動設計」を読んだ事はありますか? – http://www.seshop.com/product/detail/1 3087/ わんくま同盟 名古屋勉強会 #26
  8. 8. 1.モデリング・ワークショップ概要説明 (3/9)• まずはドメインって? (DDD本P.2) – すべてのソフトウェアプログラムは、それを利用する事 ユーザーの何らかの活動や関心と関係がある。 – ユーザーがプログラムを適用するこの対象領域が、ソフ トウェアのドメインである。 わんくま同盟 名古屋勉強会 #26
  9. 9. 1.モデリング・ワークショップ概要説明 (4/9)• モデルについて (DDD本P.2) – 開発者はそのユーザーの活動に関係する体系化され た知識を身につけなければならない。 – ここで要求される知識の幅広さ、情報の量と複雑さに 圧倒されるかもしれない。モデルはこの重荷と格闘す る為のツール。 – モデルとは選び抜かれてシンプルにされ、意図的に組 み立てられた知識の表現形式。 わんくま同盟 名古屋勉強会 #26
  10. 10. 1.モデリング・ワークショップ概要説明 (5/9)• ドメインモデルとは? (DDD本P.3) – ドメインモデルとは特定の図ではなく、図が伝えようとし ている考え方である。 – ドメインエキスパートの頭の中にある単なる知識ではな く、その知識が厳密に構成され、選び抜かれて抽象 化されたものである。 – ドメインモデルは、モデルを「写実的に」作成する事で はない。映画制作のように、ある目的に従って、現実 の概要を表現している。 わんくま同盟 名古屋勉強会 #26
  11. 11. 1.モデリング・ワークショップ概要説明 (6/9)• DDDにおけるモデルの有用性 (DDD本P.3) 1. モデルと設計の核心が相互に形成しあう。 モデルの理解に基づいてコードを理解できるようになる 2. モデルはチームメンバ全員が使用する言語の基盤で ある。 開発者とドメインエキスパートが通訳なしにコミュニケーションで きる。このコミュニケーション言語はユビキタス言語と呼ばれる。 イメージとしては市場の競りで使われている掛け声。 3. モデルとは蒸留された知識である。 上記2つの事が相互作用してモデリングプロセスにフィードバッ クされていく。 わんくま同盟 名古屋勉強会 #26
  12. 12. 1.モデリング・ワークショップ概要説明 (7/9)• 書籍「エリック・エヴァンスのドメイン駆動設計」で 学べる事 (1/2) 1. チームメンバー全員に同じ言語で会話をさせる 2. モデルと実装をより深く結びつける 3. ポイントとなる特徴を、モデルにおいてはっきりさせる 4. ドメインオブジェクトのライフサイクルを管理する 5. 安全に結合できるドメインコードを入念に作成する 6. 複雑なコードを明白で予測できるものにする 7. ドメインビジョン声明文を記述する 8. 複雑なドメインのコアを蒸留する わんくま同盟 名古屋勉強会 #26
  13. 13. 1.モデリング・ワークショップ概要説明 (8/9)• 書籍「エリック・エヴァンスのドメイン駆動設計」で学 べる事 (2/2) 9. モデルに必要な、暗黙的な概念を掘り出す 10.アナリシスパターンを適用する 11.デザインパターンをモデルに関係づける 12.巨大なシステムでモデルの整合性を維持する 13.同じプロジェクトで複数のモデルが共存できるようにす る 14.大規模な構造によりシステムを構成する 15.モデリングのブレイクスルーを認識してそれに対応する わんくま同盟 名古屋勉強会 #26
  14. 14. 1.モデリング・ワークショップ概要説明 (9/9)• 以上の事柄を、書籍「エリック・エヴァンスのドメイン 駆動設計」を読んで理解する事は容易ではあり ません。• そこで読書会として集まり、自分の疑問点につい て質問したり、他人の質問について自分の考えを 伝えたりしています。• 本日のワークショップにおいても、グループ内でユビ キタス言語でコミュニケーションを取りながらモデリン グを行っていく事を体験して頂きます。 わんくま同盟 名古屋勉強会 #26
  15. 15. AGENDA1. モデリング・ワークショップ概要説明2. モデリングの勘所解説 by furuyoshiさん3. グループ分け&自己紹介4. モデリングワークショップ1(モデリング)5. モデリングワークショップ2(モデリング)6. モデリングワークショップ3(実装)7. まとめ わんくま同盟 名古屋勉強会 #26
  16. 16. 2. モデリングの勘所解説• それではお題を出して、いきなりモデリング開始!• ってのは辛いと思いますので、モデリングのエキス パートの方から、モデリングの勘所だったり、どのよう な視点や考え方でモデリングを進めるべきか、解 説を行って頂きます。• furuyoshiさんの資料 – http://www.slideshare.net/furuyoshi/uml- 16303062 わんくま同盟 名古屋勉強会 #26
  17. 17. AGENDA1. モデリング・ワークショップ概要説明2. モデリングの勘所解説 by furuyoshiさん3. グループ分け&自己紹介4. モデリングワークショップ1(モデリング)5. モデリングワークショップ2(モデリング)6. モデリングワークショップ3(実装)7. まとめ わんくま同盟 名古屋勉強会 #26
  18. 18. 3. グループ分け&自己紹介• 3つのグループに分かれてモデリングを行っていきた いと思います。• 今回は開発言語毎にグループを分けたいと思いま す。(DDD本読書会参加メンバーは除く) – C++/C言語 – C#/VB.NET – Java/Scala/Groovy – Ruby/Python – その他 わんくま同盟 名古屋勉強会 #26
  19. 19. 3. グループ分け&自己紹介• 各グループにて、以下の内容で自己紹介を行って 下さい。 – お名前 – 今日のお昼ご飯のメニュー – 普段UML等を使ってモデリングを行っているか わんくま同盟 名古屋勉強会 #26
  20. 20. AGENDA1. モデリング・ワークショップ概要説明2. モデリングの勘所解説 by furuyoshiさん3. グループ分け&自己紹介4. モデリングワークショップ1(モデリング)5. モデリングワークショップ2(モデリング)6. モデリングワークショップ3(実装)7. まとめ わんくま同盟 名古屋勉強会 #26
  21. 21. 4.モデリングワークショップ1 (1/6)• では早速モデリングしてみましょう。• というのは難しいと思うので、もう少し補足説明。• まずモデリングを行う上でどのような要素に分解し ていけば良いのか? わんくま同盟 名古屋勉強会 #26
  22. 22. 4.モデリングワークショップ1 (2/6)• ドメインモデルを構成する要素 (DDD本P.79) 1. エンティティ(別名:参照オブジェクト) ドメインモデリングする際の最小構成要素。UMLで言う所のク ラスオブジェクトのイメージ。 2. 値オブジェクト 不変なオブジェクト。 3. サービス 宅配料金を計算する/商品IDを採番する。といったように、状 態を持たず、振る舞いのみを定義する。 4. モジュール(別名:パッケージ) 低結合・高凝縮な概念の集合。 わんくま同盟 名古屋勉強会 #26
  23. 23. 4.モデリングワークショップ1 (3/6)• ドメインオブジェクトのライフサイクル (DDD本 P.121) 1. 集約 明確な所有権と境界を定義する。 複数のエンティティ・値オブジェクトの集まりを一塊として表現す る考え方。OOPでのカプセル化のイメージ。 2. ファクトリー デザインパターンのファクトリーパターン。エンティティを生成する。 3. リポジトリ データベース。オブジェクトを格納したり、再構成(=元のオブ ジェクトを取り出す) したりしてデータを永続化する。 わんくま同盟 名古屋勉強会 #26
  24. 24. 4.モデリングワークショップ1 (4/6) わんくま同盟 名古屋勉強会 #26
  25. 25. 4.モデリングワークショップ1 (5/6)• では早速モデリングしてみましょう。• お題は・・・ 回転寿司• 回転寿司のシステムについて、まずはグループ単 位ではなく、各自が思うようにモデリングしてみて下 さい。 時間:10分間 わんくま同盟 名古屋勉強会 #26
  26. 26. 4.モデリングワークショップ1 (6/6)• モデリングしてみていかがでしたでしょうか?• グループ内でモデリング結果について共有しましょ う。 – どんなモデルを書いたか – 書いたモデルにはどんな売り・特徴があるか?ビジネス 的価値はあるか? • ずっと寿司が回ったままになっていないか?ちゃんとガベコレさ れるか? – 実現可能か? 時間:10分間 わんくま同盟 名古屋勉強会 #26
  27. 27. AGENDA1. モデリング・ワークショップ概要説明2. モデリングの勘所解説 by furuyoshiさん3. グループ分け&自己紹介4. モデリングワークショップ1(モデリング)5. モデリングワークショップ2(モデリング)6. モデリングワークショップ3(実装)7. まとめ わんくま同盟 名古屋勉強会 #26
  28. 28. 4.モデリングワークショップ2 (1/2)• 今度はグループでモデリングしてみましょう。• お題は・・・同じく・・・ 回転寿司• 誰かのものをベースにしても良いですし、また1か ら考え直してみるのも良いです。• まずはユースケースから考えてみましょう。 時間:30分間 わんくま同盟 名古屋勉強会 #26
  29. 29. 4.モデリングワークショップ2 (2/2)• モデリングしてみていかがでしたでしょうか?• 各グループで発表者を決めて下さい。• グループ間でモデリング結果について共有しましょ う。 – どんなモデルを書いたか – 書いたモデルにはどんな売り・特徴があるか?ビジネス 的価値はあるか? – 実現可能か? 時間:10分間 わんくま同盟 名古屋勉強会 #26
  30. 30. AGENDA1. モデリング・ワークショップ概要説明2. モデリングの勘所解説 by furuyoshiさん3. グループ分け&自己紹介4. モデリングワークショップ1(モデリング)5. モデリングワークショップ2(モデリング)6. モデリングワークショップ3(実装)7. まとめ わんくま同盟 名古屋勉強会 #26
  31. 31. 6. モデリングワークショップ3 (1/3)• これまで回転寿司のモデリングを行ってきましたが、 実際に実装できそうな感じになるまで蒸留できて きましたよね?実装してみたくなってきましたよ ね?• という事でグループ内で2人一組または3人一 組のペアを作り、ドメインモデリングしたものを元に 実装してみましょう。 わんくま同盟 名古屋勉強会 #26
  32. 32. 6. モデリングワークショップ3 (2/3)• ペアで作業を進める前に、各グループ内で用語の 表記を揃えましょう。皿→dish等主要なドメイン モデルの名前を共通化しましょう。• ペアの開発に関するユビキタス言語がプログラミン グ言語ではなく日本語の場合は、ペアローテション なしでドライバー/ナビゲーター固定で進めましょう。 時間:30分間 わんくま同盟 名古屋勉強会 #26
  33. 33. 6. モデリングワークショップ3 (3/3)• モデリング結果について共有しましょう。• ペア毎に発表をお願いします。 – 使用言語 – 実装したシステムの売りは?ビジネス的価値は? – テストコードはあるか? • テストがない場合はお仕置きがあるかも? 時間:20分間 わんくま同盟 名古屋勉強会 #26
  34. 34. AGENDA1. モデリング・ワークショップ概要説明2. モデリングの勘所解説 by furuyoshiさん3. グループ分け&自己紹介4. モデリングワークショップ1(モデリング)5. モデリングワークショップ2(モデリング)6. モデリングワークショップ3(実装)7. まとめ わんくま同盟 名古屋勉強会 #26
  35. 35. 7. まとめ (1/2)• 皆さんお疲れ様でした。• モデリング体験いかがでしたでしょうか?• 今日の体験を是非、現場でも活かして頂ければ と思います。• 最後にワークショップのふりかえりとしてKPT(ケプ ト)を行います。KPTとはKeep/Problem/Tryの 3つのドメインで自分のやった事や考えた事を整 理するプラクティスです。 わんくま同盟 名古屋勉強会 #26
  36. 36. 7. まとめ (2/2)• 各テーブルにKPTの用紙を用意します。• 付箋紙1枚に付き1つの意見をペンで書き込ん で下さい。• K→P→Tの順に書いていくと良いです。 – Keepには、継続したい事、良かった事・楽しかった事、 理解できた事など。 – Problemには、問題点・疑問点、分からなかった事 や、できなかった事など。 – Tryには、今後チャレンジしたい事、こうしたら良い等 の改善ご意見など。 わんくま同盟 名古屋勉強会 #26

×