Slide 1

Slide 1 text

࣭ͷߴ͍"1*Λ࡞ΔͨΊͷ ͭͷश׳ 1)1ΧϯϑΝϨϯε !IBOIBO

Slide 2

Slide 2 text

‣ !IBOIBO ‣ 8FC"QQMJDBUJPO &OHJOFFS ‣ :PLPIBNB/PSUI؅ཧਓ "CPVUNF

Slide 3

Slide 3 text

wडୗ։ൃձࣾʹ͓͚Δ஌ݟ w3FTU"1*ͷ඼࣭ΛߴΊΔҝʹ΍͍ͬͯΔࣄ wΤϯδχΞ͔Βͷࢹ఺ "CPVUUIJTUBML

Slide 4

Slide 4 text

$POUFOU ։ൃલͷ஫ҙ఺ ᶃ ܖ໿ͷ֬ೝ ᶄ ݟੵͷ֬ೝ ᶅ νʔϜମ੍ "1*։ൃͷͭͷश׳ ᶃ ઃܭجૅ஌ࣝΛ਎ʹ͚ͭΔ ᶄ σʔλʹ஫໨͢Δ ᶅ ৗ༻ͷઃܭπʔϧΛ࣋ͭ ᶆ APPઃܭࢥ૝Λ৺ʹࠁΉ ᶇ ద੾ͳWAFΛબ୒͢Δ ᶈ ςετϑΝʔετͰ࡞Δ ᶉ CIͱࣗಈϦϦʔεΛߦ͏

Slide 5

Slide 5 text

$POUFOU ։ൃલͷ஫ҙ఺ ᶃ ܖ໿ͷ֬ೝ ᶄ ݟੵͷ֬ೝ ᶅ νʔϜମ੍ "1*։ൃͷͭͷश׳ ᶃ ઃܭجૅ஌ࣝΛ਎ʹ͚ͭΔ ᶄ σʔλʹ஫໨͢Δ ᶅ ৗ༻ͷઃܭπʔϧΛ࣋ͭ ᶆ APPઃܭࢥ૝Λ৺ʹࠁΉ ᶇ ద੾ͳWAFΛબ୒͢Δ ᶈ ςετϑΝʔετͰ࡞Δ ᶉ CIͱࣗಈϦϦʔεΛߦ͏

Slide 6

Slide 6 text

։ൃલͷ஫ҙ఺

Slide 7

Slide 7 text

w ೳྗͷߴ͍ΤϯδχΞ͕඼࣭ͷߴ͍"1*Λ࡞ΕΔͱ ͸ඞͣ͠΋ݶΒͳ͍ɻ w ೳྗΛൃش͢ΔͨΊͷ࠷௿ݶͷ৚݅ΛٻΊ͍ͯ͘ඞ ཁ͕͋Δɻ

Slide 8

Slide 8 text

ᶃ ܖ໿ͷ֬ೝ

Slide 9

Slide 9 text

੥ෛܖ໿Ͱೲظ͸ܾ·͍ͬͯΔ͚Ͳ… w ΍Δ͜ͱ͸ܾ·ͬͯͳ͍ w ҰମԿΛ੥͚ෛͬͨʁ

Slide 10

Slide 10 text

࠶ݟੵ͕ܭըʹೖͬͯͳ͍ w ࢓༷͸มԽ͢Δ w ΍Δ͜ͱ΋มΘΔ w ݟੵ͚ͩมΘΒͳ͍ʁ

Slide 11

Slide 11 text

੥ෛɾ४ҕ೚ͳͷʹࢦشݖ͕ແ͍ w ٳՋͷ࿈བྷઌฉ͔ΕͨΓ w ૬खͷ෰຿نఔʹԊ͏ʁ w ҧ๏ͳΜ͡Όɾɾɾ

Slide 12

Slide 12 text

