Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モデリングをはじめよう

 モデリングをはじめよう

DDDのキッカケをつくるためのプレゼン

8ba73f340ca40f9aa49a521fdc9512ce?s=128

KAZUMA Ukyo

May 31, 2013
Tweet

More Decks by KAZUMA Ukyo

Other Decks in Programming

Transcript

  1. モデリングを はじめよう

  2. ソフトウェアって何?

  3. プログラム?

  4. サーバー?

  5. エク◦ル?

  6. 買い物する ソフトウェア amaz◦nみたいな

  7. ありそうなフロー ϩάΠϯ͢Δ ݕࡧ͢Δ ঎඼ϖʔδΛ։͘ $MJDLߪೖ͢Δ ঎඼Λड͚औΔ

  8. Login(user, password) items = Search(query) item.openPage() Buy(item) ありそうなコード

  9. ϩάΠϯ͢Δ ݕࡧ͢Δ ঎඼ϖʔδΛ։͘ $MJDLߪೖ͢Δ ঎඼Λड͚औΔ

  10. つまり

  11. これがソフトウェア ϩάΠϯ͢Δ ݕࡧ͢Δ ঎඼ϖʔδΛ։͘ $MJDLߪೖ͢Δ ঎඼Λड͚औΔ

  12. そして

  13. 買い物のドメイン ϩάΠϯ͢Δ ݕࡧ͢Δ ঎඼ϖʔδΛ։͘ $MJDLߪೖ͢Δ ঎඼Λड͚औΔ

  14. これを 投影したのが

  15. Login(user, password) items = Search(query) item.openPage() Buy(item)

  16. ϩάΠϯ͢Δ ݕࡧ͢Δ ঎඼ϖʔδΛ։͘ $MJDLߪೖ͢Δ ঎඼Λड͚औΔ

  17. 誤解を恐れずに言えば あなたとamaz◦nの 間にあるユビキタス言語

  18. ユビキタス言語?

  19. 要するに 名前

  20. 名前とは 名付けられたもの

  21. 名前とは 意味を持つもの

  22. 名前とは より簡潔であるもの

  23. 名前とは 意図を伝えるもの

  24. 名前とは 使われるもの

  25. ところで

  26. さっきのコードは ドメインを 投影できていません

  27. Login(user, password) items = Search(query) item.openPage() Buy(item)

  28. Login(user, password) items = Search(query) item.openPage() Buy(item)

  29. Login(user, password) items = Search(query) item.openPage() 1ClickBuy(item)

  30. 誤解を恐れずに言えば ユビキタス言語を 使うということ

  31. 誤解を恐れずに言えば 名前を定義し理解し使用する これがドメイン駆動

  32. ドメインを学ぶ

  33. 名前を知る

  34. None
  35. None
  36. 名前を見つける

  37. 「商品の購入」

  38. 「商品を購入したら、 その情報をDBに保存する」

  39. 「商品を購入したら、 その情報をDBに保存する」

  40. 「商品を購入したら、 注文明細を作成する」

  41. 注目すべきは 名詞  と  動詞

  42. やってみよう!