レガシーなPHPの限界とレガシーからの脱却 / phpcon2019

633ac716e2e09b8710621c881508cac2?s=47 shmurakami
December 01, 2019

レガシーなPHPの限界とレガシーからの脱却 / phpcon2019

PHPConference Japan 2019

633ac716e2e09b8710621c881508cac2?s=128

shmurakami

December 01, 2019
Tweet

Transcript

  1. $IBUXPSLͷγεςϜ͔ΒֶͿ ϨΨγʔͳ1)1ͷݶքͱϨΨγʔ͔Βͷ୤٫ 1)1$POGFSFODF+BQBO

  2. © Chatwork ࣗݾ঺հ ˔͠Ό͔TIBLB ଜ্ढ़հ  ˔$IBUXPSLגࣜձࣾ ˔1)1ྺ೥4DBMBྺOϲ݄ ˔1)1Ͱ*46$0/ຊબҐ

  3. © Chatwork $IBUXPSLʹ͍ͭͯ ˔ϏδωενϟοταʔϏε ˓άϧʔϓνϟοτ λεΫ؅ཧ ϑΝΠϧڞ༗ ϏσΦԻ੠௨࿩ ˔ಋೖاۀ ࣾҎ্

    ೥݄຤೔ݱࡏ
  4. © Chatwork "HFOEB ˔͜ͷൃද಺ͰͷϨΨγʔίʔυͷఆٛ ˔$IBUXPSLͷόοΫΤϯυߏ੒ ˔ϨΨγʔͳ1)1ͷݶք ˔ϨΨγʔ͔Βͷ୤٫

  5. © Chatwork ϨΨγʔίʔυͷఆٛ

  6. © Chatwork ϨΨγʔίʔυͷఆٛ ʮςετ͕ͳ͍ίʔυʯ ϨΨγʔίʔυվળΨΠυ. גࣜձࣾᠳӭࣾ, 2009

  7. © Chatwork ϨΨγʔίʔυͷఆٛ ʮॊೈੑͷͳ͍ίʔυʯ ʮςετ͞Ε͍ͯͳ͍ίʔυʯ ʮٕज़తෛ࠴Λ๊͍͑ͯΔίʔυʯ ϨΨγʔιϑτ΢ΣΞվળΨΠυ. גࣜձࣾᠳӭࣾ, 2016, 7p

  8. © Chatwork ϨΨγʔίʔυͷఆٛ ʮमਖ਼ɺ֦ுɺ࡞ۀ͕ ɹɹඇৗʹ೉͍͠ίʔυʯ ϨΨγʔίʔυ͔Βͷ୤٫. ΦϥΠϦʔɾδϟύϯ, 2019, xiii

  9. © Chatwork ͜ͷൃදͰͷϨΨγʔίʔυͷఆٛ ʮमਖ਼ɺ֦ுɺ࡞ۀ͕ ɹɹඇৗʹ೉͍͠ίʔυʯ ϨΨγʔίʔυ͔Βͷ୤٫. ΦϥΠϦʔɾδϟύϯ, 2019, xiii

  10. © Chatwork ChatworkͷόοΫΤϯυߏ੒

  11. © Chatwork γεςϜߏ੒֓ཁ OSQT NT

  12. © Chatwork $IBUXPSLʹ͓͚ΔαʔόʔαΠυ ˔ όʔδϣϯY ˓ ͸ࠓ೔Ͱ&0-Ͱ͢Ͷ ˔ ೥લʹ࡞ΒΕͨΦϨΦϨϑϨʔ ϜϫʔΫ

    ˔ ڊେͳϞϊϦε ˔ Α͋͘Δ5)&ϨΨγʔ ˓ ҉໧஌ͱྺ࢙తܦҢ͕ͨ͘͞Μ ˓ ͍ΖΜͳਓͷࢥ૝͕ࠞ͡Γ߹ͬ ͨྺ࢙͕ਂ͍ϨΠϠʔ ˔ .JDSPTFSWJDFTνοΫ ˔ ෼ࢄγεςϜࢤ޲ ˓ )#BTF ˓ %ZOBNP%# ˓ ,BGLB ˔ ϦΞΫςΟϒγεςϜ ˓ &WFOU4PVSDJOH ˓ $234
  13. © Chatwork $IBUXPSLʹ͓͚ΔαʔόʔαΠυ IUUQTDSFBUPSTOPUFDIBUXPSLDPNFOUSZTDBMBZFBS

  14. © Chatwork $IBUXPSLʹ͓͚ΔαʔόʔαΠυ $IBUXPSLͰ͸໿೥൒લʹɺ1)1ͷಠࣗϑϨʔϜϫʔΫͰͭ͘ ΒΕͨେن໛γεςϜΛɺ4DBMBΛ࢖ͬͯθϩϕʔεͰͭ͘Γͳ͓ ͢ͱ͍͏ܾஅΛ͠·ͨ͠ɻ 
 ͜͜ͰͳΜͱ͔͠ͳ͍ͱαʔϏε͕কདྷతʹࢮ͵ɺͱഎਫͷਞ Ͱ௅ΜͩϓϩδΣΫτͰͨ͠ IUUQTDSFBUPSTOPUFDIBUXPSLDPNFOUSZTDBMBZFBS

  15. © Chatwork $IBUXPSLʹ͓͚ΔαʔόʔαΠυ $IBUXPSLͰ͸໿೥൒લʹɺ1)1ͷಠࣗϑϨʔϜϫʔΫͰͭ͘ ΒΕͨେن໛γεςϜΛɺ4DBMBΛ࢖ͬͯθϩϕʔεͰͭ͘Γͳ͓ ͢ͱ͍͏ܾஅΛ͠·ͨ͠ɻ 
 ͜͜ͰͳΜͱ͔͠ͳ͍ͱαʔϏε͕কདྷతʹࢮ͵ɺͱഎਫͷਞ Ͱ௅ΜͩϓϩδΣΫτͰͨ͠ IUUQTDSFBUPSTOPUFDIBUXPSLDPNFOUSZTDBMBZFBS

    ϨΨγʔͳγεςϜ͸ࢮ͵
  16. © Chatwork 1)1ΞϓϦέʔγϣϯͷͭΒΈ ˔ϝϯςφϯε͕ͭΒ͍ঢ়ଶ ˓ڊେͳϞϊϦεϓϩδΣΫτɺສߦͷ6UJMΫϥε ˓ݹ͍ΦϨΦϨϑϨʔϜϫʔΫ ˙Ϟμϯͳ੩తղੳπʔϧͷద༻͕೉͍͠ ˓҉໧஌ͱྺ࢙తܦҢ ཻ౓͕·ͪ·ͪͳυΩϡϝϯτ ˔੹຿͕ೖΓࠞ͡Γ͍͗ͯͯ͢෼ׂ͕ࠔ೉

    ˓ςετ͸͋Δ͕ʮෳ਺ͷ੹຿Λຬͨ͢͜ͱʯͷ୲อ͕େม ˔$IBUXPSLͱ1)1ͱࢲ 1)1$POGFSFODF 
 IUUQTTQFBLFSEFDLDPNUBOBLBZVLJDIBUXPSLUPQIQUPTJ
  17. © Chatwork ੩తղੳπʔϧ ˔1)14UBO ˓143 $PNQPTFSʹରԠ͍ͯ͠ͳ͍Օॴ͕͋Γઃఆ͕ࠔ೉ ˔1IBO ˓QIQBTU֦ு͕ඞਢ ˓࠷ۙ·Ͱ1)1͕Քಇ͍ͯͨ͠ͷͰಋೖͰ͖ͳ͔ͬͨ ˔4POBS2VCF

    ˓େ͖͍ϑΝΠϧʹରͯ͠ಈ͔͢ͱEPDLFSίϯςφ͕མͪΔ ˓॥؀తෳࡶ౓ͳͲऔΕΔ͕ɺཉ͍͠σʔλ͸ͦΕ͡Όͳ͍ ˔1IQ.FUSJDT ˓ಈ͔ͤͨ
  18. © Chatwork 1IQ.FUSJDT

  19. © Chatwork 1IQ.FUSJDT 1BDLBHF 0CKFDUϨϕϧͰͷϝτϦΫε ؔ࿈ ਤ͕औಘՄೳ

  20. © Chatwork Package relations by PhpMetrics

  21. © Chatwork Ͳ͏ͯ͜͠͏ͳͬͨʁ ˔଎౓༏ઌͰ։ൃΛଓ͚͖ͯͨ෭࡞༻ ˓ελʔτΞοϓͰ͸౰ͨΓલͷݱ৅ ˔Ϗδωε͕֦େͨ͠λΠϛϯάͰ࢓༷Λݫ֨Խ͠ͳ͔ͬͨ ˓΋ͱ΋ͱࣾ಺πʔϧͩͬͨ ˓ᐆດͳ࢓༷͕ᐆດͳ࢓༷ΛੜΉѱ॥؀ ˔աڈʹίʔυͷվળʹࣦഊͨ͠ ˓શମతͳ4DBMBԽʹҰ౓ࣦഊ͠ɺ෦෼తʹ͔͠ҠߦͰ͖

    ͍ͯͳ͍ ˓4DBMBԽͨ͠෦෼ͷઃܭ΋1)1ʹҾ͖ͣΒΕΔ
  22. © Chatwork ϨΨγʔͳPHPͷݶք

  23. © Chatwork ʮमਖ਼ɺ֦ுɺ࡞ۀ͕ ɹɹඇৗʹ೉͍͠ίʔυʯ

  24. © Chatwork ࠔ೉ͳมߋ ˔ϓϩδΣΫτͷن໛͕େ͖͘ɺΞʔΩςΫνϟɾઃܭͷେ ن໛ͳมߋ͕ࠔ೉ ˓%#ͷ෼ׂɺεέʔϧΞ΢τ ˓ϦϙδτϦ෼ׂ ˓1MBJO1)1ʹΑΔಉظॲཧલఏͷ࢓༷ ˙ࠓ͔Β4XPPMF "NQͷಋೖ͸ʜ

    ˓֎෦αʔϏε΁ͷҠߦ ˙ݱ୅ͳΒ4 -BNCEBͰࡁΉ"1*΋͋Δ
  25. © Chatwork ϨΨγʔγεςϜͷݶք ʮࠔ೉Λ෼ׂͤΑʯ

  26. © Chatwork ࠔ೉ͳมߋ ˔ϓϩδΣΫτͷن໛͕େ͖͘ɺΞʔΩςΫνϟɾઃܭͷม ߋ͕ࠔ೉ ˓%#ͷ෼ׂɺεέʔϧΞ΢τ ˓ϦϙδτϦ෼ׂ ˓1MBJO1)1ʹΑΔಉظॲཧલఏͷ࢓༷ ˙ࠓ͔Β4XPPMF "NQͷಋೖ͸ʜ

    ˓֎෦αʔϏε΁ͷҠߦ ˙ݱ୅ͳΒ4 -BNCEBͰࡁΉ"1*΋͋Δ
  27. © Chatwork Growth Scale Out Scale Up ❌

  28. © Chatwork ϨΨγʔγεςϜ͕ݶքΛܴ͑ΔλΠϛϯά ˔αʔϏεΛܧଓ্͍ͯ͘͠Ͱى͜Δ͜ͱ ˓૿͑ଓ͚ΔϢʔβʔ਺ ˓ϦΫΤετ਺ͷ૿Ճ ˓%#εέʔϧΞοϓͷݶքΛܴ͑Δ εέʔϧΞ΢τ͸ࠔ೉  ˓%#ίωΫγϣϯ਺ͷݶքΛܴ͑Δ

    ˓ϦΫΤετ͕ॲཧෆՄೳʹͳΔ ˔ΞϓϦέʔγϣϯϨΠϠʔͰରॲͰ͖ͳ͍ϛυϧ΢ΣΞͷੑ ೳݶքΛܴ͑Δ
  29. © Chatwork Կ͕໰୊ͳͷ͔ ˔1)1͸஗͘ͳ͍͠ѱ͘ͳ͍ ˓1)1͸ѱ͘ͳ͍͠஗͘ͳ͍ େࣄ  ˔ࣗࣾ੡ϑϨʔϜϫʔΫ΋ϨΨγʔ͕ͩ஗͘ͳ͍ ˓ ඞཁͳػೳ͕ແ͍ͱ΋ݴ͑Δ

    ˓ྲྀߦΓ͔ͩΒͱ-BSBWFMͳͲॏްͳϑϨʔϜϫʔΫʹ৐ Γ׵͑ΔͱύϑΥʔϚϯε͕ग़ͳͯ͘αʔϏε͕མͪΔ ˔$IBUXPSLͷαʔϏεن໛ʹ1)1͕ద߹͠ͳ͘ͳͬͨ ˓ͦΖͦΖ%#ίωΫγϣϯϓʔϧ͕ཉ͍͠ ˓O,SQTΛಉظॲཧͷݴޠͰॲཧ͢Δͷ͸೉͍͠ ˙+7. (P &SMBOH7.ͳͲ͕ద੾
  30. © Chatwork ϨΨγʔ͔Βͷ୤٫ in Chatwork

  31. © Chatwork ϨΨγʔ͔Βͷ୤٫ ˔5P%P ˓αʔϏεͷޓ׵ੑΛอͪͭͭ։ൃΛָʹ͠ͳ͕Β ˓ࠓͷ਺ഒͷτϥϯβΫγϣϯΛॲཧՄೳʹ͠ ˓૊৫ʹεέʔϥϏϦςΟΛ࣋ͨͤΔ

  32. © Chatwork ٻΊΒΕ͍ͯΔ΋ͷ ˔ଈԠੑ ˓ߴ଎ͳϨεϙϯε ˔஄ྗੑ ˓ߴՄ༻ੑ ˔଱ো֐ੑ ˓γεςϜো֐ͷہॴԽߴՔಇ཰

  33. © Chatwork ϦΞΫςΟϒγεςϜ ग़య: ϦΞΫςΟϒએݴ ˔$IBUXPSLͷ৽ϝοηʔδϯάγεςϜΛࢧ͑Δٕज़
 IUUQTTQFBLFSEFDLDPNKJLPDIBUXPSLGBMTFYJO NFUVTF[JOHVTJTVUFNVXP[IJFSVKJTIV

  34. © Chatwork εέʔϧΞ΢τ ˔γεςϜͱ૊৫ΛεέʔϧΞ΢τ͢Δ࢓૊Έ ˓γεςϜ͚ͩεέʔϧΞ΢τͯ͠΋ϝϯςφϯεͰ͖Δ ମ੍͕൐͍ͬͯͳ͍ͱ࣋ଓͰ͖ͳ͍ ˙ίϯ΢ΣΠͷ๏ଇ ˓૊৫ͷεέʔϧʹ߹Θͤͯੜ࢈ੑΛߴΊΒΕΔߏ੒ ˙.JDSPTFSWJDFT ˙.PEVMBS.POPMJUI

  35. © Chatwork ૊৫ߏ଄ ˔ώΤϥϧΩʔܕ૊৫͔Β୤٫ ˓νʔϜؒͷίϛϡχέʔγϣϯ͕औΓͮΒ͍ ˙ݱ৔͕ίϛϡχέʔγϣϯͤͣʹ࡞ΕΔ΄Ͳιϑτ ΢ΣΞ։ൃ͸؆୯Ͱ͸ͳ͍ ˓ҙࢥܾఆͷ੹຿͕ᐆດ

  36. © Chatwork ૊৫ߏ଄ ˔ϗϥΫϥγʔ૊৫ ˓ϩʔϧϕʔεͷࣗ཯ͨ͠νʔϜ ˓ݖݶɺ੹຿Λ෼ࢄ ˓$IBUXPSLࣾʹ޲͍ͯΔ͔
 ࠓޙݕ౼ ग़య: GlassFrog

  37. © Chatwork ϨΨγʔ͔Βͷ୤٫͜Ε·Ͱ ˔Ҡߦܭըɾํ਑ϓϥϯχϯά1P$ ˔ཁٻ෼ੳɾϞσϦϯά ˓3%3" %%% ˙3FMBUJPOTIJQ%SJWFO3FRVJSFNFOU"OBMZTJT ˙ۀ຿ɺϢʔεέʔεɺυϝΠϯɺʜ ˔͜͜·ͰͰϲ݄

  38. © Chatwork ϨΨγʔ͔Βͷ୤٫͜Ε͔Β ˔5P%P ˓ϞσϦϯά ˓ίϯςΩετ෼ׂ ˓։ൃ ˓σʔλҠߦ ˓։ൃ૊৫ͷ࡮৽ ΍Δ͜ͱ͍ͬͺ͍

  39. © Chatwork ·ͱΊ ˔ؔ࿈πʔϧͷݶք㲈ϨΨγʔͳ1)1ͷݶք ˓ίʔυͷϝϯςφϯεʹݶք͕དྷΔํ͕ૣͦ͏ ˓ʮࠔ೉Λ෼ׂʯͰ͖ΔΑ͏ʹઃܭ͓ͯ͘͠ ˔αʔϏεͷࣾձత੹೚ɺཁٻੑೳ͕ߴ·͔ͬͯΒͷେن໛ ͳ࡮৽͸ΊͪΌͪ͘Όେม ˓Ϗδωεن໛ɺঢ়گʹ߹Θͤͯద੾ͳλΠϛϯάͰͷϦ ϑΝΫλɺϦϥΠτɺϦΞʔΩςΫτ

  40. © Chatwork IUUQTXXXXBOUFEMZDPNQSPKFDUT

  41. © Chatwork 8F$IBUXPSLBSFIJSJOH IUUQTDPSQDIBUXPSLDPNKBSFDSVJUFOHJOFFS ˔ϋΠύϑΥʔϚϯεͳ1)1Λॻ͖͍ͨਓ ˔1)1ʹॻ͖๞͖ͯผͷݴޠʹ৐Γ׵͍͑ͨਓ