Slide 1

Slide 1 text

Զͨͪͷ υϝΠϯۦಈઃܭ͸ ͜Ε͔Βͩʂ

Slide 2

Slide 2 text

ຊ୩ɹ྄հ

Slide 3

Slide 3 text

ෳࡶੑͱͷઓ͍

Slide 4

Slide 4 text

όοΫΤϯυ ϑϩϯτΤϯυ σʔλϕʔε

Slide 5

Slide 5 text

όοΫΤϯυ ϑϩϯτΤϯυ DTO DTO DTO DTO DTO σʔλϕʔε

Slide 6

Slide 6 text

όοΫΤϯυ ϑϩϯτΤϯυ DTO DTO DTO DTO DTO DTO DTO DTO DTO DTO σʔλϕʔε

Slide 7

Slide 7 text

όοΫΤϯυ ϑϩϯτΤϯυ DTO DTO DTO DTO DTO DTO DTO DTO DTO DTO ϩδοΫ σʔλϕʔε ϩδοΫ ϩδοΫ

Slide 8

Slide 8 text

όοΫΤϯυ ϑϩϯτΤϯυ DTO DTO DTO DTO DTO DTO DTO DTO DTO DTO ϩδοΫ σʔλϕʔε ϩδοΫ ϩδοΫ ෳࡶʹͳͬͯ͘Δ…

Slide 9

Slide 9 text

όοΫΤϯυ ϑϩϯτΤϯυ DTO DTO DTO DTO DTO DTO DTO DTO DTO DTO ϩδοΫ σʔλϕʔε ϩδοΫ ϩδοΫ ࢓༷มߋ ෳࡶʹͳͬͯ͘Δ…

Slide 10

Slide 10 text

όοΫΤϯυ ϑϩϯτΤϯυ DTO DTO DTO DTO DTO DTO DTO DTO DTO DTO ϩδοΫ σʔλϕʔε ϩδοΫ ϩδοΫ ࢓༷มߋ ෳࡶʹͳͬͯ͘Δ…

Slide 11

Slide 11 text

֦ுੑ มߋ༰қੑ … ҡ࣋͢Δͷ͕೉͍͠ʂ

Slide 12

Slide 12 text

Ͳ͏ͯ͜͠͏ͳΔʁ

Slide 13

Slide 13 text

ίʔυΛݟ͚ͨͩͰ͸ ҙਤ͕ݟ͑ͯ͜ͳ͍ʂ

Slide 14

Slide 14 text

࢓༷ॻ ʢͲͷΑ͏ʹʣ ۀ຿஌ࣝ ʢͳͥʣ

Slide 15

Slide 15 text

ίʔυ ର৅ۀ຿ʢυϝΠϯʣ ͷݴ༿

Slide 16

Slide 16 text

ResultDto Data doExecute

Slide 17

Slide 17 text

෼͔ΓͣΒ͍ίʔυͷ׬੒

Slide 18

Slide 18 text

ٕज़͕ෳࡶ͔ͩΒʁ

Slide 19

Slide 19 text

ର৅ۀ຿ʢυϝΠϯʣ ͕ෳࡶ͔ͩΒʂ

Slide 20

Slide 20 text

υϝΠϯۦಈઃܭ

Slide 21

Slide 21 text

ଟ͘ͷΞϓϦέʔγϣϯʹ͓͍ͯɺ࠷΋ॏཁͳෳࡶ͞ ͸ɺٕज़తͳ΋ͷͰ͸ͳ͍ɻ Eric Evans

Slide 22

Slide 22 text

ෳࡶͳ΋ͷ͸υϝΠϯͦͷ΋ͷɺ͢ͳΘͪɺ Ϣʔβͷ׆ಈ΍ϏδωεͳͷͰ͋Δɻ Eric Evans

Slide 23

Slide 23 text

Ϗδωε͕࣋ͭෳࡶੑͱ ઓ͏ಓ۩

Slide 24

Slide 24 text

΍ͬͨ͜ͱ υϝΠϯۦಈઃܭʢຊʣ͔Β Ͱ͖ͦ͏ͳͱ͜ΖΛϐοΫΞοϓ ঃʑʹϓϩδΣΫτʹద༻

Slide 25

Slide 25 text

1. υϝΠϯϞσϧͷߏங 2. ઃܭύλʔϯͷద༻ 3. υϝΠϯ૚ͷ࡞੒

Slide 26

Slide 26 text

ᶃ υϝΠϯϞσϧΛߏங

Slide 27

Slide 27 text

υϝΠϯϞσϧͱ͸ʁ

Slide 28

Slide 28 text

