Slide 1

Slide 1 text

PHP Conference Japan 2019 ٢ా͋ͻΔ (@strtyuu) ϲ݄ͰΧόϨοδΛ ͔Βʹͨ͠࿩

Slide 2

Slide 2 text

ࣗݾ঺հ  ٢ా͋ͻΔ!TUSUZVV τΡΪϟολʔגࣜձࣾ 4PGUXBSF&OHJOFFS -BSBWFM+1$POGFSFODF ίΞελοϑ

Slide 3

Slide 3 text



Slide 4

Slide 4 text

ɾΧόϨοδ͋͛Δ͜ͱΛख์͠ʹਪ঑͢Δ΋ͷͰ͸͋Γ ·ͤΜɻ ɾΧόϨοδ͸ඞͣ͠΋ΞϓϦέʔγϣϯͷ඼࣭ͱൺྫ͠ ·ͤΜɻ ⚠$BVUJPO 

Slide 5

Slide 5 text

੒Ռൃද 

Slide 6

Slide 6 text

                        $PWFSBHF 5FTUT                                           

Slide 7

Slide 7 text

                        $PWFSBHF 5FTUT                                            Min.t ϦϦʔε

Slide 8

Slide 8 text

                        $PWFSBHF 5FTUT                                            PHP Conference Ԡื Min.t ϦϦʔε

Slide 9

Slide 9 text

                        $PWFSBHF 5FTUT                                            PHP Conference Ԡื Min.t ϦϦʔε ࠾୒͞ΕΔ

Slide 10

Slide 10 text

ͳͥɺ ΧόϨοδΛ্͔͛ͨͬͨͷ͔ 

Slide 11

Slide 11 text

ɾؾܰʹίʔυͷमਖ਼͕͍ͨ͠ ɾίʔυϦʔσΟϯάͷίετΛԼ͍͛ͨ ΧόϨοδΛ্͔͛ͨͬͨཧ༝ ΧόϨοδΛ্͔͛ͨͬͨཧ༝ 

Slide 12

Slide 12 text

ɾΫϥε͕ͨͪΧδϡΞϧʹґଘ͍͋ͬͯ͠Δ ɾϑϨʔϜϫʔΫϨΠϠͷվળΛ͠ଓ͚͍͕ͨɺӨڹൣғ ͕ͱͯ΋޿͍ ؾܰʹίʔυͷमਖ਼͕͍ͨ͠ ΧόϨοδΛ্͔͛ͨͬͨཧ༝ 

Slide 13

Slide 13 text

ɾΫϥε͕ͨͪΧδϡΞϧʹґଘ͍͋ͬͯ͠Δ ɾϑϨʔϜϫʔΫϨΠϠͷվળΛ͠ଓ͚͍͕ͨɺӨڹൣғ ͕ͱͯ΋޿͍ ؾܰʹίʔυͷमਖ਼͕͍ͨ͠ ΧόϨοδΛ্͔͛ͨͬͨཧ༝  ɾӨڹൣғ͕Θ͔Βͣɺςετ࿙Ε͕ൃੜ͢ΔՄೳੑ͕͋ Δ

Slide 14

Slide 14 text

ɾ5PHFUUFS͸೥ଓ͍͍ͯΔαʔϏε ɾྺ࢙తܦҢͷ͋Δίʔυ΋౰વ͋Δ ίʔυϦʔσΟϯάͷίετΛԼ͍͛ͨ ΧόϨοδΛ্͔͛ͨͬͨཧ༝ 

Slide 15

Slide 15 text

ɾ5PHFUUFS͸೥ଓ͍͍ͯΔαʔϏε ɾྺ࢙తܦҢͷ͋Δίʔυ΋౰વ͋Δ ίʔυϦʔσΟϯάͷίετΛԼ͍͛ͨ ΧόϨοδΛ্͔͛ͨͬͨཧ༝  ɾಡΜͰ࢓༷Λཧղ͢Δͷʹίετ͕ଟ͔͔͘Δ ɾαʔϏε͕ଓ͚͹ଓ͘΄ͲɺͦͷίετΛ෷͏ਓ਺͕ଟ͘ ͳΔ

Slide 16

Slide 16 text

ΧόϨοδΛ্͛ΔաఔͰ ΍ͬͨ͜ͱ 

Slide 17