w ܖ໿಺༰͸࠷ޙͷࡆͱͯ͠कͬͯ͘ΕΔ६ w ΤϯδχΞ͔ͩΒؔ܎ͳ͍ɾɾɾ͸/( w ࣾ಺Ͱܖ໿ͷΨΠυϥΠϯΛ࡞ΔͳͲͯ͠ ๷೾అΛ࡞͓ͬͯ͘ খ·ͱΊ

Slide 13

Slide 13 text

ᶄ ݟੵͷ֬ೝ

Slide 14

Slide 14 text

ݟੵͷ਺ࣈ͸ίϛοτϝϯτʹͳΔ w ਺ࣈ͚͕ͩҰਓา͖͍ͯ͘͠ w ॳظͷݟੵ͕ਖ਼͍͠ͱ͍͏ؒҧͬͨղऍ w ݴͬͨऀෛ͚ͷੈք

Slide 15

Slide 15 text

ܭը͕มΘͬͯ΋ݟੵ͕มΘΒͳ͍ w ೲظʹ߹Θͤͯݟੵ͕ॖখ͢Δոݱ৅ w ಾͷΤΫηϧද͕ര஀ w ϦϦʔε೔͸ෆಈ

Slide 16

Slide 16 text

νʔϜ಺Ͱ΋ݟੵͷղऍ͕ҟͳ͍ͬͯΔ w Ӧۀ͸Ӧۀͷղऍ w 1.͸1.ͷղऍ w ΤϯδχΞ͸ݟੵ͕͍͍Ճݮͳ͜ͱΛ஌͍ͬͯΔ

Slide 17

Slide 17 text

w νʔϜ಺ͰݟੵͷษڧձΛ͢Δ w ಾղऍ͕ߦΘΕͳ͍Α͏ʹৗʹҙࣝ߹Θͤ w ݟੵ͸ઈ͑ͣมԽ͢Δ খ·ͱΊ

Slide 18

Slide 18 text

w ໊ݴʮݟੵΓ͸ఱؾ༧ใʯ w ن໛Ͱݟੵɺ࣮੷Ͱ׬੒೔Λܭࢉ w ݟੵʹର͢Δਖ਼͍͠ೝࣝΛڭ͑ͯ͘ΕΔ ࢀߟਤॻ ΞδϟΠϧͳ ݟੵΓͱܭըͮ͘Γ

Slide 19

Slide 19 text

ᶅ νʔϜମ੍ͷ֬ೝ

Slide 20

Slide 20 text

ϓϩάϥϚͷϚϧνλεΫ͸ېࢭ w ௐ੔͠ͳ͕Β֎஫͠ͳ͕Βɺ։ൃ͢Δͷ͸ແཧ w ਓؒ͸Ұ౓ʹҰͭͷ͜ͱ͔͠ग़དྷͳ͍ w ࡞ۀऀ͕͖ͪΜͱ̍ਓ೔೔ΛऔΕΔνʔϜମ੍

Slide 21

Slide 21 text

νʔϜମ੍ʹ·ͭΘΔόζϫʔυ w ϓϨΠϯάϚωʔδϟʔ w ϑϧελοΫΤϯδχΞ w ͣͬͱ࠾༻׆ಈ͍ͯ͠ΔΑ͏ͳձࣾʹଟ͍৬छ

Slide 22

Slide 22 text

w ࡞ۀ͕࣌ؒऔΕΔνʔϜମ੍ w ҆৺ײ͕ແ͍νʔϜͰ͸։ൃͮ͠Β͍ খ·ͱΊ

Slide 23

Slide 23 text

$POUFOU ։ൃલͷ஫ҙ఺ ᶃ ܖ໿ͷ֬ೝ ᶄ ݟੵͷ֬ೝ ᶅ νʔϜମ੍ "1*։ൃͷͭͷश׳ ᶃ ઃܭجૅ஌ࣝΛ਎ʹ͚ͭΔ ᶄ σʔλʹ஫໨͢Δ ᶅ ৗ༻ͷઃܭπʔϧΛ࣋ͭ ᶆ APPઃܭࢥ૝Λ৺ʹࠁΉ ᶇ ద੾ͳWAFΛબ୒͢Δ ᶈ ςετϑΝʔετͰ࡞Δ ᶉ CIͱࣗಈϦϦʔεΛߦ͏

Slide 24

Slide 24 text

"1*։ൃͷͭͷश׳

Slide 25

Slide 25 text

ᶃ ઃܭجૅ஌ࣝΛ਎ʹ͚ͭΔ

Slide 26

Slide 26 text

RestAPIͷઃܭ͸؁͘ΈΒΕ͕ͪ w 8FCαΠτͷϊϦͰ࡞ΒΕͯ͠·͏ w +40/ฦͯ͠Ε͹ͦΕͰ0, w 63-͔ΒಡΈऔΕΔ৘ใ͕গͳ͍

Slide 27

Slide 27 text

཈͑ͯཉ͍͠ઃܭࢥ૝΍צॴ w -46%WT44,% w ར༻ऀʹ෼͔Γ΍͍͢63-ઃܭ w )551ͷ࢓૊ΈΛ্खʹར༻͢Δ

Slide 28

Slide 28 text

