1人から始める大規模Webアプリケーションの言語バージョンアップ / version up PHP in large scale application

1人から始める大規模Webアプリケーションの言語バージョンアップ / version up PHP in large scale application

2017/06/10 に行われた PHP カンファレンス福岡での資料です

B70c88a9a107334fa64a69e010af3cc6?s=128

Yoshihide Taniguchi

June 10, 2017
Tweet

Transcript

  1. 1)1$0/'&3&/$&'6,60," ਓ͔Β࢝ΊΔ
 େن໛8FCΞϓϦέʔγϣϯͷ
 ݴޠόʔδϣϯΞοϓ

  2. ࠓ೔࿩͢͜ͱ w େن໛ͳ8FCΞϓϦͷ1)1ΛόʔδϣϯΞοϓͨ͠࿩ w ͲͷΑ͏ʹόʔδϣϯΞοϓ͢Δʹࢸ͔ͬͨ w Ͳ͏όʔδϣϯΞοϓ͔ͨ͠ w όʔδϣϯΞοϓޙͷ࿩

  3. ࠓ೔࿩͞ͳ͍͜ͱ w όʔδϣϯΞοϓʹ͓͚ΔॲཧͷύϑΥʔϚϯεͷมԽ w όʔδϣϯΞοϓΛࢧ͑Δࣗಈςετઓུ w ͔͍͍ͬ͜8FCΞϓϦέʔγϣϯϑϨʔϜϫʔΫ

  4. 8FCΞϓϦέʔγϣϯΤϯδχΞ ୩ޱఓӳ@ravelll ಛൃੑա຾঱ IUUQTSBWFMMMPSH

  5. ϖύϘͷ։ൃ͸̎ڌ఺ 50,:0 '6,60,"

  6. None
  7. &$ج൫νʔϜ αʔϏεج൫ͷվमɾվળ طଘػೳͷ֦ு

  8. όʔδϣϯΞοϓͷ࿩

  9. എܠ w೥Ҏ্Քಇ͍ͯ͠ΔαʔϏε w࠷ޙͷݴޠόʔδϣϯΞοϓ͸9೥લ w &0-ͳόʔδϣϯΛ࢖͍ଓ͚͍ͯͨ w͕࣌ܦͪେن໛ԽɾෳࡶԽ͠όʔδϣϯΞοϓͷίετ͸ ๲େʹ w ʮ΍Γ͍͚ͨͲ΍ΕΔ͕࣌ؒͳͯ͘ʜʯ w

    ౰࣌ࣗ෼͸طଘػೳվળ΍໰͍߹Θͤͷٕज़αϙʔτΛ͢ ΔνʔϜʹ͍ͨ
  10. ݹ͍όʔδϣϯʹײ͍ͯͨ͡՝୊ w ηΩϡϦςΟϦεΫ w ΤϯδχΞͷޏ༻ w ʜ 

  11. ݹ͍όʔδϣϯʹײ͍ͯͨ͡՝୊ w։ൃऀɾαʔϏεͷ੒௕Λ્֐͢ΔͷͰ͸ʜʁ w ࠷৽৘ใΛऩूͯ͠΋ଟ͕͘׆༻Ͱ͖ͣݱੈΛఘΊΔ w ʮݟͳ͍͍͔ͯ͘ʜʯʮผͷݴޠΛ΍Ζ͏ʜʯ w ಘͨφϨοδ΋ϕʔε͕ݹ͍ͨΊʹΞ΢τϓοτ͕ጨΒ ΕΔ w

    ʮϨΨγʔͳ؀ڥվળΛؤுΔ࿩͹͔Γ͢Δͷ΋ʜʯ wΤϯδχΞίϛϡχςΟʹ৮ΕΔ͜ͱ͸ޮ཰తͳ੒௕ʹෆ Մܽ wΤϯδχΞͷ੒௕αʔϏεͷ੒௕
  12. ʮͲ͏ͨ͠Βόʔδϣϯ͸্͕Δʁʯ wʮ೤ͷ͋Δਓ͕ؒࣗΒ࣌ؒΛ֬อ͠ɺ
 ଞͷۀ຿ͱ཭Ε্ͨͰ͋ͨΔ͔͠ͳ͍ͷͰ͸ʁʯ w ʢ͋͘·Ͱ΋౰࣌ͷࣗ෼ͷঢ়گԼͰͷߟ͑Ͱ͢ʣ wνʔϜͰج൫վળ͚ͩΛߦ͏࣌ؒΛ࡞ͬͯঃʑʹ΍Ζ͏ ͱ͢Δ΋ɺۀ຿λεΫͷׂΓࠐΈ͕೔ৗԽࣦͯ͠ഊͨ͠ աڈ w όʔδϣϯΞοϓʹݶΒͣɺαʔϏεͷن໛తʹج൫վ

    ળΛઐ೚͢Δਓ͕͍ؒͨ΄͏͕ྑ͍ͷͰ͸ʁͱ͍͏ࢥ͍ ͸Ҏલ͔Β͋ͬͨ
  13. αʔϏεن໛ʢΞϓϦέʔγϣϯϨΠϠʣ wओཁͳαϒγεςϜʢҎ߱ϩʔϧʣ㲈ݸ wίʔυྔ㲈ສߦ w ΄΅શͯͷϩʔϧ͕1)1੡

  14. αʔϏεن໛ʢΞϓϦέʔγϣϯϨΠϠʣ wओཁͳαϒγεςϜʢҎ߱ϩʔϧʣ㲈ݸ wίʔυྔ㲈ສߦ w ΄΅શͯͷϩʔϧ͕1)1੡

  15. BENJO TFDVSF "1* DBSU VTFSNBOBHF NBJMNBHB[JOF BDDFTTQMVT UPQQBHF TIPQ NFNCFST

  16. None
  17. νʔϜʹ૬ஊ wόʔδϣϯΞοϓؚΊɺαʔϏεج൫ͷվળʹઐ೦ͤͯ͞ ΋Β͑ͳ͍͔νʔϜʹ૬ஊɾަবͨ͠ w ج൫վળͷେࣄ͞ͱࣗ෼͕ͦΕΛ͢΂͖ཧ༝Λ্௕ʹ఻ ͑ͨ ‣ͦΕ·Ͱͷۀ຿͔Β͸֎Εɺج൫վળʹઐ೦Ͱ͖Δ͜ͱʹ

  18. όʔδϣϯΞοϓ
 ΍͍ͬͯͧ͘ʂʂ̍

  19. ΍͍ͬͯ͘ํ਑ wਓͰશͯΛ΍Βͳ͍ɻੵۃతʹਓΛཔΔ w1VMM3FRVFTU͸ࡉ͔͘ग़͢ w໎ͬͨΒ҆શͳํ w΍Γ͗͢ͳ͍ɻ࠷খݶͷมߋͰόʔδϣϯΞοϓ͢Δ w ະདྷͷόʔδϣϯΞοϓ࣌ͷࢿྉʹͳΔ͜ͱΛߟ͑ͯ
 ϦʔμϒϧͳϩάΛ࢒͢

  20. ·ͣڌ఺Λ࡞Γਓͱܨ͕Δ w ੠Λ্͛ͯਓʹؾʹͯ͠΋Β͏ w *TTVFΛཱͯͯߟ͑Λॻ͖࿈ͶΔ w༗ࣝऀʹࡶʹNFOUJPO͢Δ w ஌ݟΛڞ༗ͯ͠΋Β͏ w ࠔͬͨͱ͖ॿ͚ΛٻΊ΍͓ͯ͘͘͢͠

    
  21. None
  22. ԿΛͲ͜·Ͱ΍Δ͔ܾΊΔ w όʔδϣϯΞοϓ͢Δϩʔϧ͸ʁ w Ͳͷόʔδϣϯ·Ͱ্͛Δʁ w ಉ࣌ʹվળͨ͠΄͏͕͍͍͜ͱ͸͋Δʁ

  23. όʔδϣϯΞοϓ͢Δ͜ͱʹͨ͠ϩʔϧ w γϣοϓΦʔφʔ͕γϣοϓͷӡӦΛߦ͏ͨΊͷϩʔϧ w มߋස౓ɺαʔϏεʹ͓͚Δॏཁ౓͕࠷ߴϨϕϧ w 1)1 w ίʔυྔ㲈ສߦʢશϩʔϧͰ࠷େʣ

  24. ͳͥͦͷϩʔϧΛબΜͩͷ͔ wόʔδϣϯΞοϓͷޮՌ͕࠷େͱࢥ͏ϩʔϧͩͬͨ w ύϑΥʔϚϯεʹىҼ͢Δෆ۩߹͕͠͹͠͹ใࠂ͞Εͯ ͍ͨ w ࠷΋ߋ৽ස౓͕ߴ͍ΤϯδχΞͷԸܙ͕࠷େ wଞͷϩʔϧΛόʔδϣϯΞοϓ͍ͯ͘͠ىരࡎʹͳΔϩʔ ϧͩͬͨ w

    ʮ࠷େͷϩʔϧ͕όʔδϣϯΞοϓͰ͖ͨʂʯ w ʮ͡Ό͋ଞͷϩʔϧ΋Ͱ͖ΔͩΖʂ΍Δͧʂʂ̍ʯ
  25. ෆ҆ཁૉΛϦετΞοϓ͢Δ w นʹͳΓͦ͏ͳ΋ͷʹ͸Կ͕͋Δʁ w ൑໌ͨ͠นʹͳΓͦ͏ͳऀͨͪ w NBHJD@RVPUFT@HQD0O w SFHJTUFS@HMPCBMT0O w

    ಈ࡞ͷอূํ๏
  26. None
  27. ಓ͕ݟ͖͑ͯͨ ίʔυ͍͡Δͧʙ

  28. NBHJD@RVPUFT@HQDΛͳΜͱ͔͢Δ wํ਑ɿ0O0⒎ͲͪΒͰ΋ৼΔ෣͍͕มΘΒͳ͍Α͏ʹ͢ Δ w Өڹͷ͋Δεʔύʔάϩʔόϧม਺ͷ࢖͍ํΛ͍ͯ͠Δ ՕॴΛɺNBHJD@RVPUFT@HQDͷڍಈΛٵऩ͢Δϥο ύʔϝιουͰஔ͖׵͑Δ w εʔύʔάϩʔόϧม਺ΛؚΉจࣈྻ࿈݁42-จΛ
 QSFQBSFETUBUFNFOUΛ࢖͏Α͏मਖ਼


    ʢ42-*OKFDUJPOͷ๷ࢭʣ
  29. None
  30. 

  31. SFHJTUFS@HMPCBMTΛԿͱ͔͢Δ w ґଘ͍ͯ͠Δ࣮૷͕ݟ͔ͭΒͳ͍ʜ w ௕͘αʔϏεʹܞΘ͍ͬͯΔΤϯδχΞʹώΞϦϯά ͦΕͰ΋෼͔Βͳ͍ w NBHJD@RVPUFT@HQDͱҰॹʹ͍͑ͬͱ0⒎ʹ͢Δ͜ͱ ʹ w

    ޾͍ɺͦͷޙ໰୊͸ग़·ͤΜͰͨ͠
  32. NBHJD@RVPUFT@HQD
 0⒎ʹͰ͖ͨ ͜͜·ͰͰ໿ϲ݄ɺ1VMM3FRVFTUT

  33. 1)1ͷಈ࡞؀ڥΛ࡞Δ w طଘͷ1VQQFU.BOJGFTUΛϕʔεʹ1)1ͷಈ࡞؀ ڥΛ࡞Δ w WBHSBOUͰγϡοͱϩʔΧϧ؀ڥߏங w ςετ͕ബ͍ͷͰΞϓϦέʔγϣϯΛखಈͰૢ࡞ͭͭ͠
 1)1ͷϏϧυઃఆ΍QIQJOJͷઃఆΛௐ੔ͯ͠౎౓ QVQQFUJ[FBQQMZ

    w ΞϓϦέʔγϣϯͷमਖ਼࿙ΕΛิ׬ w େଟ਺ͷϑΝΠϧ͕&6$+1ͩͬͨͷͰΤϯίʔσΟ ϯάܥΦϓγϣϯͷσϑΥϧτ஋͕มΘͬͨӨڹ͕ਙ େͩͬͨʜ
  34. ్த1)1ͷόάΛ౿Ή IUUQTTQFBLFSEFDLDPNHTUIFCVHXFTBXUIBUEBZ

  35. ΄΅΄΅ಈ͘؀ڥ͕Ͱ͖ͨΒ ಈ࡞ݕূ

  36. ಈ࡞ݕূ w ຊ൪ͱಉ͡ߏ੒ͷαʔόʹ1)1ͷ؀ڥΛ࡞ͬͯݕূ w ςετΛ௥Ճͯ͠ΧόʔͤͣɺखಈͰ֬ೝ w ςετΧόϨοδ͕௿͔ͬͨ௥Ճ͕ࠔ೉ͳ࣮૷͕ଟ ͔ͬͨ w ຊ൪؀ڥͷϩά͔Β֤ػೳͷར༻ස౓Λௐ΂ɺස౓͔Βػ

    ೳΛङ໺Ϟσϧͷ඼࣭෼ྨʹج͍ͮͯ෼ྨɺ2"͞Μͱ෼ ୲ͯ͠ݕূ w ౰ͨΓલ඼࣭2"͞Μ w Ұݩత඼࣭ɾັྗత඼࣭!SBWFMMM w ౰ͨΓલ඼࣭ͷج४ɿ௚ۙ೔Ͱ঎඼ͷച্͕͋ΔΦʔ φʔ͕ฏۉͯ͠೔ճҎ্࢖͍ͬͯΔػೳ
  37. ॗʑͱಈ࡞֬ೝमਖ਼ ςϯϓϨʔτʹ&6$+165'͕ࠞࡏ͍ͯͯ͠
 ࣍ʑ໰୊͕ݟ͔ͭΔ͚ͲࣃΛ৯͍͠͹ͬͯؤுΔ

  38. ݕূͱमਖ਼͕ऴΘͬͨΒϦϦʔε

  39. ஈ֊తʹϦϦʔε ຊ൪αʔόͷ୆ʹτϐοΫϒϥϯνΛBQQMZ w -#͔Βͷ෇͚֎͠ɺQVQQFUBQQMZͳͲɺ΍ΓํΛΠ ϯϑϥΤϯδχΞʹڭ͑ͯ΋Βͬͯશ෦΍Δ w खॱΛ*TTVFʹ·ͱΊͯϨϏϡʔͯ͠΋Β͏ w /FX3FMJDͰ؂ࢹ ϒϥϯνΛNBTUFSʹϚʔδɺͦͷଞશ୆Ξοϓσʔτ

  40. 

  41. ͍ͭʹશ୆1)1ʹ

  42. ͔͔ͬͨ࣌ؒɾมߋྔ w ࠷ॳͷ1VMM3FRVFTU͔ΒόʔδϣϯΞοϓ׬ྃ·Ͱ w㲈ϲ݄ w ผͷλεΫ΍௕ظٳՋ΋͋ͬͨͷͰ࣮ಇϲ݄͘Β͍ʁ w5PUBM1VMM3FRVFTUT w㲈 w ׂ͸NBHJD@RVPUFT@HQDରԠͷͨΊͷ΋ͷͩͬͨ

  43. ୲౰ਓͰ΋Ͱ͖ͨ w νʔϜͰ଍ฒΈἧ͑ͯྟΉͷ͕೉͚͠Ε͹ਓ͔ΒਐΉͷ ΋ख w΋ͪΖΜਓͰશͯΛ΍ΔΘ͚͡Όͳ͍ɺਓΛཔΔ wνʔϜ͸࡞Εͣͱ΋伱ؒ࣌ؒͷڠྗΛಘΔ͜ͱ͸Ͱ͖Δ
 νʔϜ͕࡞Εͣͱ΋ఘΊΔ͜ͱ͸ͳ͍

  44. όʔδϣϯΞοϓΛऴ͑ͯ w΍Δਓ͕૿͑ͳ͍ͱεέʔϧ͠ͳ͍ wܧଓతʹ΍Βͳ͍ͱ݁ہͲ͔͜Ͱݹ͘ͳΔ w ࣾ಺5FDI.5(ͰʮόʔδϣϯΞοϓͲ͏Ͱ͔͢ʁʯ ͳτʔΫ w νʔϜશମΛ΋ͬͱલ܏ʹ͍ͨ͠ IUUQTTQFBLFSEFDLDPNHTQIQUPBOEWFSTJPOVQ

  45. ·ͱΊ w େن໛ͳ8FCΞϓϦέʔγϣϯͷݴޠόʔδϣϯΞοϓΛ ਓ͔Β࢝Ίͯ׬਱ͨ͠ࣄྫΛ঺հ͠·ͨ͠ w ؾ͔࣋ͪΒࣗ਎ͷϙδγϣϯΛม͑ͯ΍ͬͨ w ͲΜͲΜਓΛཔͬͯͭͭ͜͜ਐΊͨΒͰ͖ͨ wόʔδϣϯΞοϓΛఘΊ͍ͯΔͦ͜ͷ͋ͳͨɺ
 ͖ͬͱͰ͖·͢ɻ΍ͬͯΈ·ͤΜ͔ʁ