Slide 1

Slide 1 text

ෳࡶͳυϝΠϯʹ టषཱͪ͘޲͔͏ #ccc_e4 2018/12/15 JJUG CCC 2018 Fall גࣜձࣾΤεɾΤϜɾΤε 1

Slide 2

Slide 2 text

ձࣾ঺հ #ccc_e4 2

Slide 3

Slide 3 text

10೥ޙͷ೔ຊΛΑ͘͢Δ࢓ࣄΛ͠Α͏ #ccc_e4 3

Slide 4

Slide 4 text

#ccc_e4 4

Slide 5

Slide 5 text

ࣗݾ঺հ @su_kun_1899 ϞϒϓϩάϥϚɻΤϞ࿮ɻ ৺͸͍ͭͰ΋εΫϥϜϚελʔɻ จܥΤϯδχΞɻ Spockͱ͔ςετͷ࿩޷͖ɻ web/java/kotlin/agile/scrum ࠷ۙ͸Go͕޷͖Ͱ͢ɻ #ccc_e4 5

Slide 6

Slide 6 text

࿩͢͜ͱ #ccc_e4 6

Slide 7

Slide 7 text

ෳࡶͳυϝΠϯͱઓ͏ͨΊʹ • Ͳ͏΍ͬͯ࢝ΊΔ͔ • Ͳ͏΍ͬͯਐΊΔ͔ • (ࢲ͕ͨͪ) Ͳ͏΍͍ͬͯΔ͔ #ccc_e4 7

Slide 8

Slide 8 text

࿩͞ͳ͍͜ͱ • ಛఆͷઃܭख๏ • DDD, OOP... • ٕज़ͷৄࡉ • Kotlin, SpringBoot... #ccc_e4 8

Slide 9

Slide 9 text

Ͳ͏΍ͬͯ͸͡ΊΔ͔ #ccc_e4 9

Slide 10

Slide 10 text

ෳࡶͳυϝΠϯʁ #ccc_e4 10

Slide 11

Slide 11 text

• Ξϯίϯτϩʔϥϒϧ • ๏཯ɾ੍౓ɾϧʔϧ • ొ৔ਓ෺ɾγεςϜ • ΦϖϨʔγϣϯ • ࣌ؒ࣠ • εςʔλε • etc... #ccc_e4 11

Slide 12

Slide 12 text

հޢอݥ #ccc_e4 12

Slide 13

Slide 13 text

• հޢܦӦࢧԉαʔϏε • ࠾༻ɺӦۀɺڅ༩ɺۈଵɻɻ • հޢอݥ੥ٻ • WebΞϓϦέʔγϣϯ • Kotlin + SpringBoot #ccc_e4 13

Slide 14

Slide 14 text

ਆಸ઒ݝࠃຽ݈߁อݥஂମ࿈߹ձHP http://www.kanagawa-kokuho.or.jp/kaigo/ 14

Slide 15

Slide 15 text

հޢอݥͷෳࡶ͞ • څ෇཰, ஍Ҭ୯Ձ • հޢ౓, ݶ౓ֹ • αʔϏεछྨ, αʔϏείʔυ • Ճࢉɾݮࢉ, ࢉఆߏ଄ • ๏վਖ਼ • ެඅ, ฦ໭ • ࣏ࣗମ͝ͱͷಛྫ • etc... #ccc_e4 15

Slide 16

Slide 16 text

๏վਖ਼ • ̏೥ຖʹେ෯ݟ௚͠ • ෳࡶͳ΋ͷ͸ΑΓෳࡶʹͳ͍ͬͯ͘ • ෳࡶ͞͸มԽ͢Δ #ccc_e4 16

Slide 17

Slide 17 text

ݱ࣮ੈք͸ γεςϜͷͨΊͷ΋ͷͰ͸ͳ͍ #ccc_e4 17

Slide 18

Slide 18 text

ҰຊಓΛݟ͚ͭΔ #ccc_e4 18

Slide 19

Slide 19 text

Ұຊಓ • Not ཁٻͷચ͍ग़͠ • Not Ձ஋ఏڙͷ୯Ґ • But υϝΠϯͷ࠷খ୯Ґ #ccc_e4 19