w "1*ઃܭͷڭయ w खࠒͳϖʔδ਺Ͱแׅతʹֶ΂Δ w ؤுΕ͹೔ͰಡΊ·͢ ࢀߟਤॻ 8FC"1* 5IF(PPE1BSUT ਫ໺و໌ ஶ ※͜ΕҰ࡭ಡΉ͚ͩͰ͔ͳΓҧ͍͕Ͱ·͢

Slide 29

Slide 29 text

ᶄ σʔλʹ஫໨͢Δ

Slide 30

Slide 30 text

APIΛઃܭ͢Δͱ͖͸·ͣσʔλ͔Β w "1*͸σʔλΛར༻ऀʹఏڙ͢Δ࢓૊Έ w ٧·Δॴ͸42-͕ϝΠϯ w σʔλϞσϧ͔Β"1*࢓༷ΛܾΊ͍ͯ͘

Slide 31

Slide 31 text

σʔλɾϞσϧ͔Β൑அͰ͖Δ͜ͱ w ࢓༷ͷແཧΛચ͍ग़ͤΔ w σʔλ͕୯७Ͱ͋Ε͹"1*Λ࡞Βͳ͍ܾஅ΋ɻ w #BB4Ͱ։ൃͷόοΫΤϯυ

Slide 32

Slide 32 text

σʔλɾϞσϧͷઃܭํ๏ w ݄ฒΈ͚ͩͲཁ݅ఆٛ w ݄ฒΈ͚ͩͲ֎෦ઃܭ 6*69ઃܭ w ίπίπͱ&3ਤΛ࡞Δ

Slide 33

Slide 33 text

w σʔλϞσϦϯάೳྗ͸"1*ͷ඼࣭ʹ௚݁ w ৔߹ʹΑͬͯ͸"1*Λ࡞Βͳ͍൑அ

Slide 34

Slide 34 text

w ϦϨʔγϣφϧϞσϧͷཧ࿦Λֶ΂Δ w ͳΜͱͳ͘ɾɾɾͷཧ۶͕෼͔Δ w ಡΉͷ͸݁ߏେม ࢀߟਤॻ ཧ࿦͔ΒֶͿ σʔλϕʔε࣮ફೖ໳ Ԟ໺װ໵ ஶ

Slide 35

Slide 35 text

w ύϑΥʔϚϯεΛҙࣝͨ͠42- w %#.4ͷ࣮ߦܭըʹର͢Δཧղ ࢀߟਤॻ 42-࣮ફೖ໳ ϛοΫ ஶ

Slide 36

Slide 36 text

ᶅ ৗ༻ͷઃܭπʔϧΛ࣋ͭ

Slide 37

Slide 37 text

खʹೃછΜͩઃܭπʔϧ͸ๅ෺ w ઃܭ੒Ռ෺ͱͯ͠&3ਤɺ"1*࢓༷ॻ͕ඞཁ w ϙΠϯτΛ཈͍͑ͯΕ͹ɺͲΕͰ΋ߏΘͳ͍ɻ

Slide 38

Slide 38 text

ERਤ࡞੒ͷπʔϧબఆϙΠϯτ w ಛʹແ͠ɻ w ݟ΍ͯ͘͢ɺӡ༻ָ͕ͳΒԿͰ΋͍͍ɻ

Slide 39

Slide 39 text

w .BDͰಈ͘ʂ w 1%'ग़ྗ͕͋Δ w ૢ࡞ੑ΋·͋·͋Ͱݟͨ໨΋0, ࢀߟπʔϧ .Z42-8PSLCFODI

Slide 40

Slide 40 text

API࢓༷ॻ࡞੒ͷπʔϧબఆϙΠϯτ w ࢓༷ॻʹϒϥ΢βͰΞΫηεͰ͖Δ w มߋͨ͠࢓༷ॻͷߋ৽Λ$*ܦ༝Ͱߦ͑Δ

Slide 41

Slide 41 text

w +40/PSZBNMͰฤू0, w ϒϥ΢βͰӾཡՄೳ w %PDLFSͰ؆୯ʹߏஙՄೳ w ؔ࿈πʔϧ΋ॆ࣮ ࢀߟπʔϧ 4XBHHFS6*

Slide 42

Slide 42 text

w खʹೃછΉઃܭπʔϧΛ୳͓ͯ͘͠ w "1*࢓༷ॻ͸"1*ར༻ऀͷҝʹ΋
 ࠷৽ͷঢ়ଶΛΩʔϓ͠қ͍πʔϧΛબͿ

Slide 43

Slide 43 text

ᶆ APPઃܭࢥ૝Λ৺ʹࠁΉ

Slide 44

Slide 44 text

GBDUPSBQQ IUUQTGBDUPSOFU

Slide 45

Slide 45 text

Մ༻ੑͷߴ͍ΞϓϦέʔγϣϯͷઃܭࢥ૝ w ͱΓ͋͑ͣಡΜͲ͘ w ϞμϯͳΞϓϦͷઃܭࢥ૝͕٧·͍ͬͯΔ w ࠷ۙ͸ී௨ʹҙࣝ͞Ε͍ͯΔؾ΋͢Δ

Slide 46

Slide 46 text

ᶇ ద੾ͳWAFΛબ୒͢Δ

Slide 47

Slide 47 text

ΦϨΦϨϑϨʔϜϫʔΫ͸΍Ί͓ͯ͜͏ w ޙͷਓͷ͜ͱΛߟ͑Α͏ ੾࣮ w ͍ͭ࠷ۙ΋ා͍ͷΛݟͨ w ՈͰ΍Ζ͏ʂ

Slide 48

Slide 48 text

WAFબఆϙΠϯτ w .JHSBUJPO w ςετπʔϧ w ίϚϯυϥΠϯ w ΤϥʔϋϯυϦϯά

Slide 49

Slide 49 text

w -BSBWFM੡ͷܰྔ8"' w ଎͍ˍࢀߟ৘ใ͕ଟ͍ w ઌͷબߟϙΠϯτ͸શͯΫϦΞ ࢀߟ8"' -VNFO https://lumen.laravel.com/

Slide 50

Slide 50 text

w ඞཁͳػೳΛ࣋ͬͨ8"'Λ஌͓ͬͯ͘ w ΦϨΦϨ͸΍ΊΑ͏ɻ w ϚΠΫϩϑϨʔϜϫʔΫXJUIDPNQPTFS ΋ྑ͍ͱ͸ࢥ͏ɻ

Slide 51

Slide 51 text

ᶈ ςετϑΝʔετͰ࡞Δ

Slide 52

Slide 52 text

+VTU%P*U

Slide 53

Slide 53 text

࣮͸API͸͘͢͝ςετ͠΍͍͢ w "1*࢓༷ॻͰ*0͕ܾ·͍ͬͯΔ w 63-୯ҐͰ࡞Ε͹͍͍ͷͰ෼͔Γ΍͍͢ w ΍Βͳ͍ͳΜͯ໪ମແ͍ʂ

Slide 54

Slide 54 text

w ΍Βͳ͍બ୒ࢶ͸ແ͍ɻ w ಛʹ࢓༷มߋ΍όάमਖ਼࣌ʹҖྗΛൃش w શମͱͯ͠͸։ൃ଎౓্͕͕Δɻ

Slide 55

Slide 55 text

w -VNFOʹ΋σϑΥͰ૊ΈࠐΜͰ͋Δ w આ໌ෆཁͷ༗໊ςετπʔϧ ࢀߟςετπʔϧ 1)16OJU https://phpunit.de/