զʑ͕ର৅ϏδωεΛ ͲͷΑ͏ʹଊ͑ͯɺ ͲͷΑ͏ʹγεςϜԽ͢Δ͔ Λදݱ͢ΔϞσϧ

Slide 29

Slide 29 text

ਤॻؗͷۀ຿Λ૝૾ͯ͠ॻ͍ͨྫ ※͋͘·ͰྫͳͷͰਤॻؗͷۀ຿͕ ͢΂ͯ͜ͷϞσϧʹͳΔΘ͚Ͱ͸ͳ͍

Slide 30

Slide 30 text

ϞσϧΛ࢖͏ࣄͰԿ͕خ͍͠ͷ͔ʁ υϝΠϯϞσϧΛݩʹ࣮૷͢ΔࣄͰ ίʔυ͕ۀ຿ͷ ஌ࣝɾ֓೦ͱରԠͮ͘

Slide 31

Slide 31 text

υϝΠϯϞσϧ ιʔείʔυ υϝΠϯ ʢෳࡶͳϢʔβʔͷ׆ಈɾۀ຿஌ࣝʣ ஌ࣝΛબͼൈ͖ɺந৅Խ υϝΠϯϞσϧΛݩʹઃܭ มߋͷϑΟʔυόοΫ

Slide 32

Slide 32 text

ιʔείʔυ υϝΠϯ ʢෳࡶͳϢʔβʔͷ׆ಈɾۀ຿஌ࣝʣ ରԠ͢Δ

Slide 33

Slide 33 text

υϝΠϯϞσϧͱ͸ಛఆͷਤͰ͸ͳ͘ɺ ਤ͕఻͑Α͏ͱ͍ͯ͠Δߟ͑ํͰ͋Δ Eric Evans ஫ҙʂʂ

Slide 34

Slide 34 text

υϝΠϯϞσϧ͸UMLΫϥεਤ ։ൃͷ࠷ॳʹҰؾʹ࡞ͬͯऴΘΓ Α͋͘Δޡղ

Slide 35

Slide 35 text

௒ॏཁ 1. ͓٬͞Μͷۀ຿ͷษڧ 2. γεςϜԽର৅ྖҬͷ֓೦ͷ੔ཧ 3. ॏཁͳ֓೦͔ΒϞσϧΛ࡞੒ ๏ γεςϜԽର৅ྖҬ͚ͩͰ͸ͳ͘ɺͦͷपลͷ஌ࣝ΋ؚΊΔ ๏ γεςϜʹஔ͖׵͑ͨΒͲ͏ͳΔ͔ʁ͸ߟ͑ͳ͍Α͏ʹ͢Δ ๏ ໊ࢺɺಈࢺΛத৺ʹ ๏ ʮ΋ͷʯ͚ͩͰͳ͘ɺϓϩηεʹ΋ண໨͢Δ ๏ ͍͖ͳΓ׬ᘳͳϞσϧ͸ग़ͯ͜ͳ͍ͱׂΓ੾Δ͜ͱ͕େ੾

Slide 36

Slide 36 text

ᶄઃܭύλʔϯͷద༻

Slide 37

Slide 37 text

υϝΠϯϞσϧ ιʔείʔυ ϞσϧͷҙਤΛ ίʔυʹ൓өͤ͞Δ ઃܭύλʔϯͱ͸…

Slide 38

Slide 38 text

1. ΤϯςΟςΟ 2. ஋ΦϒδΣΫτ 3. αʔϏε

Slide 39

Slide 39 text

ΤϯςΟςΟ ಉҰੑΛ࣋ͬͨϞσϧཁૉʹద༻ ର৅ͷଐੑ͚ͩͰ͸ ൺֱͰ͖ͳ͍ੑ࣭

Slide 40

Slide 40 text

ར༻ऀ ໊લ΍೥ྸΛൺֱͯ͠΋ ಉҰਓ෺͔൑ఆͰ͖ͳ͍

Slide 41

Slide 41 text

public class User { private final Long id; private String firstName; private String lastName; public Person(Long id, String firstName, String lastName) { … } public boolean isIdentifiedBy(Person otherPerson) { return this.id == otherPerson.id; } } ҰҙʹͳΔID IDΛ༻͍ͯ ಉҰੑΛൺֱ͢Δ ϝιου

Slide 42

Slide 42 text

஋ΦϒδΣΫτ ಉ஋ੑΛ࣋ͬͨϞσϧཁૉʹద༻ ଐੑ͚ͩͰಉҰͳͷ͔ ൺֱͰ͖Δੑ࣭

Slide 43

Slide 43 text

ϖʔδ਺ දݱ͍ͯ͠Δ஋ͷΈͰ ಉҰͳͷ͔൑ఆͯ͠΋໰୊ͳ͍ 10ϖʔδ == 10ϖʔδ true 10ϖʔδ == 20ϖʔδ false