Slide 20

Slide 20 text

Why? • ҭͯΔ • ؒҧ͑Δ • ΍Γ௚͢ • มԽΛ౰ͨΓલʹ͢Δ #ccc_e4 20

Slide 21

Slide 21 text

ҰຊಓΛݟ͚ͭग़͢ #ccc_e4 21

Slide 22

Slide 22 text

υϝΠϯͷֶश #ccc_e4 22

Slide 23

Slide 23 text

࣮຿ͷϩʔϧϓϨΠ #ccc_e4 23

Slide 24

Slide 24 text

ϢʔβʔετʔϦʔϚοϐϯά ϢʔβʔετʔϦʔϚοϐϯά https://www.oreilly.co.jp/books/9784873117324/ 24

Slide 25

Slide 25 text

ਆಸ઒ݝࠃຽ݈߁อݥஂମ࿈߹ձHP http://www.kanagawa-kokuho.or.jp/kaigo/ 25

Slide 26

Slide 26 text

1. հޢࣄۀऀ͕ར༻ऀຖͷεέδϡʔϧͷ࣮੷Λ֬ఆ͢Δ • ར༻ऀຖͷ੥ٻॻʢอݥ෼ʣ 2. հޢࣄۀऀ͕ࠃ΁ͷ੥ٻֹۚΛ֬ఆ͢Δ • հޢࣄۀऀຖͷ੥ٻॻʢอݥ෼ʣ 3. αʔϏεࣄۀऀ͕ར༻ऀ΁ͷ੥ٻֹۚΛ֬ఆ͢Δ • ར༻ऀຖͷ੥ٻॻʢࣗඅ෼ʣ #ccc_e4 26

Slide 27

Slide 27 text

#ccc_e4 27

Slide 28

Slide 28 text

՝୊؅ཧ • όοΫϩά • TODOϦετ • ͙͢ʹ࢒͢ #ccc_e4 28

Slide 29

Slide 29 text

ελʔτϥΠϯʹ͸ཱͬͨ #ccc_e4 29

Slide 30

Slide 30 text

Ͳ͏΍ͬͯਐΊΔ͔ #ccc_e4 30

Slide 31

Slide 31 text

υϝΠϯʹϑΥʔΧε͢Δ #ccc_e4 31

Slide 32

Slide 32 text

ϞσϧϕʔεͷΞϓϩʔν • (ཁٻ) -> ֓೦ • (֓೦) -> Ϟσϧ #ccc_e4 32

Slide 33

Slide 33 text

The complexity is complicated. #ccc_e4 33

Slide 34

Slide 34 text

Good programmers write code that humans can understand. — -Martin Fowler #ccc_e4 34

Slide 35

Slide 35 text

υϝΠϯͷཧղΛ໌Β͔ʹ͢Δ • ʮ୭͕ԿΛ΍Δ͔ʁʯ • ཧղΛදݱ͢Δ࡞ۀ • (ཁٻ) -> ֓೦ • (֓೦) -> Ϟσϧ #ccc_e4 35

Slide 36

Slide 36 text

Ϟσϧͷநग़ #ccc_e4 36

Slide 37

Slide 37 text

! #ccc_e4 37

Slide 38

Slide 38 text

(ࢲ͕ͨͪ) Ͳ͏΍͍ͬͯΔ͔ #ccc_e4 38

Slide 39

Slide 39 text

Ϟσϧͷநग़ • ҰຊಓͷݴޠԽ • ໊ࢺͷநग़ • σʔλͱͦͷ࣋ͪओ #ccc_e4 39

Slide 40

Slide 40 text

#ccc_e4 40

Slide 41

Slide 41 text

෇ᝦͱϗϫΠτϘʔυ 1. Write and Talk! 2. Write and Talk!! 3. Write and Talk!!! #ccc_e4 41

Slide 42

Slide 42 text

#ccc_e4 42

Slide 43

Slide 43 text

Talk is cheap. Show me the code. — Linus Torvalds #ccc_e4 43

Slide 44

Slide 44 text

ίʔυΛॻ͘ #ccc_e4 44

Slide 45