Slide 17 text

ɾϧʔϧɾํ਑ܾΊ ɾςετ؀ڥͷ੔උ ɾFUD ΧόϨοδΛ্͛ΔաఔͰ΍ͬͨ͜ͱ ΧόϨοδΛ্͛ΔաఔͰ΍ͬͨ͜ͱ 

Slide 18

Slide 18 text

ɾϧʔϧɾํ਑ܾΊ ɾςετ؀ڥͷ੔උ ɾFUD ΧόϨοδΛ্͛ΔաఔͰ΍ͬͨ͜ͱ ΧόϨοδΛ্͛ΔաఔͰ΍ͬͨ͜ͱ 

Slide 19

Slide 19 text

ɾ·ͣ͸֎ଆ͔Βςετ͢Δ ɾϦϑΝΫλϦϯά͸࠷খݶʹɺςετΛॻ͘͜ͱΛ༏ઌ ɾʹΌʙΜΫϥεΛڐ͢ ϧʔϧɾํ਑ܾΊ ϧʔϧɾํ਑ܾΊ 

Slide 20

Slide 20 text

ɾϒϥοΫϘοΫεςετͳΒɺ࣮૷ͷ඼࣭Λؾʹͤͣς ετͰ͖Δ͜ͱ͕ଟ͍ ɾΧόϨοδ͕Ք͗΍ͦ͢͏ ·ͣ͸֎ଆ͔Βςετ͢Δ ϧʔϧɾํ਑ܾΊ 

Slide 21

Slide 21 text

ɾΨοπϦϦϑΝΫλϦϯάͯ͠Δͱ͕࣌ؒ଍Γͳ͍ ɾઃܭ΍ϦϑΝΫλϦϯά͸ܧଓͯ͠܁Γฦ͠ߦͳ͍ͬͯ ͘΋ͷ ɾ͍͖ͳΓ׬ᘳΛ໨ࢦ͢ͷͰ͸ͳ͘Ұาͣͭண࣮ʹਐΊͯ ͍͘ ɾ׬ᘳओٛ͸μϝ ϦϑΝΫλϦϯά͸࠷খݶʹ ςετΛॻ͘͜ͱΛ༏ઌ ϧʔϧɾํ਑ܾΊ 

Slide 22

Slide 22 text

ɾཧ૝తͳϦϑΝΫλϦϯάͱ͸΄Ͳԕ͍͕ɺݱ࣮ͷ౎߹ ͔Β͍ͼͭͳܗͰଥڠͤ͟ΔΛ͑ͳ͔ͬͨΫϥε ɾϦϑΝΫλϦϯάͷաఔͰ͸ઈରʹൃੜ͢Δ ɾྑ͘ͳΔͨΊͷୈҰาͱͯ͠ड͚ೖΕΔ͔͠ͳ͍ ʹΌʙΜΫϥεΛ࡞Δ ςετ؀ڥͷ੔උ 

Slide 23

Slide 23 text

ɾϧʔϧɾํ਑ܾΊ ɾςετ؀ڥͷ੔උ ɾFUD ΧόϨοδΛ্͛ΔաఔͰ΍ͬͨ͜ͱ ΧόϨοδΛ্͛ΔաఔͰ΍ͬͨ͜ͱ 

Slide 24

Slide 24 text

ɾ؆୯ʹςετσʔλΛ࡞Δ࢓૊ΈΛ༻ҙ͢Δ ɾ؆୯ʹ݁߹ςετΛͰ͖Δ࢓૊ΈΛ༻ҙ͢Δ ɾςετͷ࣮ߦ଎౓Λૣ͘͢Δ ɾάϩʔόϧϔϧύʔΛϞοΫͰ͖ΔΑ͏ʹ͢Δ ςετ؀ڥͷ੔උ ςετ؀ڥͷ੔උ 

Slide 25

Slide 25 text

ɾ؆୯ʹςετσʔλΛ࡞Δ࢓૊ΈΛ༻ҙ͢Δ ɾ؆୯ʹ݁߹ςετΛͰ͖Δ࢓૊ΈΛ༻ҙ͢Δ ɾςετͷ࣮ߦ଎౓Λૣ͘͢Δ ɾάϩʔόϧϔϧύʔΛϞοΫͰ͖ΔΑ͏ʹ͢Δ ςετ؀ڥͷ੔උ ςετ؀ڥͷ੔උ 