Slide 44

Slide 44 text

public class NumberOfPages { private final int number; public NumberOfPages(int value) { … } public boolean isSameValueAs(NumberOfPages otherValueObject) { return this.number == otherValueObject.number; } } ϑΟʔϧυͷ஋Λ࢖༻͠ ಉ஋ੑΛൺֱ͢Δϝιου ҰҙʹͳΔID͸࣋ͨͳ͍

Slide 45

Slide 45 text

αʔϏε υϝΠϯ಺ͷखଓ͖Λදݱ͢Δ ಛఆͷ֓೦ʹඥ͔ͮͣɺ ϓϩηεͷΈʹؔ৺͕͋Δ

Slide 46

Slide 46 text

ି͠ग़͠ ಛఆͷ֓೦ʹඥ͔ͮͣ ϓϩηεͷΈΛද͢

Slide 47

Slide 47 text

public class RentalService { // ૹۚ public static Rental rentalBook( User rentalUser, Book rentalBook) { // ି͠ग़ͤΔ͔֬ೝ if (!RentalPolicy.canRental(rentalUser, rentalBook)) throw new IllegalArgumentException(); // ି͠ग़͢ Rental rental = rentalUser.rental(rentalBook); return rental; } } Ϋϥεϝιου ͱ࣮ͯ͠૷͠ಛఆͷ֓೦͔Β෼཭

Slide 48

Slide 48 text

ᶅ υϝΠϯ૚ͷ࡞੒

Slide 49

Slide 49 text

ෳࡶͳϏδωεΛදݱ͢Δίʔυ͕ ଞͷٕज़ཁૉͷίʔυͱࠞ͟Δ

Slide 50

Slide 50 text

Θ͔Γʹ͍͘ίʔυͷग़དྷ্͕Γ ௿ڽू౓ɺີ݁߹...

Slide 51

Slide 51 text

υϝΠϯϞσϧʹΑΓಋ͖ग़͞ΕΔ ίʔυΛଞͷٕज़ྖҬ͔Βִ཭

Slide 52

Slide 52 text

ϔΩαΰφϧΞʔΩςΫνϟ

Slide 53

Slide 53 text

ۀ຿Λද͢ίʔυ

Slide 54

Slide 54 text

fintan.jp

Slide 55

Slide 55 text

݁ՌͲ͏ͩͬͨʁ

Slide 56

Slide 56 text

ᶃ ཧղ͠΍͍͢ίʔυ

Slide 57

Slide 57 text

ର৅ۀ຿ʢυϝΠϯʣ ͷݴ༿ ίʔυ

Slide 58

Slide 58 text

ҙਤΛදݱ͢Δίʔυ

Slide 59

Slide 59 text

։ൃ଎౓޲্ ෆ۩߹ൃੜΛ཈੍

Slide 60

Slide 60 text

ᶄίϛϡχέʔγϣϯίετͷ௿ݮ

Slide 61

Slide 61 text

ϝϯόશһ͕ ಉ͡υϝΠϯϞσϧΛݩʹ ։ൃ͢Δ

Slide 62

Slide 62 text

ϝϯόશһ͕ ଊ͍͑ͯΔۀ຿Ϟσϧ͕ ಉ͡

Slide 63

Slide 63 text

ݴ༿ɾߟ͑ํ͕ ཧղͰ͖Δ

Slide 64

Slide 64 text

ίʔυʹԿΛՃ͑ͨͷ͔ʁ ίʔυΛͲ͏มߋͨ͠ͷ͔ʁ ͳͥͦΕΛ΍ͬͨͷ͔ʁ ϚʔδϦΫΤετ ·ΔͰࣗ෼͕࡞ۀͨ͠ͷ͔ͷΑ͏ʹ ෼͔Δ

Slide 65

Slide 65 text

ᶅ มߋͷӨڹൣғ͕͙͢ʹ෼͔Δ

Slide 66

Slide 66 text

ࠓ·Ͱ ཁٻͷมԽ ⬇ ίʔυʹͲΜͳӨڹ͕ग़ΔͩΖ͏͔ʁ

Slide 67

Slide 67 text

υϝΠϯۦಈઃܭಋೖޙ ཁٻͷมԽ ⬇ զʑ͕ଊ͍͑ͯΔۀ຿Ϟσϧ͸ Ͳ͏มԽ͢ΔͷͩΖ͏͔ʁ

Slide 68

Slide 68 text

ΩϟϦΞ࠾༻ͷ ͓஌Βͤ

Slide 69

Slide 69 text

fintan.jp

Slide 70

Slide 70 text

͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