Slide 45 text

Service • ΞϓϦέʔγϣϯ͕࣮ݱ͍ͨ͜͠ͱ • ϢʔεέʔεΛදݱ͢Δॲཧͷ୯Ґ • ϞσϧΛ࢖͏ #ccc_e4 45

Slide 46

Slide 46 text

ઃܭͷͨΊͷςετ • ݱ࣮ੈքΛදݱ͢Δͷ͕໨తͰ͸ͳ͍ • ServiceͷςετΛॻ͍ͯΈΔ • ࣮ݱ͍ͨ͜͠ͱΛݟࣦΘͳ͍ #ccc_e4 46

Slide 47

Slide 47 text

TDD Live in 50 minutes https://speakerdeck.com/twada/tdd-live-in-50-minutes 47

Slide 48

Slide 48 text

def "ࠃ΁ͷ੥ٻॻΛ࡞੒͢Δʹ͸"() { given: // Կ͕ඞཁͰ when: // ॲཧΛ࣮ߦ͢Δͱ then: // Կ͕Ͱ͖͕͋Δͷ͔ʁ } #ccc_e4 48

Slide 49

Slide 49 text

໋໊ • ୈೋݴޠ(ӳޠ)΁ͷஔ͖׵͑ • ೔ຊޠ͔ͩΒ௨͡Δɺ͸·΍͔͠ • ओޠͷ໌֬Խ #ccc_e4 49

Slide 50

Slide 50 text

/** * ݶ౓ֹ؅ཧର৅಺୯Ґ਺ͷ಺ɺڅ෇ର৅ͷ୯Ґ਺ */ fun benefitPointAppliedToPointLimit(): Point { return min( pointAppliedToPointLimit() - adjustmentPoint.total(), insuranceLicense.gradingMaxPoint ) } #ccc_e4 50

Slide 51

Slide 51 text

Ϟσϧͷߏ଄ #ccc_e4 51

Slide 52

Slide 52 text

"ଟ͘ͷ৘ใΛूΊͨوॏͳσʔλ" • σʔλ͸୯ͳΔ஋ • σʔλ͸࡞Γग़ͤͳ͍ • σʔλΛ૊Έ߹Θͤͨҙຯͷ͋Δ৘ใ • ৘ใ͸σʔλ͔Β࡞Γग़ͤΔ SQLΞϯνύλʔϯ https://www.oreilly.co.jp/books/9784873115894/ 52

Slide 53

Slide 53 text

• σʔλ͔ΒϞσϧΛੜ੒ • ίϯετϥΫλͰσʔλΛ౉͢ • ৘ใΛϞσϧ(ͷϝιου)͕ఏڙ • σʔλΛ૊Έ߹ΘͤɾՃ޻͢Δ #ccc_e4 53

Slide 54

Slide 54 text

લా͞Μ͕ ࠓ݄ อݥڅ෇අΛ ͍͘Β໯͑Δͷ͔ #ccc_e4 54

Slide 55

Slide 55 text

հޢࣄۀॴA͕લా͞Μʹ࣮ࢪͨ͠αʔϏε • 11/10 ਎ମհޢ 394୯Ґ • 11/20 ੜ׆ԉॿ 181୯Ґ • 11/30 ਎ମհޢ 394୯Ґ #ccc_e4 55

Slide 56

Slide 56 text

// σʔλͷऔಘ val serviceSection = serviceSectionRepository.findBy(sectionNumber) val insuranceLicense = insuranceLicenseRepository.findBy(licenseNumber, monthProvided) val actualResult = actualResultRepository.findBy(monthProvided, sectionNumber, licenseNumber) // Ϟσϧͷੜ੒ val estimate = Estimate(insuranceLicense, serviceSection, actualResult) // ৘ใͷఏڙ estimate.amount() // ߹ܭֹۚ estimate.benefitAmount() // อݥڅ෇ֹۚ estimate.careReceiverAmount() // ར༻ऀෛ୲ֹ estimate.amountBy(careType) // αʔϏεछྨ͝ͱͷֹۚ #ccc_e4 56

Slide 57

Slide 57 text

! #ccc_e4 57

Slide 58

Slide 58 text

// σʔλͷऔಘ val serviceSection = serviceSectionRepository.findBy(sectionNumber) val insuranceLicense = insuranceLicenseRepository.findBy(licenseNumber, monthProvided) val actualResult = actualResultRepository.findBy(monthProvided, sectionNumber, licenseNumber) // Ϟσϧͷੜ੒ val estimate = Estimate(insuranceLicense, serviceSection, actualResult) // ৘ใͷఏڙ estimate.amount() // ߹ܭֹۚ estimate.benefitAmount() // อݥڅ෇ֹۚ estimate.careReceiverAmount() // ར༻ऀෛ୲ֹ estimate.amountBy(careType) // αʔϏεछྨ͝ͱͷֹۚ #ccc_e4 58

Slide 59

Slide 59 text

σʔλͱ৘ใ͸੾ΓޱʹΑͬͯมΘΔ • ඞཁͳσʔλ͸Ϟσϧͱͯ͠ѻ͏ • Ϟσϧ͸σʔλΛѻ͏୯Ґ • σʔλΛந৅Խ͢ΔͱϞσϧʹͳΔ • Ϟσϧ͸৘ใΛఏڙ͢Δ #ccc_e4 59

Slide 60

Slide 60 text

! ੥ٻॻ " ར༻ऀ # $! ඃอݥऀূ # $! ࢧڅݶ౓୯Ґ਺ # $! ୯Ґ਺ " հޢࣄۀॴ # $! ୯Ґ਺୯Ձ # $! Ձ֨ $ ࣮੷εέδϡʔϧ #ccc_e4 60

Slide 61

Slide 61 text

੥ٻॻͷσʔλͱ৘ใ • ར༻ऀ -> ੥ٻઌ • հޢࣄۀॴ -> ੥ٻݩ • ࣮੷εέδϡʔϧ -> ੥ٻ໌ࡉ #ccc_e4 61

Slide 62

Slide 62 text

! ੥ٻॻ " ར༻ऀ # $! ඃอݥऀূ # $! ࢧڅݶ౓୯Ґ਺ # $! ୯Ґ਺ " հޢࣄۀॴ # $! ୯Ґ਺୯Ձ # $! Ձ֨ $ ࣮੷εέδϡʔϧ #ccc_e4 62

Slide 63

Slide 63 text

Ϟσϧͷநग़ • ୭͕ • ͲͷʮσʔλʯΛ஌͍ͬͯͯ • Կͷʮ৘ใʯΛఏڙ͢Δ • ͱߟ͑Δͷ͔ #ccc_e4 63

Slide 64

Slide 64 text

ਖ਼ղ͸ͳ͍ • ੾ΓޱΛܾΊΔͷ͸ࣗ෼ͨͪ • "खࠒͳେ͖͞" • ୯Ұ੹೚ • ςετ #ccc_e4 64

Slide 65

Slide 65 text

#ccc_e4 65

Slide 66

Slide 66 text

؀ڥ #ccc_e4 66

Slide 67

Slide 67 text

#ccc_e4 67

Slide 68

Slide 68 text

#ccc_e4 68

Slide 69

Slide 69 text

#ccc_e4 69

Slide 70

Slide 70 text

• ։ൃऀ͸5໊ • ϗϫΠτϘʔυ • ෇ᝦͱϖϯ • େ͖ͳϞχλ #ccc_e4 70

Slide 71

Slide 71 text

αΠΫϧͷ੾Γସ͑ίετΛͳ͘͢ #ccc_e4 71

Slide 72

Slide 72 text

υϝΠϯͷཧղΛ໌Β͔ʹ͢Δ • ʮ୭͕ԿΛ΍Δ͔ʁʯ • ཧղϨϕϧΛදݱ • શһ͕ཧղ͍ͯ͠Δඞཁ͕͋Δ #ccc_e4 72

Slide 73

Slide 73 text

ͻͱͭͷ͜ͱΛ ΈΜͳͰ΍Δ #ccc_e4 73

Slide 74

Slide 74 text

ϞϒϓϩɾϞϒϫʔΫ • ू߹஌ • ৘ใڞ༗ • ڭҭޮՌ WEB+DB PRESS Vol.102 https://gihyo.jp/magazine/wdpress/archive/2018/vol102 74

Slide 75

Slide 75 text

Agile Games 2017 - Mob Programming Conference https://2017.agilegamesnewengland.com/index.php/mob-programming-conference 75

Slide 76

Slide 76 text

Ϟϒͷམͱ݀͠ • ฏۉ଎౓ʹͳ͍ͬͯͳ͍͔ʁ • ໾ׂ෼୲͸ͳ͍͔ʁ • ࠷ߴ଎౓͸্͕͍ͬͯΔ͔ʁ • ϞϒϫʔΫ͸෢ثͷҰͭ #ccc_e4 76

Slide 77

Slide 77 text

৘ใڞ༗ͱυΩϡϝϯςʔγϣϯ #ccc_e4 77

Slide 78

Slide 78 text

Flow and Stock • Twitter ͱ YouTube • Chat ͱ Wiki #ccc_e4 78

Slide 79

Slide 79 text

όέʔγϣϯͷࣸਅ #ccc_e4 79

Slide 80

Slide 80 text

#ccc_e4 80

Slide 81

Slide 81 text

• FlowΛSlackʹ࢒͢ • FlowΛesaʹ࢒͢ • StockΛesaʹ࢒͢ #ccc_e4 81

Slide 82

Slide 82 text

#ccc_e4 82

Slide 83

Slide 83 text

ܭըͱ;Γ͔͑Γ #ccc_e4 83

Slide 84

Slide 84 text

୹͍αΠΫϧ • يಓमਖ਼ • ҙࢥܾఆ • ਐḿ #ccc_e4 84

Slide 85

Slide 85 text

5ஈ֊ͷҙࢥܾఆ ! ׬શʹಉҙ " Α͍ͱࢥ͏ # ΍ͬͯΈΔ͔ $ Ҿ͔͔ͬΔ͚Ͳɺ΍ͬͯΈΔ͔.. % ࢍಉͰ͖ͳ͍ͳ & ઈରʹμϝͩ #ccc_e4 85

Slide 86

Slide 86 text

#ccc_e4 86

Slide 87

Slide 87 text

ਐḿ #ccc_e4 87

Slide 88

Slide 88 text

Working software is the primary measure of progress. Principles behind the Agile Manifesto https://agilemanifesto.org/iso/en/principles.html 88

Slide 89

Slide 89 text

Appendix #ccc_e4 89

Slide 90

Slide 90 text

ϚΠΫϩαʔϏε • ΍Ί͓ͯ͜͏ • ४උ͸Ͱ͖Δ ϚΠΫϩαʔϏεΞʔΩςΫνϟ https://www.oreilly.co.jp/books/9784873117607/ 90

Slide 91

Slide 91 text

෗ഊ๷ࢭ૚ • ੍౓ࣗମͷ࿪ • ݱߦιϑτ΢ΣΞͷ࢓༷ • ӡ༻্ͷ੍໿ • etc #ccc_e4 91

Slide 92

Slide 92 text

Beware the Share. Check Your context. — Udi Dahan ϓϩάϥϚ͕஌Δ΂͖97ͷ͜ͱ https://www.oreilly.co.jp/books/9784873114798/ 92

Slide 93

Slide 93 text

·ͱΊ #ccc_e4 93

Slide 94

Slide 94 text

• ࠎ֨ʹͳΔҰຊಓΛݟ͚ͭग़͢ • ֆΛඳ͘ɺݴ༿ʹ͢Δ • ಈ࡞͢ΔίʔυΛॻ͘ • ࣦഊ͠ͳ͕ΒҭͯΔ #ccc_e4 94

Slide 95

Slide 95 text

#ccc_e4 95

Slide 96

Slide 96 text

ϞσϧΛҭͯΔ ࡞Γͳ͕ΒܾΊ͍ͯ͘ #ccc_e4 96

Slide 97

Slide 97 text

MAKE MISTAKS FASTR #ccc_e4 97

Slide 98

Slide 98 text

Usable Feasible Valuable #ccc_e4 98

Slide 99

Slide 99 text

No content