小さな機能、大きな仕事 PHPカンファレンス沖縄2019 / phpcon-okinawa-2019

9c47f639b91a66ccf901724eaaf9043d?s=47 Kenta Suzuki
October 12, 2019

小さな機能、大きな仕事 PHPカンファレンス沖縄2019 / phpcon-okinawa-2019

PHPカンファレンス沖縄2019での発表資料です。 https://phpcon.okinawa.jp/

9c47f639b91a66ccf901724eaaf9043d?s=128

Kenta Suzuki

October 12, 2019
Tweet

Transcript

  1. ʢμΠδΣετ൛ʣ খ͞ͳػೳɺେ͖ͳ࢓ࣄ ླ໦݈ଠ!TV[V@W qVDU 70:"(&(3061 1)1ΧϯϑΝϨϯεԭೄ 70:"(&(3061εϙϯαʔηογϣϯ

  2. ࣗݾ঺հ w ླ໦݈ଠʢ!TV[V@Wʣ w גࣜձࣾqVDUऔక໾$50 w BKJUPGNύʔιφϦςΟ w ීஈ͸1)1 5ZQF4DSJQU

    (PΛॻ͍ͯ·͢
  3. ܧଓతͳϓϩμΫτ։ൃͰ ͋Γ͕ͪͳ໰୊ w ཁ݅ʹରͯ͠ඞཁҎ্ʹେ͖͘ͳͬͨίʔυʹͳ͍ͬͯΔΑ ͏ʹݟ͑Δ͕ɺ࣌ؒ΋ͳ͘ίʔυΛݮΒͦ͏ʹ΋ख͕͚ͭΒ Εͳ͍ w ػೳΛ௥Ճ͍͕ͨ͠ɺطଘίʔυʹ௥Ճ͢Δ͔৽نʹ࢓૊Έ Λ௥Ճ͢Δ͔໎͏ɻͦͯ͠·ͨશମͱͯ͠ෳࡶͳ࢓૊Έʹ ͳͬͯ͠·͍ͦ͏ɻ

    w ϦΞʔΩςΫνϟ͕ͨ͠ɺ͞Βʹෳᯑʹͳͬͯ͠·ͬͨɻط ଘͷ࢓૊ΈʹՃ͑ͯɺ·ͨෳࡶͳ࢓૊Έ͕௥Ճ͞Εͯ͠·ͬ ͨɻ
  4. IUUQTTQFBLFSEFDLDPNTV[VLFOQIQDPO

  5. Կ͔Βணख͢Δ͔ʁ

  6. ෳࡶੑͱॏཁ౓ͷϚτϦΫε ૉ੖Β͍͠ ߟ͑Α͏ ·͋0, ෳࡶ͞খ ෳࡶ͞େ ॏཁ౓େ ॏཁ౓খ

  7. ෳࡶੑͱॏཁ౓ͷϚτϦΫε ૉ੖Β͍͠ ߟ͑Α͏ ·͋0, ෳࡶ͞খ ෳࡶ͞େ ॏཁ౓େ ॏཁ౓খ ͜͜Λ͍͔ʹίϯτϩʔϧ͢Δ͔

  8. ߟ͑Α͏ ෳࡶ͞େ ॏཁ౓େ ෳࡶ͕͞ͳͥൃੜͨ͠ͷ͔Λߟ࡯͠·͠ΐ͏ɻ ͳͥେ͖͘ͳͬͨͷ͔؍࡯͠·͠ΐ͏ɻ νέοτɺ୲౰ऀͷϩάɺഎܠΛ͔֬Ί·͠ΐ͏ɻ σʔλɺϩδοΫΛΑ͘ݟ·͠ΐ͏ɻ ෳࡶੑͱॏཁ౓ͷϚτϦΫε

  9. ίʔυࣗମͷෳࡶੑΛ૿΍͞ͳ͍ w ෆԺͳஹީʮ͜ͷ"1*Ͱશ෦࣮૷͓ͯ͘͠ͱศརʯ w ςετέʔε͕૿͑ɺ࣮૷͕๲ΒΉɻۀ຿΋ͦͷػೳʹґ ଘ͢Δɻ w େࣄͳͷ͸ಡΈ΍͢͞ʢ3FBEBCJMJUZʣ

  10. ෳࡶੑͷ૿େ ύονॻ͘ ʢෳࡶੑͷ஫ೖʣ ϦϦʔε ಡΈղ͘ʢΘ͔Βͳ͍ʣ ςετಡΉʢΘ͔Βͳ͍ʣ ϨϏϡʔ͢Δ ʢϨϏϡϫʔ΋Α͘Θ͔Βͳ͍ʣ

  11. ෳࡶੑ΁ͷରॲ๏ wϦϑΝΫλϦϯά wϦΞʔΩςΫνϟ wϦϓϨʔε

  12. ෳࡶੑ΁ͷରॲ๏ wϦϑΝΫλϦϯά wϦΞʔΩςΫνϟ wϦϓϨʔε

  13. ϦΞʔΩςΫνϟࣄྫ

  14. ྫͱ͋ΔऔҾػೳ w ਺೥લʹߏங͞Ε͍͕ͯͨ΄ͱΜͲ࢖ΘΕ͍ͯͳ͍഑৴ػೳͩͬͨɻ޿ࠂ഑৴ αʔόɺ؅ཧܥɺ%#ɺ΄΅͢΂ͯͷίϯϙʔωϯτʹ͍ͭͯӨڹΛ༩͑Δઃܭ ʹͳ͍ͬͯͨɻ w ಛఆͷࣄۀऀͱͷ࿈ܞͰ͸͏·͘ಈ࡞͢Δ͕ɺϓϥοτϑΥʔϜશମͱͯ͠ͷར ༻͢ΔͨΊʹ͸طଘػೳͱͷ੔߹ੑ͕ͱΕ͍ͯͳ͔ͬͨɻ͋Δઃఆ͔Β͸༗ޮ ͳΦʔΫγϣϯ͕ɺ͜ͷػೳ͔Β͸ར༻Ͱ͖ͳ͍Α͏ʹͳ͍ͬͯͨɻ࢖ΘΕͯ ͍ͳ͍ػೳͩͬͨͨΊɺଞͷػೳͷ࣮૷΋͜ͷػೳΛߟྀͯ͠͸͍ͳ͔ͬͨɻ

    w ςετηοτ͸େ͖͘ͳΓ͓͗ͯ͢Γɺઃఆ༻"1*΋ංେԽ͍ͯͨ͠ɻػೳΛಡ Έղ͘͜ͱ͸೉͘͠ɺ৽ͨͳΦʔΫγϣϯܗࣜΛ௥Ճ͢Δ͜ͱ͸ࠔ೉ͩͬͨɻ ར༻ϩά΋े෼ʹग़ྗ͞Ε͓ͯΒͣɺ෼ੳ΋Ͱ͖ͳ͍ঢ়ଶͩͬͨɻ w ͦͯ͠ࠓޙɺ͜ͷػೳΛੵۃతʹ֦ு͍͖͍ͯͨ͠ͱ͍͏Ϗδωε͔Βͷཁٻ ͕͋ͬͨɻ
  15. ྫͱ͋ΔऔҾػೳ w ਺೥લʹߏங͞Ε͍͕ͯͨ΄ͱΜͲ࢖ΘΕ͍ͯͳ͍഑৴ػೳͩͬͨɻ޿ࠂ഑৴ αʔόɺ؅ཧܥɺ%#ɺ΄΅͢΂ͯͷίϯϙʔωϯτʹ͍ͭͯӨڹΛ༩͑Δઃܭ ʹͳ͍ͬͯͨɻ w ಛఆͷࣄۀऀͱͷ࿈ܞͰ͸͏·͘ಈ࡞͢Δ͕ɺϓϥοτϑΥʔϜશମͱͯ͠ͷར ༻͢ΔͨΊʹ͸طଘػೳͱͷ੔߹ੑ͕ͱΕ͍ͯͳ͔ͬͨɻ͋Δઃఆ͔Β͸༗ޮ ͳΦʔΫγϣϯ͕ɺ͜ͷػೳ͔Β͸ར༻Ͱ͖ͳ͍Α͏ʹͳ͍ͬͯͨɻ࢖ΘΕͯ ͍ͳ͍ػೳͩͬͨͨΊɺଞͷػೳͷ࣮૷΋͜ͷػೳΛߟྀͯ͠͸͍ͳ͔ͬͨɻ

    w ςετηοτ͸େ͖͘ͳΓ͓͗ͯ͢Γɺઃఆ༻"1*΋ංେԽ͍ͯͨ͠ɻػೳΛಡ Έղ͘͜ͱ͸೉͘͠ɺ৽ͨͳΦʔΫγϣϯܗࣜΛ௥Ճ͢Δ͜ͱ͸ࠔ೉ͩͬͨɻ ར༻ϩά΋े෼ʹग़ྗ͞Ε͓ͯΒͣɺ෼ੳ΋Ͱ͖ͳ͍ঢ়ଶͩͬͨɻ w ͦͯ͠ࠓޙɺ͜ͷػೳΛੵۃతʹ֦ு͍͖͍ͯͨ͠ͱ͍͏Ϗδωε͔Βͷཁٻ ͕͋ͬͨɻ
  16. ྫͱ͋ΔऔҾػೳ w ਺೥લʹߏங͞Ε͍͕ͯͨ΄ͱΜͲ࢖ΘΕ͍ͯͳ͍഑৴ػೳͩͬͨɻ޿ࠂ഑৴ αʔόɺ؅ཧܥɺ%#ɺ΄΅͢΂ͯͷίϯϙʔωϯτʹ͍ͭͯӨڹΛ༩͑Δઃܭ ʹͳ͍ͬͯͨɻ w ಛఆͷࣄۀऀͱͷ࿈ܞͰ͸͏·͘ಈ࡞͢Δ͕ɺϓϥοτϑΥʔϜશମͱͯ͠ͷར ༻͢ΔͨΊʹ͸طଘػೳͱͷ੔߹ੑ͕ͱΕ͍ͯͳ͔ͬͨɻ͋Δઃఆ͔Β͸༗ޮ ͳΦʔΫγϣϯ͕ɺ͜ͷػೳ͔Β͸ར༻Ͱ͖ͳ͍Α͏ʹͳ͍ͬͯͨɻ࢖ΘΕͯ ͍ͳ͍ػೳͩͬͨͨΊɺଞͷػೳͷ࣮૷΋͜ͷػೳΛߟྀͯ͠͸͍ͳ͔ͬͨɻ

    w ςετηοτ͸େ͖͘ͳΓ͓͗ͯ͢Γɺઃఆ༻"1*΋ංେԽ͍ͯͨ͠ɻػೳΛಡ Έղ͘͜ͱ͸೉͘͠ɺ৽ͨͳΦʔΫγϣϯܗࣜΛ௥Ճ͢Δ͜ͱ͸ࠔ೉ͩͬͨɻ ར༻ϩά΋े෼ʹग़ྗ͞Ε͓ͯΒͣɺ෼ੳ΋Ͱ͖ͳ͍ঢ়ଶͩͬͨɻ w ͦͯ͠ࠓޙɺ͜ͷػೳΛੵۃతʹ֦ு͍͖͍ͯͨ͠ͱ͍͏Ϗδωε͔Βͷཁٻ ͕͋ͬͨɻ
  17. ྫͱ͋ΔऔҾػೳ w ਺೥લʹߏங͞Ε͍͕ͯͨ΄ͱΜͲ࢖ΘΕ͍ͯͳ͍഑৴ػೳͩͬͨɻ޿ࠂ഑৴ αʔόɺ؅ཧܥɺ%#ɺ΄΅͢΂ͯͷίϯϙʔωϯτʹ͍ͭͯӨڹΛ༩͑Δઃܭ ʹͳ͍ͬͯͨɻ w ಛఆͷࣄۀऀͱͷ࿈ܞͰ͸͏·͘ಈ࡞͢Δ͕ɺϓϥοτϑΥʔϜશମͱͯ͠ͷར ༻͢ΔͨΊʹ͸طଘػೳͱͷ੔߹ੑ͕ͱΕ͍ͯͳ͔ͬͨɻ͋Δઃఆ͔Β͸༗ޮ ͳΦʔΫγϣϯ͕ɺ͜ͷػೳ͔Β͸ར༻Ͱ͖ͳ͍Α͏ʹͳ͍ͬͯͨɻ࢖ΘΕͯ ͍ͳ͍ػೳͩͬͨͨΊɺଞͷػೳͷ࣮૷΋͜ͷػೳΛߟྀͯ͠͸͍ͳ͔ͬͨɻ

    w ςετηοτ͸େ͖͘ͳΓ͓͗ͯ͢Γɺઃఆ༻"1*΋ංେԽ͍ͯͨ͠ɻػೳΛಡ Έղ͘͜ͱ͸೉͘͠ɺ৽ͨͳΦʔΫγϣϯܗࣜΛ௥Ճ͢Δ͜ͱ͸ࠔ೉ͩͬͨɻ ར༻ϩά΋े෼ʹग़ྗ͞Ε͓ͯΒͣɺ෼ੳ΋Ͱ͖ͳ͍ঢ়ଶͩͬͨɻ w ͦͯ͠ࠓޙɺ͜ͷػೳΛੵۃతʹ֦ு͍͖͍ͯͨ͠ͱ͍͏Ϗδωε͔Βͷཁٻ ͕͋ͬͨɻ
  18. ϑΟʔνϟʔͱέΠύϏϦςΟ ϦΞϧλΠϜʹϩάΛղੳͰ͖Δ ͋Δ޿ࠂͷϒϩοΫ͕Մೳ ޿ࠂछผ͝ͱʹ੍ޚՄೳ औҾܗࣜ"͕Մೳ ୯Ձ༧ଌ͕Մೳ ϑΟʔνϟʔ έΠύϏϦςΟ औҾܗࣜ#͕Մೳ ʢ͕ͩෆे෼ʣ

    ಛघऔҾ͕Մೳ
  19. ϑΟʔνϟʔͱέΠύϏϦςΟ ϦΞϧλΠϜʹϩάΛղੳͰ͖Δ ͋Δ޿ࠂͷϒϩοΫ͕Մೳ ޿ࠂछผ͝ͱʹ੍ޚՄೳ औҾܗࣜ"͕Մೳ ୯Ձ༧ଌ͕Մೳ ϑΟʔνϟʔ έΠύϏϦςΟ औҾܗࣜ#͕Մೳ ʢ͕ͩෆे෼ʣ

    ಛघऔҾ͕Մೳ ʢେ͖͗͢Δ"1*ʣ ͋ΔϑΟʔνϟʔͰ͔͠ར༻͞Ε͓ͯΒͣɺαΠϩԽ͍ͯ͠ΔέΠύϏϦςΟ
  20. αΠϩԽͷ܏޲ w ςʔϒϧࣗମ͕੾Γ෼͚ΒΕɺಠࣗͳσʔλߏ଄ʹͳͬͯ ͍Δ w "1*͕ංେԽ͠ɺಛघʹॲཧ͠Α͏ͱ͍ͯ͠Δɻʢ౰࣌ͷ ൑அͱͯ͠ɺϑΟʔνϟʔ࣮ݱͷεϐʔυΛ༏ઌͨ͠ͱߟ ͑ΒΕΔʣ ࠓޙ΋มԽ͕ݟࠐ·ΕɺεϐʔυΛ෢ثʹ͍ͨ͠ϑΟʔνϟʔ Ͱ͋ͬͨͨΊɺϦΞʔΩςΫνϟ͢Δ͜ͱΛ൑அ

  21. ϦΞʔΩςΫνϟͷ ํ਑ΛཱͯΔ

  22. ϑΟʔνϟͱέΠύϏϦςΟ ϦΞϧλΠϜʹϩάΛղੳͰ͖Δ ͋Δ޿ࠂͷϒϩοΫ͕Մೳ ޿ࠂछผ͝ͱʹ੍ޚՄೳ औҾܗࣜ"͕Մೳ ୯Ձ༧ଌ͕Մೳ ϑΟʔνϟʔ έΠύϏϦςΟ ຊ౰ʹ࣮ݱ͍ͨ͠औҾܗࣜ# طଘͷέΠύϏϦςΟ΋૊Έ߹Θ্ͤͨͰ੍ޚ͍ͨ͠

  23. ϑΟʔνϟʔͱέΠύϏϦςΟ ϦΞϧλΠϜʹϩάΛղੳͰ͖Δ ͋Δ޿ࠂͷϒϩοΫ͕Մೳ ޿ࠂछผ͝ͱʹ੍ޚՄೳ औҾܗࣜ"͕Մೳ ୯Ձ༧ଌ͕Մೳ ϑΟʔνϟʔ έΠύϏϦςΟ ຊ౰ʹ࣮ݱ͍ͨ͠औҾܗࣜ# ৽نέΠύϏϦςΟΛՃ্͑ͨͰ૊Έ߹ΘͤΔ

    औҾΛݸผͷϩάʹॻ͖ग़͢ औҾ͝ͱͷ୯Ձઃఆ
  24. Ξϓϩʔν w طଘػೳͱͷ઀߹఺ɺ׆͔ͤΔطଘέΠύϏϦςΟΛચ͍ ग़͠ w σʔλϕʔεϦϑΝΫλϦϯάͰ͸ͳ͘ɺϞσϦϯά͔Β ΍Γͳ͓͠ w ؅ཧػೳʹ͍ͭͯ͸খ࣮͘͞૷͠௚͠ɺ഑৴ػೳ͸طଘͷ ػೳΛ࢒࣮ͭͭ͠૷मਖ਼

  25. ϙετϞʔςϜ w ։ൃ౰࣌ɺ͜ͷϑΟʔνϟʔΛ࣮૷͢Δʹ͸଍Γͳ͍έΠύ ϏϦςΟ͕ͨ͘͞Μ͋ͬͨɻͦͷͨΊಥ؏ͰέΠύϏϦςΟ Λ૿΍ͨ͠ɻͦͷ݁Ռ"1*͕ංେԽ͍ͯͨ͠ɻ w ͦͷ݁ՌɺΞʔΩςΫνϟ͕αΠϩԽ͠ɺଞͷػೳͷਐԽʹ ௥ਵͰ͖͍ͯͳ͔ͬͨɻෛ࠴΋ฦ٫͞Εͳ͔ͬͨɻͦͯ͠ ঃʑʹ͔ͭΘΕͳ͘ͳ͍ͬͯͬͨɻ w

    ࠶౓ػೳ͕Ϛʔέοτ͔Βཅͷ໨Λཋͼͨɻ౰࣌͸ଘࡏ͠ͳ ͍ඞཁͳέΠύϏϦςΟ͕ঃʑʹϓϩμΫτʹඋΘ͖ͬͯͯ ͍ͨͨΊɺখ͍͞ػೳ࣮૷Ͱཁ݅Λຬͨ͢͜ͱ͕Ͱ͖ͨɻ
  26. ϦΞʔΩςΫνϟ΋খ͘͞ w ඞཁ࠷௿ݶͷέΠύϏϦςΟΛ࣮૷͠Α͏ɻ͔ͭɺࠓޙ΋ଞ ͷϑΟʔνϟʹ͓͍ͯ࢖ΘΕΔΑ͏ʹέΠύϏϦςΟΛઃܭ ͠Α͏ɻ w ଞʹར༻Ͱ͖ΔέΠύϏϦςΟ͕͋ΔͳΒɺͦΕΛར༻͠Α ͏ɻͦͷ··࢖͑ͳͯ͘΋ɺطଘͷέΠύϏϦςΟΛগ͠ม ߋ͢Ε͹ՄೳͳΒɺύονΛૹΖ͏ɻ w

    ਖ਼͍͠ΞʔΩςΫνϟ͸ϦϦʔεαΠΫϧ͕Կप͔͠ͳ͚Ε ͹Θ͔Βͳ͍ɻͲΜͲΜ௚ͤ͹ྑ͍ɻͷͰɺখ͘͞࡞ͬͯͨ Ίͦ͏ɻ
  27. ·ͱΊ ະདྷʹ޲͚ͯ

  28. lܭը͸༧૝ʹա͗ͳ͍z

  29. খ͞ͳػೳɺେ͖ͳ࢓ࣄ w ॏཁͳػೳͳΒɺίʔυΛখ͘͞͠Α͏ɻखݩʹίʔυΛख܁ ΓدͤɺಡΈ΍͘͢͠ɺม͑΍ͯ͋͛͘͢͠Α͏ɻ w ৽͍͠࢓૊ΈΛͭ͘Δલʹɺطଘͷ࢓૊ΈΛ͔ͬ͠Γௐࠪͯۛ͠ ຯ͠Α͏ɻ w খ͘͞͸͡Ίͯɺঃʑʹ࢓૊ΈΛ͍ͭͬͯ͘͜͏ɻେࣄͳͷ͸খ ͘͞ϦϦʔεͯ͠ϦζϜΛ௫Ή͜ͱɻ

    w ࠷ॳͷϦϦʔε͔Β׬੒͞ΕͨΞʔΩςΫνϟʹ͸ͳΒͳ͍ɻਖ਼ ղ͕Θ͔Βͳ͍͜ͱͷ΄͏͕ଟ͍ɻϦϦʔεΛճͯ͠ঃʑʹέΠ ύϏϦςΟΛ૿΍͍ͯ͜͠͏ɻ
  30. IUUQCJUMZqVDUTXFPLJOBXB