$30 off During Our Annual Pro Sale. View Details »

有名FWを採用する?しない? 令和5年におけるオレオレフレームの立ち位置 / To make with own framework or not do, that is the question

uzulla
June 23, 2023

有名FWを採用する?しない? 令和5年におけるオレオレフレームの立ち位置 / To make with own framework or not do, that is the question

- 【非公式】PHPカンファレンス福岡・前日Meetup
- 2023/06/23
- uzulla

uzulla

June 23, 2023
Tweet

More Decks by uzulla

Other Decks in Programming

Transcript

  1. ༗໊FWΛ࠾༻͢Δʁ͠ͳ͍ʁ
    ྩ࿨5೥ʹ͓͚ΔΦϨΦϨϑϨʔϜͷཱͪҐஔ
    — ʲඇެࣜʳPHPΧϯϑΝϨϯε෱Ԭɾલ೔Meetup
    — 2023/06/23
    — uzulla

    View Slide

  2. ࣗݾ঺հ
    — uzullaͰ͢
    — ໌೔ͷޕޙҰ൪ɺVaddy ϗʔϧͰϩάͷ࿩Λ͠·͢

    View Slide

  3. ༗໊FWΛ࠾༻…
    — ͢Δʁ
    — ͠ͳ͍ʁ
    — Ͱɺ·Α͍·͔͢ʁ

    View Slide

  4. ͠Ζ

    View Slide

  5. ׬

    View Slide

  6. ໎͏ʹ൑அͰ͖ͳ͍
    — ͳʹ͔૝ఆ֎͕͋ͬͨͱ͖ʹͭΒ͍ؾ෼ʹͳΔ
    — ʮ੹೚͸ࣗ෼͕΋ͭʯϞνϕ͕Θ͔ͳ͍
    — (≒ ͠Βͳ͍ਓ͕ͭͬͨ͘աڈͷෛ࠴Λϝϯς͢Δέʔεʹ΋͍ۙ΋ͷ͕͋Δ)
    — ໘౗ɾ೉͍͜͠ͱ͸ԡ͚ͭ͠Δͷ͕٢Ͱ͋Δ

    View Slide

  7. ͦͷ্Ͱ
    — ʮuzulla͸(ੵۃతʹ)༗໊FWΛ࢖Θͳ͍κʂʂʂʯ

    View Slide

  8. ͱ͜ΖͰେखFWͱ͸ԿͰ͔͢ʁ
    — ਖ਼௚ͳͱ͜Ζɺ৽نͰ͍͏ͳΒ͹
    — Laravel
    — Symfony
    — ೋڧͰଞ͸ݕ౼͢Δඞཁ͕ͳ͍ɻ
    — (Micro FWͱͯ͠Slimͱ͔͸͋Δ͕)
    — ʮFW·ͱΊʂʯΈ͍ͨͳهࣄͰ৭ʑͳ΋ͷΛݟΔͰ͠ΐ͏͕(ݕӾ࡟আ)

    View Slide

  9. ͨͩ…
    — େ఍LaravelͰ͢ΑͶ
    — ཧ༝ͱ͔ͳ͘ɺݱ࣮ͱͯ͠
    — ͡Ό͋LaravelͷHPΛಡΜͰ(Ҿ༻ͯ͠)Έ·͠ΐ͏

    View Slide

  10. Laravel is a web application framework
    with expressive, elegant syntax. We’ve
    already laid the foundation — freeing you to
    create without sweating the small things.

    View Slide

  11. Laravel͸ɺදݱྗ๛͔ͰΤϨΨϯτͳγϯ
    λοΫεΛ࣋ͭWebΞϓϦέʔγϣϯϑϨʔ
    ϜϫʔΫͰ͢ɻࢲͨͪ͸͢ͰʹجૅΛݻΊ͓ͯ
    Γɺখ͞ͳ͜ͱʹ೰Ή͜ͱͳ͘ɺࣗ༝ʹ૑଄
    ͢Δ͜ͱ͕Ͱ͖·͢ɻ

    View Slide

  12. Laravel values beauty. We love clean code
    just as much as you do. Simple, elegant
    syntax puts amazing functionality at your
    fingertips. Every feature has been
    thoughtfully considered to provide a
    wonderful developer experience.

    View Slide

  13. Laravel͸ඒ͠͞Λେ੾ʹ͠·͢ɻࢲͨͪ͸օ
    ͞Μͱಉ͡Α͏ʹ͖Ε͍ͳίʔυΛѪ͍ͯ͠
    ·͢ɻγϯϓϧͰΤϨΨϯτͳߏจʹΑΓɺૉ
    ੖Β͍͠ػೳΛ͋ͳͨͷࢦઌʹ΋ͨΒ͠·͢ɻ
    ͢΂ͯͷػೳ͸ɺૉ੖Β͍͠։ൃऀମݧΛఏڙ
    ͢ΔͨΊʹߟ͑ൈ͔Εͨ΋ͷͰ͢ɻ

    View Slide

  14. Α͘Θ͔ΒΜʂ

    View Slide

  15. Out of the box, Laravel has elegant
    solutions for the common features needed
    by all modern web applications. It's time to
    start building amazing applications and
    stop wasting time searching for packages
    and reinventing the wheel.

    View Slide

  16. Laravelʹ͸ɺ࠷৽ͷWebΞϓϦέʔγϣϯͰ
    ඞཁͱ͞ΕΔҰൠతͳػೳͷͨΊͷΤϨΨϯ
    τͳιϦϡʔγϣϯ͕༻ҙ͞Ε͍ͯΔͨΊɺ͢
    ͙ʹར༻Ͱ͖·͢ɻύοέʔδͷݕࡧ΍ंྠͷ
    ࠶ൃ໌ʹ࣌ؒΛඅ΍͢ͷ͸΍Ίͯɺૉ੖Β͠
    ͍ΞϓϦέʔγϣϯΛ࡞Γ࢝ΊΔ࣌Ͱ͢ɻ

    View Slide

  17. Laravel is a web application framework
    with expressive, elegant syntax. We believe
    development must be an enjoyable and
    creative experience to be truly fulfilling.
    Laravel attempts to take the pain out of
    development by easing common tasks
    used in most web projects.

    View Slide

  18. Laravel͸ɺදݱྗ๛͔ͰΤϨΨϯτͳγϯ
    λοΫεΛ࣋ͭϑϨʔϜϫʔΫͰ͢ɻࢲͨͪ͸
    ։ൃ͸ָͯ͘͠૑଄తͳମݧͰͳ͚Ε͹ਅʹ
    ॆ࣮ͨ͠΋ͷʹ͸ͳΒͳ͍ͱߟ͍͑ͯ·͢ɻ
    Laravel͸ɺ΄ͱΜͲͷWebϓϩδΣΫτͰ࢖
    ༻͞ΕΔҰൠతͳλεΫΛ؇࿨͢Δ͜ͱͰɺ
    ։ൃͷۤ௧ΛऔΓআ͘͜ͱΛࢼΈ͍ͯ·͢ɻ

    View Slide

  19. ͜ͷ͋ͨΓ͸एׯղΔ
    — ͭ·ΓɺLaravelʹʮ৐Δʯ͜ͱͰɺҰൠతͳ΢Σϒ։ൃλεΫͷ໘౗ͳॴΛݞ୅ΘΓ͠
    ͯ͘ΕΔ
    — ͍͢͝Ͷʂ

    View Slide

  20. ͯ͞ɺSymfony͸ʁ

    View Slide

  21. Symfony is a set of reusable PHP
    components... The standard foundation on
    which the best PHP applications are built.
    Choose any of the 50 stand-alone
    components available for your own
    applications.

    View Slide

  22. symfony ͸࠶ར༻Մೳͳ PHP ίϯϙʔωϯτ
    ͷηοτͰ͢... ࠷ߴͷ PHP ΞϓϦέʔγϣϯ
    Λߏங͢ΔͨΊͷඪ४తͳ౔୆Ͱ͢ɻ50ͷε
    λϯυΞϩϯίϯϙʔωϯτͷத͔Βɺ͋ͳ
    ͨࣗ਎ͷΞϓϦέʔγϣϯͷͨΊʹར༻Ͱ͖
    Δ΋ͷΛબΜͰ͍ͩ͘͞ɻ

    View Slide

  23. — ·ͣɺFWͱ͔͍͍ͯͳ͍
    — ίϯϙʔωϯτ(ϥΠϒϥϦ)ͱ͔͍ͯ͋Δɻ

    View Slide

  24. — https://symfony.com/why-use-a-framework

    View Slide

  25. A framework is not absolutely necessary: it
    is “just” one of the tools that is available to
    help you develop better and faster!

    View Slide

  26. Better, because a framework provides you
    with the certainty that you are developing
    an application that is in full compliance with
    the business rules, that is structured, and
    that is both maintainable and upgradable.

    View Slide

  27. Faster, because it allows developers to
    save time by re-using generic modules in
    order to focus on other areas. Without,
    however, ever being tied to the framework
    itself.

    View Slide

  28. ϑϨʔϜϫʔΫ͸ઈରʹඞཁͱ͍͏Θ͚Ͱ͸͋
    Γ·ͤΜɻϑϨʔϜϫʔΫ͸ɺΑΓྑ͘ɺΑΓ
    ଎͘։ൃ͢ΔͨΊʹར༻Ͱ͖Δπʔϧͷ "୯ͳ
    Δ "1ͭʹ͗͢·ͤΜʂ

    View Slide

  29. ϑϨʔϜϫʔΫ͸ɺϏδωεϧʔϧʹ׬શʹ४
    ڌ͠ɺߏ଄Խ͞ΕɺϝϯςφϯεͱΞοϓά
    Ϩʔυ͕ՄೳͳΞϓϦέʔγϣϯΛ։ൃͯ͠
    ͍Δͱ͍͏֬৴Λ༩͑ͯ͘ΕΔͨΊɺΑΓྑ͍
    ΋ͷʹͳΓ·͢ɻ

    View Slide

  30. ։ൃऀ͸ɺ൚༻తͳϞδϡʔϧΛ࠶ར༻͢Δ͜
    ͱͰ࣌ؒΛઅ໿͠ɺଞͷ෼໺ʹूத͢Δ͜ͱ
    ͕Ͱ͖ΔͨΊɺΑΓ଎͘։ൃ͢Δ͜ͱ͕Ͱ͖
    ·͢ɻ͔͠͠ɺϑϨʔϜϫʔΫࣗମʹറΒΕΔ
    ͜ͱ͸͋Γ·ͤΜɻ

    View Slide

  31. ͭ·Γ
    — ʮ൚༻Ϟδϡʔϧ(ϥΠϒϥϦ)Λͨ͘͞Μ༻ҙͨ͠ΑʂʮඞཁͳΒ͹ʯબΜͰ͔ͭͬͯ
    Ͷʯ
    — ʮΞοϓάϨʔυύε(όʔδϣϯΞοϓ)Λॏཁࢹ͍ͯ͠ΔΑʯ

    View Slide

  32. ʮಠࣗݟղʯ
    — Laravel͸ɺ͍ΘΏΔʮϑϨʔϜϫʔΫʯͰ͋Δ
    — Symfonyͷࢥ͏ʮϑϨʔϜϫʔΫʯ͸ϚΫϩ(ϑϧελοΫ)Ͱͳ͘ɺϛΫϩ(ϥΠϒϥϦ
    ܈)Ͱ͋Δ(ͱɺࢲ͸ཧղ͍ͯ͠Δ)
    — ͜ͷ఺͕ରরతͰ͋Δ
    — (ͳ͓ɺLaravelࣗମ͕SymfonyΛͨ͘͞Μ࢖͍ͬͯΔ)

    View Slide

  33. ͱ͍͏ͱ͜ΖͰɺೋͭͷ͕ࠩΘ͔Δ
    — Laravelʮ։ൃऀָ͕͘͠(ʁ)։ൃ͢Δ؀ڥ(ʹϨʔϧ)Λఏڙ͢Δʯ
    — Symfonyʮ҆ఆతͳWebΞϓϦέʔγϣϯ։ൃΛαϙʔτ͢ΔϥΠϒϥϦΛఏڙ͢Δʯ
    — (ͨͿΜ)ଟ͘ͷਓ͸ʮ͜͏͠ͳ͍͞ʯͱݴΘΕ͍ͨ(FWΛߟ͑ͨ͘ͳ͍)ͷͰFWΛ͔͍ͭ
    ͍ͨɺ
    ͷͰɺLaravelΛ͔ͭ͏΂͖ͳΜͩΖ͏…͠ΒΜ͚Ͳ
    — ٯʹɺʮLaravel͕ϑΟοτ͠ͳ͍Μ͚ͩͲʁʯͱ͍͏ਓ͸SymfonyͳͲͷϥΠϒϥϦΛ
    ׆༻͢Ε͹Α͍ͩΖ͏

    View Slide

  34. ͜͜ʂ͜͜Ͱ͢ʂʂ
    — ͍ΖΜͳFWΛ͔͖͚ͭͬͯͨͲɺ(ϚΫϩͳɺϑϧελοΫͳ)FW͸ྲّྀΛڧ੍͢Δ(ྲّྀ
    Λ֎ΕΔͱͭΒ͍)
    — ͔͠͠ɺྲྀߦɾྲّྀ͸มΘ͍ͬͯ͘
    — ྫ:ࠓͳΒόοΫΤϯυ͸API͚ͩͰ͍͍Ͱ͠ΐ
    — ಥવɺϨʔϧ͕ߦ͖ࢭ·ΓʹͳΔɺҠΓมΘΔͷ͕େม
    — ͷͰɺࢲ͸FWʹͷΓͨ͘ͳ͍
    — ͷͰɺ(νϡʔτϦΞϧతͳ)Laravel͕޷͖Ͱ͸ͳ͍ɻ

    View Slide

  35. ͞Βʹ͍͑͹
    — 15%ͷݱ৔Ͱ͸஍ࠈͷΑ͏ʹ޲͍ͯͳ͍
    — ΍Γ͍ͨ͜ͱ͕Ͱ͖ͳ͍ɺͨͱ͑͹
    — ෳ߹ओΩʔ
    — ʮϢʔβʔʯ͕৭ʑډΔ
    — DBΫΤϦΛνϡʔχϯά
    — ʮָ(≒खൈ͖)ͳػೳʯ͕੩తղੳͱ૬ੑѱ͗͢Δ
    — (͜Ε͸࡞ऀͷझຯΒ͘͠ɺ࠷ۙ͸վળ͞Εͯ…͍ΔΑ͏ͳ…͖͕͠ͳ͍Ͱ΋…)

    View Slide

  36. ΋͏ͪΐͬͱ௥ՃͰݴ͏ͱ
    — ࣮͸ʮݱ࣮ੈքͰͷLaravelͷ࢖͍ํʯυΩϡϝϯτ͕ෆ଍͍ͯ͠Δ
    — ॳ৺ऀ͕΍ΔઃܭΛͦͷ··εέʔϧ͕ͤͪ͞
    — ʮνϡʔτϦΞϧϥϥϕϧʯ໰୊(ࢲͷಠ໋໊ࣗ)
    — ֤ࣾɺಠࣗʹLaravelͷ࢖͍ํΛఆٛͯ͠ΦϨΦϨLaravel͕஀ੜ͍ͯ͠Δ…()
    — ʮ͋Εʂʁʯ

    View Slide

  37. Laravel͸͍͍ҙຯͰखൈ͖Λ͢ΔͨΊʹ͋Δ
    — ͱΓ͋͑ͣ׬੒ͤ͞ɺϦϦʔε͢Δ
    — ʮϦϦʔεͰ͖ͳ͚Ε͹ແՁ஋ʯ
    — ೲ඼ઌʹɺࡉ͔͍આ໌ͱ͔ͨ͘͠ͳ͍
    — (ࣗ෼ͷίʔυ͕࠷খݶʹͳΔͷͰ)
    — ͜͏͍͏ͷͳΒΑ͍ͩΖ͏ͱ͓΋͍·͢
    — (ͷͰɺςετ΍࢓༷ॻ͕ͳ͍ͱཱࣗ͠ͳ͍ঢ়ଶʹͳΓ·͢)

    View Slide

  38. Laravel͕޲͔ͳ͍έʔε
    — LaravelͷϨʔϧʹ৐Βͳ͍(৐Εͳ͍)
    — ʮ࣌୅ͷվֵʯΛ͑ͯ͜࢖͏༧ఆ͕͋Δ
    — ੩తղੳΛόϦόϦʹޮ͔͍ͤͨ

    View Slide

  39. ͦ͜Ͱࢲ͸ΦϨΦϨϑϨʔϜϫʔΫʹͳΔ
    — ݁ՌɺϑϨʔϜϫʔΫ(≒ྲّྀ)Λࣗ࡞͢Δ͜ͱʹͳΔ
    — ΦϨΦϨϑϨʔϜϫʔΫ͸
    — ʮྲّྀʯʹ͸ͱΒΘΕͨ͘ͳ͍
    — Symfony(ΛؚΊͨ)༷ʑͳϥΠϒϥϦ͸ී௨ʹ͔ͭ͏
    — (ͳ͓ɺ͜͜Ͱʮ…͋Εʁ͍ΖΜͳॴͰΈΔ͚ͲɺͲ͜Ͱ͔ͭ͏Μͩʁʯ͓ͬͯ΋ΘΕΔ
    Α͏ͳ৭ʑͳઃܭͷ࿩ɻૄ݁߹ͱ͔ɺ୯Ұ੹຿ͱ͔ɺPOPOͱ͔͕Ͱͯ͘Δ)
    — ʮLaravelΛ͔͍ͭͬͯΔʯͱ͍͍ͭͭɺʮΦϨΦϨLaravelʯʹͳͬͯ·ͤΜʁ

    View Slide

  40. ·ͱΊ
    — ͋ͳͨͷαʔϏε͸Laravelʹ͓͞·Γ͖Δͷʁ͓͓͖ͳαʔϏεͰLaravelΛ࢖͍ͬͯΔ
    ਓͱ࿩ͨ͠ʁ
    — νϡʔτϦΞϧ΍ɺެࣜͷ୹͍υΩϡϝϯτ͸͢΂ͯΛઆ໌͍ͯ͠ͳ͍(≒݁Ռɺࣗ෼
    Ͱߟ͑Δඞཁ͕͋Δ)
    — େ͖͘ɺӬ͘ɺଟਓ਺Ͱ։ൃ͢ΔͳΒɺʮΈΜͳ͕ͦ͏͔ͩΒʯͰબ͹ͳ͍͠ɺͦ΋ͦ
    ΋ʮΈΜͳʯͱ࿩ͯ͠Δʁ
    — ઃܭ΍։ൃνʔϜ͕ઌɺϑϨʔϜϫʔΫ͸ޙ
    — (ࢼ࡞ʹ͸͍͍͚ͲͶɺݱ࣮͸ࢼ࡞͢ΔͱʮͦΕͰ͍͖·͠ΐ͏ʂʯͬͯݴΘΕΔ͡Ό
    Μwww)
    — ࣭໰͋Γ·͔͢ʁ

    View Slide