Slide 26

Slide 26 text

؆୯ʹςετσʔλΛ࡞Δ࢓૊ΈΛ༻ҙ͢Δ ςετ؀ڥͷ੔උ  ɾ׬શίϯετϥΫλͳΫϥεͰ΋ɺ"DUJWF3FDPSEͰ ΋ɺͲͪΒͰ΋ରԠͰ͖ΔΑ͏ʹ͍ͨ͠ ɾॊೈʹ஋Λ૊Έཱ͍ͯͨ ɾঢ়ଶͷ۩ମతͳ஋Λந৅ԽͰ͖ΔΑ͏ʹ͍ͨ͠

Slide 27

Slide 27 text

؆୯ʹςετσʔλΛ࡞Δ࢓૊ΈΛ༻ҙ͢Δ ςετ؀ڥͷ੔උ  ɾ׬શίϯετϥΫλͳΫϥεͰ΋ɺ"DUJWF3FDPSEͰ ΋ɺͲͪΒͰ΋ରԠͰ͖ΔΑ͏ʹ͍ͨ͠ ɾॊೈʹ஋Λ૊Έཱ͍ͯͨ ɾঢ়ଶͷ۩ମతͳ஋Λந৅ԽͰ͖ΔΑ͏ʹ͍ͨ͠ ɾͪΐ͏Ͳྑ͍ϥΠϒϥϦ͕ݟ͔ͭΒͳ͍ɾɾɾɻ

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

ςετͷ࣮ߦ଎౓Λૣ͘͢Δ ςετ؀ڥͷ੔උ  ɾͨ͘͞Μςετͷ13Λग़͢ͷͰɺ$*͸ͳΔ΂͘ૣ͘ճͬ ͯ͘Εͨํ͕خ͍͠

Slide 34

Slide 34 text

ςετͷ࣮ߦ଎౓Λૣ͘͢Δ ςετ؀ڥͷ੔උ  ɾͨ͘͞Μςετͷ13Λग़͢ͷͰɺ$*͸ͳΔ΂͘ૣ͘ճͬ ͯ͘Εͨํ͕خ͍͠ ɾQDPWͰΧόϨοδΛܭଌ͢Δ

Slide 35

Slide 35 text

QDPWΛೖΕΔ ςετ؀ڥͷ੔උ  ɾYEFCVHͱҧ͍ɺσόοάػೳ͕ͳ͘ΧόϨοδܭଌʹ ಛԽ͍ͯ͠ΔͨΊɺѹ౗తʹ଎͘ϝϞϦফඅ΋গͳ͍ ɾQIQECHΑΓ΋ૣ͍ Speed up PHPUnit Code Coverage Analysis - Nicolas Cabot - Medium https://medium.com/@nicocabot/speed-up-phpunit-code-coverage-analysis-4e35345b3dad

Slide 36

Slide 36 text

QDPWΛೖΕΔ ςετ؀ڥͷ੔උ  %PDLFSpMF ίϚϯυ

Slide 37

Slide 37 text

ɾ؆୯ʹςετσʔλΛ࡞Δ࢓૊ΈΛ༻ҙ͢Δ ɾ؆୯ʹ݁߹ςετΛͰ͖Δ࢓૊ΈΛ༻ҙ͢Δ ɾςετͷ࣮ߦ଎౓Λૣ͘͢Δ ɾάϩʔόϧϔϧύʔΛϞοΫͰ͖ΔΑ͏ʹ͢Δ ςετ؀ڥͷ੔උ ςετ؀ڥͷ੔උ 

Slide 38

Slide 38 text

ɾJT%FW CPPMΈ͍ͨͳ΍ͭ ɾ৚݅෼ذʹ࢖ΘΕ͍ͯΔ άϩʔόϧϔϧύʔ ςετ؀ڥͷ੔උ 

Slide 39

Slide 39 text

ɾJT%FW CPPMΈ͍ͨͳ΍ͭ ɾ৚݅෼ذʹ࢖ΘΕ͍ͯΔ άϩʔόϧϔϧύʔ ςετ؀ڥͷ੔උ  ɾڍಈΛม͑Δ͜ͱ͕ग़དྷͳ͍ ɾ৚݅෼ذͷ͏ͪύλʔϯ͔͠ςετग़དྷͳ͍

