Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

shmurakami
December 01, 2019

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

PHPConference Japan 2019

shmurakami

December 01, 2019
Tweet

More Decks by shmurakami

Other Decks in Technology

Transcript

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

    View Slide

  2. © Chatwork
    ࣗݾ঺հ
    ˔͠Ό͔TIBLB ଜ্ढ़հ

    ˔$IBUXPSLגࣜձࣾ
    ˔1)1ྺ೥4DBMBྺOϲ݄
    ˔1)1Ͱ*46$0/ຊબҐ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. © Chatwork
    $IBUXPSLʹ͓͚ΔαʔόʔαΠυ
    ˔ όʔδϣϯY
    ˓ ͸ࠓ೔Ͱ&0-Ͱ͢Ͷ
    ˔ ೥લʹ࡞ΒΕͨΦϨΦϨϑϨʔ
    ϜϫʔΫ
    ˔ ڊେͳϞϊϦε
    ˔ Α͋͘Δ5)&ϨΨγʔ
    ˓ ҉໧஌ͱྺ࢙తܦҢ͕ͨ͘͞Μ
    ˓ ͍ΖΜͳਓͷࢥ૝͕ࠞ͡Γ߹ͬ
    ͨྺ࢙͕ਂ͍ϨΠϠʔ
    ˔ .JDSPTFSWJDFTνοΫ
    ˔ ෼ࢄγεςϜࢤ޲
    ˓ )#BTF
    ˓ %ZOBNP%#
    ˓ ,BGLB
    ˔ ϦΞΫςΟϒγεςϜ
    ˓ &WFOU4PVSDJOH
    ˓ $234

    View Slide

  13. © Chatwork
    $IBUXPSLʹ͓͚ΔαʔόʔαΠυ
    IUUQTDSFBUPSTOPUFDIBUXPSLDPNFOUSZTDBMBZFBS

    View Slide

  14. © Chatwork
    $IBUXPSLʹ͓͚ΔαʔόʔαΠυ
    $IBUXPSLͰ͸໿೥൒લʹɺ1)1ͷಠࣗϑϨʔϜϫʔΫͰͭ͘
    ΒΕͨେن໛γεςϜΛɺ4DBMBΛ࢖ͬͯθϩϕʔεͰͭ͘Γͳ͓
    ͢ͱ͍͏ܾஅΛ͠·ͨ͠ɻ

    ͜͜ͰͳΜͱ͔͠ͳ͍ͱαʔϏε͕কདྷతʹࢮ͵ɺͱഎਫͷਞ
    Ͱ௅ΜͩϓϩδΣΫτͰͨ͠
    IUUQTDSFBUPSTOPUFDIBUXPSLDPNFOUSZTDBMBZFBS

    View Slide

  15. © Chatwork
    $IBUXPSLʹ͓͚ΔαʔόʔαΠυ
    $IBUXPSLͰ͸໿೥൒લʹɺ1)1ͷಠࣗϑϨʔϜϫʔΫͰͭ͘
    ΒΕͨେن໛γεςϜΛɺ4DBMBΛ࢖ͬͯθϩϕʔεͰͭ͘Γͳ͓
    ͢ͱ͍͏ܾஅΛ͠·ͨ͠ɻ

    ͜͜ͰͳΜͱ͔͠ͳ͍ͱαʔϏε͕কདྷతʹࢮ͵ɺͱഎਫͷਞ
    Ͱ௅ΜͩϓϩδΣΫτͰͨ͠
    IUUQTDSFBUPSTOPUFDIBUXPSLDPNFOUSZTDBMBZFBS
    ϨΨγʔͳγεςϜ͸ࢮ͵

    View Slide

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

    IUUQTTQFBLFSEFDLDPNUBOBLBZVLJDIBUXPSLUPQIQUPTJ

    View Slide

  17. © Chatwork
    ੩తղੳπʔϧ
    ˔1)14UBO
    ˓143 $PNQPTFSʹରԠ͍ͯ͠ͳ͍Օॴ͕͋Γઃఆ͕ࠔ೉
    ˔1IBO
    ˓QIQBTU֦ு͕ඞਢ
    ˓࠷ۙ·Ͱ1)1͕Քಇ͍ͯͨ͠ͷͰಋೖͰ͖ͳ͔ͬͨ
    ˔4POBS2VCF
    ˓େ͖͍ϑΝΠϧʹରͯ͠ಈ͔͢ͱEPDLFSίϯςφ͕མͪΔ
    ˓॥؀తෳࡶ౓ͳͲऔΕΔ͕ɺཉ͍͠σʔλ͸ͦΕ͡Όͳ͍
    ˔1IQ.FUSJDT
    ˓ಈ͔ͤͨ

    View Slide

  18. © Chatwork
    1IQ.FUSJDT

    View Slide

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

    View Slide

  20. © Chatwork
    Package relations by PhpMetrics

    View Slide

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

    View Slide

  22. © Chatwork
    ϨΨγʔͳPHPͷݶք

    View Slide

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

    View Slide

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

    View Slide

  25. © Chatwork
    ϨΨγʔγεςϜͷݶք
    ʮࠔ೉Λ෼ׂͤΑʯ

    View Slide

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

    View Slide

  27. © Chatwork
    Growth
    Scale Out Scale Up



    View Slide

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

    ˓%#ίωΫγϣϯ਺ͷݶքΛܴ͑Δ
    ˓ϦΫΤετ͕ॲཧෆՄೳʹͳΔ
    ˔ΞϓϦέʔγϣϯϨΠϠʔͰରॲͰ͖ͳ͍ϛυϧ΢ΣΞͷੑ
    ೳݶքΛܴ͑Δ

    View Slide

  29. © Chatwork
    Կ͕໰୊ͳͷ͔
    ˔1)1͸஗͘ͳ͍͠ѱ͘ͳ͍
    ˓1)1͸ѱ͘ͳ͍͠஗͘ͳ͍ େࣄ

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

    View Slide

  30. © Chatwork
    ϨΨγʔ͔Βͷ୤٫
    in Chatwork

    View Slide

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

    View Slide

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

    View Slide

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

    IUUQTTQFBLFSEFDLDPNKJLPDIBUXPSLGBMTFYJO
    NFUVTF[JOHVTJTVUFNVXP[IJFSVKJTIV

    View Slide

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

    View Slide

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

    View Slide

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

    ࠓޙݕ౼
    ग़య: GlassFrog

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. © Chatwork
    IUUQTXXXXBOUFEMZDPNQSPKFDUT

    View Slide

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

    View Slide