Slide 56

Slide 56 text

w #%%ͷςετπʔϧ w &&ςετͰΑ͘࢖͏ w ڈ೥ͷ๻ͷൃද͸#FIBUۦಈ։ൃ ࢀߟςετπʔϧ #FIBU http://behat.org/en/latest/

Slide 57

Slide 57 text

ᶉ CIͱࣗಈϦϦʔεΛߦ͏

Slide 58

Slide 58 text

CI΍ࣗಈϦϦʔε͸։ൃʹઐ೦͢Δҝ w ҰʑϦϦʔε࡞ۀ͢Δͷ໘౗͍͘͞ w ςετͷ࣮ߦ΋໘౗͍͘͞ w ଵଦͷ݁থ͕ࣗಈϦϦʔε

Slide 59

Slide 59 text

CI΍ࣗಈϦϦʔεΛଓ͚ΔϙΠϯτ w ແཧ͠ͳ͍ w ͭͶʹ࠷௿ݶͷ͜ͱΛ͢Δ w ༨༟͕ग़དྷͨΒ߽՚ʹ͍ͯ͘͠

Slide 60

Slide 60 text

w ແྉ Ϗϧυίϯςφ w 1SJWBUF3FQPTJUPSZ΋࢖͑Δ w %PDLFSίϯςφͷCVJMEʹ΋ରԠ w ࢿྉ΋ॆ࣮ͯͯ͠࢖͍΍͍͢ ࢀߟ$*πʔϧ $JSDMF$* https://circleci.com/

Slide 61

Slide 61 text

w ແྉ w 1SJWBUF3FQPTJUPSZ΋࢖͑Δ w Ϗϧυ؀ڥʹ%PDLFSίϯςφ͕࢖͑Δ w ݹ͍ࢿྉ͕ଟ͍ͷ͕গ͠೉఺ ࢀߟ$*πʔϧ 8FSDLFS http://wercker.com/

Slide 62

Slide 62 text

w ϦϦʔε࡞ۀ͸ػցʹ೚ͤΑ͏ w εϞʔϧελʔτͰ࢝Ί·͠ΐ͏ w ৭Μͳ$*πʔϧ͋ΔͷͰࢼͯ͠ݟΑ͏

Slide 63

Slide 63 text

'JO