Slide 40

Slide 40 text

ςετ؀ڥͷ੔උ  ͍ͨΔॴͰ࢖ΘΕ͍ͯΔͷͰ શ෦ϦϑΝΫλϦϯά͢Δ༨༟͸ͳ͍ɾɾɾ

Slide 41

Slide 41 text

ςετ؀ڥͷ੔උ  https://kunit.jp/archives/108 1)17$3͕DVSMؔ਺Λ৐ͬऔΔํ๏ /&8(".&!LVOJU

Slide 42

Slide 42 text

ςετ؀ڥͷ੔උ 

Slide 43

Slide 43 text

ςετ؀ڥͷ੔උ 

Slide 44

Slide 44 text

ςετ؀ڥͷ੔උ  ͜ΕɺͳΜͰ΋ग़དྷΔͷͰ͸ɾɾɾʁ

Slide 45

Slide 45 text

ςετ؀ڥͷ੔උ 

Slide 46

Slide 46 text

ςετ؀ڥͷ੔උ  Φεεϝ͠·ͤΜʂ ͝ར༻͸ࣗݾ੹೚Ͱɾɾɾ

Slide 47

Slide 47 text

΍ͬͯΈͯͲ͏͔ͩͬͨ 

Slide 48

Slide 48 text

ɾ͔͚ͨίετݟ߹ͬͨ੒Ռ͕ग़Δͷ͔͸ݱ࣌఺Ͱ͸Θ͔ Βͳ͍ ɾ͸΍Γ͗ͨ͢ؾ͕͢ΔɺͦΕͧΕͷΞϓϦέʔγϣ ϯʹ߹ͬͨΧόϨοδͰे෼ ɾΧόϨοδΛ௥͍͔͚Δͷ͸ඍົ ɾϩʔΧϧͷ1)1Λʹ্͛ͯΈͨΒɺखಈςετͰ͸ ൃݟͰ͖ͳͦ͞͏ͳόάΛݟ͚ͭΔ͜ͱ͕ग़དྷͨ ɾϦϑΝΫλϦϯάΛ͢Δ౔୆͕ग़དྷ্͕ͬͨͱ͜Ζͳͷ ͰɺΉ͠Ζ͔͜͜Β͕ελʔτ ˋ·Ͱ্͛ͯΈͨײ૝ ΍ͬͯΈͯͲ͏͔ͩͬͨ 

Slide 49

Slide 49 text

 $VSBUJPO$PNNVOJDBUJPO1MBUGPSN IUUQTUPHFUUFSDPN ·ͱΊΑ͏ɺ͋ͭ·Ζ͏

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

ɾΧόϨοδ͸ΧόϨοδͰ͔͠ͳ͍ ɾΧόϨοδ͚ͩͰ͸Կ΋ݴ͏͜ͱ͕Ͱ͖ͳ͍ ๻ͷ݁࿦ ΧόϨοδ͸ຊ౰ʹ༗ޮͳࢦඪͳͷ͔ 

Slide 55

Slide 55 text

 ΧόϨοδ ޲্ςΫχοΫ

Slide 56

Slide 56 text

!DPEF$PWFSBHF*HOPSF 

Slide 57

Slide 57 text

ແҙຯͳίʔυΛҰԯߦ௥Ճͯ͠ UIJTBTTFSU5SVF USVF ͢Δ 

Slide 58

Slide 58 text

ɾΧόϨοδ͸શମͷதͰ͜Ε͚ͩͷίʔυ͕ςετதʹ ࣮ߦ͞Ε·ͨ͠Αͱ͍͏ࣄ࣮Ͱ͔͠ͳ͍ ɾͦΕҎ্ͷҙຯΛݟग़͢ͷ͸ςετίʔυͷ࣭ΛධՁͰ ͖ͳ͍ݶΓඍົ ɾઌ΄Ͳͷۃ୺ͳྫͷΑ͏ʹΞϓϦέʔγϣϯͷ඼࣭ʹҰ ੾ߩݙ͠ͳ͍··ΧόϨοδΛ͋͛Δ͜ͱ΋Ͱ͖Δ ࣄ࣮ͱਪ࿦ ΧόϨοδ͸ຊ౰ʹ༗ޮͳࢦඪͳͷ͔