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

CakePHPの進化から読み解く、PHPフレームワークの"今"っぽさ/phperkaigi-2020

 CakePHPの進化から読み解く、PHPフレームワークの"今"っぽさ/phperkaigi-2020

PHPerKaigi2020での発表資料です(※配布用に改訂しています)

https://fortee.jp/phperkaigi-2020/proposal/ef0682ab-08b3-4129-ac1f-41b22c40021a

hideki kinjyo
PRO

February 10, 2020
Tweet

More Decks by hideki kinjyo

Other Decks in Programming

Transcript

  1. © - BASE, Inc.
    CakePHPの進化から読み解く、
    PHPフレームワークの

    "今"っぽさ
    -഑෍൛-
    . . - PHPerKaigi

    View Slide

  2. 「配布版」です
    © - BASE, Inc.
    • PHPerKaigi2020Ͱར༻ͨ͠εϥΠυΛ

    վగͨ͠΋ͷͰ͢
    • ҎԼͷมߋ͕ߦΘΕ͍ͯ·͢
    • Ұ෦ͷදه౳ͷमਖ਼
    • τʔΫ࣌ʹεΩοϓͨ͠಺༰ͷࠩ͠ࠐΈ
    • appendixͷ௥Ճ
    ➡PDFΛDLͨ͠ΒϦϯΫΛ։͚·͢ʂ

    View Slide

  3. © - BASE, Inc.
    ⾃⼰紹介
    • ۚ৓लथ / ͖Μ͡ΐ͏ͻͰ͖
    • GitHub: @o0h / Twitter: @o0h_
    • BASE, Inc. (2019.10) / ج൫νʔϜ
    • ex Connehito Inc.(2015.04-)
    • ޷͖ͳFW͸CakePHP
    • ΞΠίϯ͸

    ඒຯ͍͠ࡪ਌ࢠကͷࣸਅͰ͢

    View Slide

  4. 本⽇のお話
    © - BASE, Inc.

    View Slide

  5. 本⽇のお話
    © - BASE, Inc.
    ‧‧‧って、なに?

    View Slide

  6. © - BASE, Inc.
    ຊτʔΫ͸ɺൃදऀࣗ਎ͷݸਓతͳܦݧɾओ؍Λجʹͨ͠ߟ࡯͔Β੒Γཱ͍ͬͯ·͢ɻ

    ͥͻօ༷ͷߟ͑΍ඒֶΛڭ͑ͯԼ͍͞ɻ

    ͋Δ͍͸ɺ͜͜ʹډΔօ༷͕Կ͔Λߟ͑ͯΈΔΩοΧέʹͳͬͨΒ޾͍Ͱ͢ɻ
    Attention!
    PHPerKaigiを「偉いひとが⼀⽅的に何
    かを教えてあげる場」ではなく、「エ
    ンジニア同⼠で知⾒を共有しあうコ
    ミュニケーションの場」として設計し
    たい、という想い
    (ʮPHPerKaigi 2020 εϐʔΧʔͷΈͳ͞·΁ͷ͝Ҋ಺ʯΑΓ)

    View Slide

  7. このトークで話したいこと
    © - BASE, Inc.
    • PHPͱͦΕΛऔΓר͘؀ڥ͸ɺͲ͏มΘͬ
    ͖͔ͯͨ
    • ͦΕʹ͋ΘͤͯɺCakePHP͸Ͳ͏มΘͬͯ
    ͖͔ͨ
    –CakePHP: ஌໊౓ͷߴ͍&ྺ࢙ͷ௕͍PHP੡FWͷ1
    ͭͱͯ͠
    • ʮ͜Ε͔Βʯʹ޲͖߹͏FWͷࡏΓํͱ͸

    View Slide

  8. このトークの対象者
    © - BASE, Inc.
    • ʮϞμϯͬͯ͞ԿͩʁʯΛߟ͑ͯΈͨ͜
    ͱͷ͋Δਓ
    • (ग़དྷΕ͹CakePHP2 or 3Λར༻ͨ͜͠ͱ
    ͕͋ΔਓͩͱɺΑΓຯΘ͍ਂ͍͔΋)
    –৮ͬͨ͜ͱແ͍ਓͰ΋ຊےͷཧղʹ͸໰୊ͳ͍
    Ͱ͢ʂ

    View Slide

  9. © - BASE, Inc.
    おしながき
    PHPと”今っぽさ”のアップデート
    “今っぽさ”とは何か?

    && なぜ変化するのか
    FWはどのように”今っぽさ”を⼿に⼊れるか

    〜CakePHPの「今」と「未来」を例に〜

    View Slide

  10. © - BASE, Inc.
    おしながき
    PHPと”今っぽさ”のアップデート
    “今っぽさ”とは何か?

    && なぜ変化するのか
    FWはどのように”今っぽさ”を⼿に⼊れるか

    〜CakePHPの「今」と「未来」を例に〜

    View Slide

  11. © - BASE, Inc.
    1࣭ͭ໰Λͯ͠Έ·͢
    ಥવͰ͕͢ʂ

    View Slide

  12. どっちが好きですか?
    © - BASE, Inc.
    1. “ݹष͍”ײ͕͢͡Δίʔυ
    2. “ࠓͬΆ͞”͕ײ͡ΒΕΔίʔυ

    View Slide

  13. どっちが好きですか?
    © - BASE, Inc.
    ͜Ε͸(উखͳ|ਪଌͰͷ)ݟํͰ͕͢
    –“ࠓͬΆ͍”ͷ͕޷͖
    –ͲͪΒ͔ͱ͍͏ͱ “ࠓͬΆ͍”ํ͕޷͖
    ͱ͍͏ਓ͕ଟ͍ͷͰ͸ͳ͍Ͱ͠ΐ͏͔ʁ
    ɾɾɾͦΕ͸ͳͥʁ

    View Slide

  14. どっちが好きですか?
    © - BASE, Inc.
    • ͳͥʮϨΨγʔʯ͕ѱͯ͘ʮϞμϯʯ͕

    ྑ͍ͷ͔ʁ
    • ྆ऀΛ෼͚ΔϞϊ(ఆٛ)͸Կʁ

    View Slide

  15. レガシーコード?
    © - BASE, Inc.
    ʮϨΨγʔͱ͸ʁʯͷ৭ʑͳ؍఺ɾ࿦఺
    –ʮςετͷͳ͍ίʔυʯ
    –ʮमਖ਼ɺ֦ுɺ࡞ۀ͕ඇৗʹ೉͍͠ίʔυʯ
    –ʮҙਤͷ἞ΈऔΕͳ͍ίʔυʯ
    –ʮແବͳ(ফ͞Ε͍ͯͳ͍)Օॴͷଟ͍ίʔυʯ
    –etc..

    View Slide

  16. レガシーコード?
    © - BASE, Inc.
    ͜ΕΒͷߟ͑ํͷࠜఈʹ͸
    ίʔυͷण໋ͷ؍఺͕ڞ௨͍ͯͦ͠͏
    • ෗Γ΍͍͢(෗ͬͨ) VS ଱ٱ೥਺͕௕͍
    • ϦʔμϏϦςΟɺςελϏϦςΟɺ

    ϦϑΝΫλϏϦςΟɺϙʔλϏϦςΟ

    View Slide

  17. コードの寿命?
    © - BASE, Inc.
    • զʑ͸ʮ௕͘ੜ͖ΒΕΔίʔυʯ͕ཉ͍͠
    • ʮੜ͖Δʯͱ͸ʮͪΌΜͱಈ͘ʯ
    –ಈ࡞͢Δ(ϓϩάϥϜͱͯ͠ಈ͔ͤΔ)
    –อकվम͕Մೳ(ϓϩδΣΫτͱͯ͠ಈ͔
    ͤΔ)

    View Slide

  18. “時代遅れ”、“現在”、 “未来”
    © - BASE, Inc.
    • ϨΨγʔίʔυͱ”ࠓͬΆ͍”ίʔυ͸

    (গͳ͔Βͣ)ٯͷํ޲ੑʹ͋Δ͸ͣ
    • ϨΨγʔ͕ʮ෗Δʯํ޲΁ͷ࡞༻ͳΒ

    ͦͷٯͷ“ࠓͬΆ͞”ͱ͸ɺଈͪ๷෗ࡎ
    • “ࠓͬΆ͞” = “ະདྷࢤ޲ͷ”ίʔυ

    View Slide

  19. モダンでやっていくとは
    © - BASE, Inc.
    “ࠓͬΆ͍”(=Ϟμϯͳ)ίʔυͱ͸
    • NOT: ৽ػೳΛ੝ΓࠐΜͩ
    • IS: ະདྷ΁͍ͭͯߦ͚Δɾ४උ͕Ͱ͖͍ͯΔ
    ͷ͜ͱΛࢦ͢ͷͰ͸ʁ

    View Slide

  20. モダンでやっていくとは
    © - BASE, Inc.
    “ࠓͬΆ͍”(=Ϟμϯͳ)ίʔυͱ͸
    • NOT: ৽ػೳΛ੝ΓࠐΜͩ
    • IS: ະདྷ΁͍ͭͯߦ͚Δɾ४උ͕Ͱ͖͍ͯΔ
    ͷ͜ͱΛࢦ͢ͷͰ͸ʁ
    ຊτʔΫͷ

    ओுͷࠎࢠʹͯ͠࠷େͷओ؍

    View Slide

  21. © - BASE, Inc.
    ʮϞμϯʯΛ΍͍ͬͯ͘ͷʹɺ

    (৽ػೳ|τϨϯυ)͸ؔ܎ͳ͍ͬͯ͜ͱʁ
    ͱ͍͏͜ͱ͸ʂ

    View Slide

  22. 新機能、トレンド、新しさ
    © - BASE, Inc.
    • ྫ͑͹ʮPHPͷ৽͍͠ver.ʯ
    –ʮhogeΛ࢖ͬͯΈͨʯΒϞμϯͳͷ͔ʁ
    –ʮੲ͔Β͋Δػೳʯ͚ͩͰ࡞ͬͨΒϨΨγʔʁ
    ͦ͏͡Όͳ͍Ͱ͠ΐʂͱ͍͏

    View Slide

  23. 新機能を使う利点
    © - BASE, Inc.
    • ͡Ό͋ʮ৽ػೳΛऔΓೖΕΔʯඞཁੑ͸
    Ͳ͜ʹ͋Δͷ͔ʁ
    –ʮྑ͍΋ͷʯͰ͋Ε͹ɺ࢖͑Δͱྑ͍
    –(ʮ࢖͏͜ͱʯࣗମ͕໨తʹ͸ͳΒͳ͍͕)

    Ұఆͷ߹ཧੑɺʮ΍ͬͯݟΔՁ஋ʯ͕͋Γͦ͏

    View Slide

  24. © - BASE, Inc.
    テキストテキスト
    これで良いのか?

    View Slide

  25. 後から⼊った機能を使うと?
    © - BASE, Inc.
    • ͋͋

    View Slide

  26. 後から⼊った機能を使うと?
    © - BASE, Inc.
    γϡοͱͨ͠ίʔυʂ

    View Slide

  27. 進化: ⽅向づけと推進⼒
    © - BASE, Inc.
    • ιϑτ΢ΣΞ͸ͳͥਐԽ͢Δͷ͔ʁ
    –ϦʔϚϯͷ๏ଇ: ʮ࢖ΘΕ͍ͯΔؒ͸มԽ͠ଓ
    ͚Δʯ
    • ར༻ऀ͔Βͷʮ৽ػೳʯ΁ͷχʔζ͕͋
    Δ͜ͱ͕ɺਐԽͷݯઘ
    APPENDIX
    - Programs, Life Cycles, and Laws of Software Evolution http://citeseerx.ist.psu.edu/viewdoc/
    download?doi=10.1.1.116.3108&rep=rep1&type=pdf
    - ιϑτ΢ΣΞอकͷ๏ଇʢϦʔϚϯͷ๏ଇʣɺ͝ଘ஌Ͱ͔͢ʁɿ৿࡚म࢘ͷʮͲ͏΍ͬͯ͸͔ΔͷʁʯɿΦϧλφςΟϒɾϒϩά
    https://blogs.itmedia.co.jp/morisaki/2012/04/post-7e5d.html

    View Slide

  28. PHP as software
    © - BASE, Inc.
    • ͦ΋ͦ΋ʮPHPʯ΋1ͭͷιϑτ΢ΣΞ
    –ͭ·ΓFW΍ΞϓϦέʔγϣϯͱ

    ಉ͡ཧ۶͕എܠʹ͋ΓɺਐԽ͠ଓ͚͍ͯΔ
    • Ϣʔβʔ(=PHPίϛϡχςΟ)ͷ

    ϑΟʔυόοΫΛ࣮ݱ͢Δ͜ͱͰਐԽ

    View Slide

  29. 武器としての先進性
    © - BASE, Inc.
    • ʮࠓͷ࣌୅ʹଈͯ͠ʯʮྑ͍ํ޲΁ʯͱ

    มԽΛ͠ଓ͚͍ͯΔ
    • ͦΕΒʹ৐͔ͬΔ͜ͱͰɺ

    ʮϞμϯ͞ʯΛٵऩ͍ͯ͘͠ҙࣝ

    View Slide

  30. © - BASE, Inc.
    Part1·ͱΊ

    View Slide

  31. “今っぽさ”とは何か? && なぜ変化するのか
    © - BASE, Inc.
    • ϨΨγʔ
    –อकɾมߋ͕೉͍͠ͷ͕ʮϨΨγʔʯ
    –݁Ռͱͯ͠ʮ෗ഊʯ͕ੜ͡ɺण໋͕ॖ·Δ
    • Ϟμϯ͞
    –ϨΨγʔԽʹର͢Δ๷෗ࡎతͳཁૉͷ1ͭ
    • ৽ػೳ
    –ʮมߋʹڧ͍ίʔυʯΛॻͨ͘Ί

    ʮ৽͍͠ػೳ΍ॻ͖ํʯΛऔΓೖΕΔ

    View Slide

  32. © - BASE, Inc.
    おしながき
    PHPと”今っぽさ”のアップデート
    “今っぽさ”とは何か?

    && なぜ変化するのか
    FWはどのように”今っぽさ”を⼿に⼊れるか

    〜CakePHPの「今」と「未来」を例に〜

    View Slide

  33. © - BASE, Inc.
    おしながき
    PHPと”今っぽさ”のアップデート
    “今っぽさ”とは何か?

    && なぜ変化するのか
    FWはどのように”今っぽさ”を⼿に⼊れるか

    〜CakePHPの「今」と「未来」を例に〜

    View Slide

  34. “今っぽさ”を作るもの
    © - BASE, Inc.
    • ιϑτ΢ΣΞΛࢧ͑Δ΋ͷ͸ʁ
    –؀ڥ
    • ex: Ϋϥ΢υɺετϨʔδɺCPU
    –ݴޠ
    • ex: ϝδϟʔόʔδϣϯΞοϓ
    –ίϛϡχςΟ
    • ex: ύοέʔδϚωʔδϟɺςετϑϨʔϜϫʔΫ

    View Slide

  35. “今っぽさ”を作るもの
    © - BASE, Inc.
    • ؀ڥ ⁵ ݴޠ ⁵ ίϛϡχςΟ
    • ͜ΕΒ͸૬ޓతͳӨڹΛٴ΅͠ͳ͕Βɺ

    ʮԿΛ͢΂͖͔ʯͱ͍͏ྗ͕ಇ͘
    ➡ ਐԽΛଅਐ͢Δʮཁٻʯ

    View Slide

  36. © - BASE, Inc.
    Ϣʔβʔʹͱͬͯ

    PHP͕ͲͷΑ͏ʹมԽ͖͔ͯͨ͠

    ؆୯ʹৼΓฦͬͯΈΔ
    ͱ͍͏͜ͱͰ

    View Slide

  37. © - BASE, Inc.
    ※ίίͰ͸શͯͷػೳมߋ౳ʹ͸৮Ε·ͤΜɻ


    ʮ࠷ۙͷPHPͷྺ࢙ʯʹ͍ͭͯ஌Γ͍ͨํ͸

    ଞʹࢀߟʹͳΔࢿྉ͕͋ΔͷͰͦͪΒΛɻ

    PHP͸ԿΛࣺͯɺͲΜͳྗΛखʹೖΕ͖ͯͨͷ͔ #phpcon
    https://www.pixiv.net/fanbox/creator/105589/post/691574


    pmjones/php-history: A list of the years-of-introductions of
    notable (to me) PHP framework and library projects.

    https://github.com/pmjones/php-history

    View Slide

  38. PHPの歴史のおさらい
    © - BASE, Inc.
    • CakePHP1
    • PHP 4.4 / 5.0 / 5.1
    • Ruby On Rails 1.0

    View Slide

  39. PHPの歴史のおさらい
    © - BASE, Inc.
    • CakePHP1
    • PHP 4.4 / 5.0 / 5.1
    • Ruby On Rails 1.0

    PHP4ϕʔε

    View Slide

  40. PHPの歴史のおさらい
    © - BASE, Inc.
    • CakePHP1
    • PHP 4.4 / 5.0 / 5.1
    • Ruby On Rails 1.0

    4ܥ࠷ޙͷϚΠφʔόʔδϣϯ
    APPENDIX
    - PHP: PHP ͷྺ࢙ͱؔ࿈͢ΔϓϩδΣΫτ - Manual (※PHP5·Ͱͷ͋Β·͠) https://www.php.net/manual/ja/history.php

    View Slide

  41. PHPの歴史のおさらい
    © - BASE, Inc.
    • CakePHP1
    • PHP 4.4 / 5.0 / 5.1
    • Ruby On Rails 1.0

    ɾɾׂѪʂ

    View Slide

  42. PHPの歴史のおさらい
    © - BASE, Inc.
    • CakePHP1
    • PHP 4.4 / 5.0 / 5.1
    • Ruby On Rails 1.0

    spl_autoload_register()ͷ௥Ճ

    View Slide

  43. PHPの歴史のおさらい
    © - BASE, Inc.
    • PHP5.3
    • PHP Standards Group


    • GitHub

    View Slide

  44. PHPの歴史のおさらい
    © - BASE, Inc.
    • PHP5.3
    • PHP Standards Group


    • GitHub
    ໊લۭؒͷαϙʔτ

    View Slide

  45. PHPの歴史のおさらい
    © - BASE, Inc.
    • PHP5.3
    • PHP Standards Group


    • GitHub
    ͦΕΛड͚ͯू·ͬͨͷ͕

    “Standards Group”

    (PHP-FIGͷલ਎)
    APPENDIX
    - PHP Standards and Best Practices for PHP 5.3+ Frameworks and Libraries https://news-web.php.net/php.standards/2

    View Slide

  46. PHPの歴史のおさらい
    © - BASE, Inc.
    • PHP5.3
    • PHP Standards Group


    • GitHub
    ͦͷଞʹ΋ॏཁͳػೳ௥Ճଟ਺ɻ

    ౰ॳͷʮ࠷ޙͷPHP5ʯɻ

    View Slide

  47. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP6ͷஅ೦
    • ॻ੶ʮύʔϑΣΫτPHPʯൃച
    • HipHop(=> HHVM/Hack)
    • RFC: SplClassLoader (PSR-0)
    APPENDIX
    - ຊ౰ʹ݁ߏύʔϑΣΫτͰͨ͠ – ॻධʮύʔϑΣΫτPHPʯ | ΤϯδχΞϒϩά | GREE Engineering https://labs.gree.jp/blog/
    2010/11/1978/
    - appendix: ถFacebookɺPHPίʔυΛC++ίʔυʹม׵ͯ͠ߴ଎ʹ࣮ߦ͢ΔʮHipHop for PHPʯൃද | OSDN Magazine https://

    View Slide

  48. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP6ͷஅ೦
    • ॻ੶ʮύʔϑΣΫτPHPʯൃച
    • HipHop(=> HHVM/Hack)
    • RFC: SplClassLoader (PSR-0)
    ࠾୒ͳΒͣɻ

    ҎޙɺStandards Groupͱͯ͠
    ͸RFCΛग़͍ͯ͠ͳ͍
    APPENDIX
    - PHP: rfc:splclassloader https://wiki.php.net/rfc/splclassloader

    View Slide

  49. PHPの歴史のおさらい
    © - BASE, Inc.

    • CakePHP2
    • Laravel1
    • PHP-FIG
    • Composer + Packagist(։ൃ։࢝)

    View Slide

  50. PHPの歴史のおさらい
    © - BASE, Inc.

    • CakePHP2
    • Laravel1
    • PHP-FIG
    • Composer + Packagist(։ൃ։࢝)
    PHP5.2.6+Λαϙʔτ

    (4.xΛ੾Γࣺͯ)

    View Slide

  51. PHPの歴史のおさらい
    © - BASE, Inc.

    • CakePHP2
    • Laravel1
    • PHP-FIG
    • Composer + Packagist(։ൃ։࢝)
    PHPͷ“Standards”Ͱ͸ͳ͘
    “Frameworks”ͷͨΊͷ૊৫΁ɻ

    ಉ೥தʹPSR-1/2/3Λࡦఆ
    APPENDIX
    - The Past, Present and Future of the PHP-FIG — SitePoint https://www.sitepoint.com/the-past-present-and-future-of-the-php-fig/

    View Slide

  52. PHPの歴史のおさらい
    © - BASE, Inc.

    • CakePHP2
    • Laravel1
    • PHP-FIG
    • Composer + Packagist(։ൃ։࢝)
    ࣮૷؍఺Ͱ͸ɺ

    namespace & SPL AutoloadΛར
    ༻͠PSR-0ʹ४ڌͨ͠ϑϨʔϜ
    ϫʔΫɻ
    APPENDIX
    - Composer: Part 1 – What & Why | Nelmio Blog http://blog.nelm.io/2011/12/composer-part-1-what-why/

    View Slide

  53. PHPの歴史のおさらい
    © - BASE, Inc.

    • CakePHP2
    • Laravel1
    • PHP-FIG
    • Composer + Packagist(։ൃ։࢝)
    ΤίγεςϜͱͯ͠͸ɺ

    (PEARͷ)தԝूݖతͳ؅ཧ͔Β
    ͷ୤٫

    View Slide

  54. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP5.4

    • PHP5.5

    • PHP5.6
    • PHP-Parser v1.0.0
    APPENDIX
    - Release PHP-Parser 1.0.0 · nikic/PHP-Parser https://github.com/nikic/PHP-Parser/releases/tag/v1.0.0

    View Slide

  55. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP5.4

    • PHP5.5

    • PHP5.6
    • PHP-Parser v1.0.0
    trait
    ഑ྻͷ୹ॖߏจ
    APPENDIX
    - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration54.new-features.php

    View Slide

  56. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP5.4

    • PHP5.5

    • PHP5.6
    • PHP-Parser v1.0.0
    generator
    finally
    APPENDIX
    - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration55.new-features.php

    View Slide

  57. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP5.4

    • PHP5.5

    • PHP5.6
    • PHP-Parser v1.0.0
    const, func΋useͰͷΠϯϙʔτՄೳʹ
    APPENDIX
    - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration56.new-features.php

    View Slide

  58. PHPの歴史のおさらい
    © - BASE, Inc.

    • CakePHP3
    • PHP7
    • Phan 0.1
    APPENDIX
    - Release Initial release 0.1 · phan/phan https://github.com/phan/phan/releases/tag/0.1

    View Slide

  59. PHPの歴史のおさらい
    © - BASE, Inc.

    • CakePHP3
    • PHP7
    • Phan 0.1
    PHP5.4.16+Λαϙʔτ

    View Slide

  60. PHPの歴史のおさらい
    © - BASE, Inc.

    • CakePHP3
    • PHP7
    • Phan 0.1
    εΧϥʔܕએݴ
    ໭Γ஋ͷܕએݴ
    Expectation / assert
    APPENDIX
    - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration70.new-features.php

    View Slide

  61. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP7.1
    • PHPStan 0.1

    • PHP7.2
    APPENDIX
    - PHPStan: Find Bugs In Your Code Without Writing Tests! https://medium.com/@ondrejmirtes/phpstan-2939cd0ad0e3

    View Slide

  62. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP7.1
    • PHPStan 0.1

    • PHP7.2
    nullableܕએݴ
    voidؔ਺
    iterable ٖࣅܕ
    ෳ਺ྫ֎ͷ catch
    APPENDIX
    - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration71.new-features.php

    View Slide

  63. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP7.1
    • PHPStan 0.1

    • PHP7.2
    ந৅ϝιουͷΦʔόʔϥΠυ
    ύϥϝʔλͷܕͷ֦େม׵
    objectܕએݴ
    APPENDIX
    - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration72.new-features.php

    View Slide

  64. パラメータの型の拡⼤変換
    © - BASE, Inc.
    ϥΠϒϥϦɾFW͕ܕએݴΛߦ͍΍͘͢ͳͬͨ
    https://www.php.net/manual/ja/migration72.new-features.php#migration72.new-features.param-type-widening

    View Slide

  65. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP7.3

    • PHP7.4
    • CakePHP4

    View Slide

  66. PHPの歴史のおさらい
    © - BASE, Inc.

    • PHP7.3

    • PHP7.4
    • CakePHP4 PHP7.2+Λαϙʔτ
    APPENDIX
    - Raise minimum version of PHP to 7.2 for 4.0 · Issue #13103 https://github.com/cakephp/cakephp/issues/13103

    View Slide

  67. © - BASE, Inc.
    ͜ͷྲྀΕΛந৅Խͯ͠ଊ͑ͯΈΔ

    View Slide

  68. PHP .x後半〜5.x前半時代の進化
    © - BASE, Inc.
    • ʙ2008೥ / ʙPHP5.2
    • Ruby on Railsͷొ৔࣌ظɺϑϧελοΫ
    FWͷོ੝
    • CakePHP, Symfony, Zend Framework, Yii
    • ʮ1ͭͷFWͰ্ख͘΍Γ͍ͨʯงғؾʁ

    View Slide

  69. PHP .x後半時代の進化
    © - BASE, Inc.
    • ʙ2014೥ / ʙPHP5.6
    • ໊લۭؒͷಋೖͱComposerͷొ৔
    • PHP-FIG =ʮFWؒͷ૬ޓӡ༻ੑʯ
    • ʮෳ਺ϞδϡʔϧΛखܰʹѻ͍͍ͨʯง
    ғؾʁ

    View Slide

  70. PHP . 以降
    © - BASE, Inc.
    • 2016೥ʙ / PHP7.0+
    • ܕએݴɾExpectationͷಋೖ
    • ੩తղੳπʔϧͷ੝Γ্͕Γ
    • ʮPHPͰ΋ݻ͘ॻ͖͍ͨʯงғؾʁ

    View Slide

  71. © - BASE, Inc.
    Part2·ͱΊ

    View Slide

  72. PHPと”今っぽさ”のアップデート
    © - BASE, Inc.
    • “ࠓͬΆ͞”͸࣌୅ʹΑͬͯมԽ͍ͯ͠Δ
    • ʮେ͖ͳFWʯ͚ͩͰखͷಧ͔ͳ͍෦෼ͷ
    ։ൃޮ཰ɾ඼࣭΋ٻΊΒΕΔΑ͏ʹ
    • ͦΕΛ௥͏Α͏ʹʮݎ࿚͞ʯ΋ॏࢹ͞Ε
    ΔΑ͏ʹ
    APPENDIX
    - @phpc ʮWhat are the top three things you consider to have been the most important developments in PHP or its community in
    the 2010s?ʯ / Twitter https://twitter.com/phpc/status/1222979830939115521

    View Slide

  73. © - BASE, Inc.
    おしながき
    PHPと”今っぽさ”のアップデート
    “今っぽさ”とは何か?

    && なぜ変化するのか
    FWはどのように”今っぽさ”を⼿に⼊れるか

    〜CakePHPの「今」と「未来」を例に〜

    View Slide

  74. © - BASE, Inc.
    おしながき
    PHPと”今っぽさ”のアップデート
    “今っぽさ”とは何か?

    && なぜ変化するのか
    FWはどのように”今っぽさ”を⼿に⼊れるか

    〜CakePHPの「今」と「未来」を例に〜

    View Slide

  75. © - BASE, Inc.
    CakePHPΛྫʹͯ͠ɺ

    ʮݴޠɾίϛϡχςΟͷਐԽʹରͯ͠ɺ1ͭͷι
    ϑτ΢ΣΞ͕Ͳ͏൓Ԡ͍͔ͯͬͨ͠ʯ

    ͱ͍͏࿩Λ͠·͢ʂ

    View Slide

  76. © - BASE, Inc.
    おさらいCakePHPの歴史
    Y
    • 2005೥ϦϦʔε
    • PHP4Ҏ্
    Y
    • 2011೥ϦϦʔε
    • PHP5.2Ҏ্
    Y
    • 2015೥ϦϦʔε
    • PHP5.4.16Ҏ্
    Y
    • 2019೥ϦϦʔε
    • PHP7.2Ҏ্

    View Slide

  77. CakePHPの現状
    © - BASE, Inc.
    • CakePHP4ܥstable
    –࠷৽͸4.0.3
    • CakePHP3ܥ͸maintenance mode
    –ػೳ௥Ճ͸͞Εͣɺbug fix౳͕ओ
    –࠷৽͸3.8.10 (ڪΒ͘3.9.x͕࠷ऴόʔδϣϯ)
    • CakePHP2ܥ͸maintenance mode
    –ػೳ௥Ճ͸͞Εͣɺbug fixɾsecurity fix͕ओ
    –࠷৽͸2.10.20
    APPENDIX
    - Safer, More Helpful CakePHP https://www.slideshare.net/markstory/safer-more-helpful-cakephp (Slide no.5-)

    View Slide

  78. .x/ .xのサポート期間
    © - BASE, Inc.
    • ʮ4.0͕ग़ͨΒΞΫςΟϒαϙʔτऴྃʯͱએ
    ݴ͍ͯͨ͠
    • 2.x:
    –12ϱ݄ͷؒ͸bug fix΋ରԠ
    –18ϱ݄ͷؒ͸security fix͸ରԠ
    • 3.x:
    –4.0ͱޓ׵ੑͷਪਐ͸ܧଓ͢Δɻ৽ػೳ͸෇͚ͳ͍
    –36ϱ݄ͷؒ͸security fix͸ରԠ

    View Slide

  79. © - BASE, Inc.
    CakePHP3.xͷʮ൓লʯͱʮֶͼʯ

    View Slide

  80. 2020年の今から⾒たCakePHP
    © - BASE, Inc.
    • ʮComposerҎલʯͷFW
    –Πϯετʔϧ͕ʮखಈʯʹͳΔ
    –ͦΕʹΑΔຊମͷංେԽ
    • ʮPSRҎલʯͷFW
    –ͱΓΘ͚PSR-0ʙ2ͱ͍ͬͨʮॏཁʯͳϧʔϧʹ৐͔ͬΕ͍ͯͳ͍
    • ͦͷଞͷ௧Έ
    –جຊઃܭ͕ʮ1.xʯͷ࣌୅ΛҾ͖ͣΓա͗ͨ
    –The current model class/system has served CakePHP well for
    the last 6 years(by Mark Story)
    APPENDIX
    - Model api changes · markstory/cakephp Wiki https://github.com/markstory/cakephp/wiki/Model-api-changes#problems

    View Slide

  81. .x -> .x
    © - BASE, Inc.
    • ComposerϕʔεͷΠϯετʔϧʹରԠʂ
    • PSR-1/2/4ରԠʂ
    • ʮMiddlewareʯʮCarbonʯ౳ͷ

    ”ࠓͬΆ͍”֓೦ͷಋೖʂ
    • ORMͷ࡮৽ʂ
    APPENDIX
    - 3.0 Roadmap · cakephp/cakephp Wiki https://github.com/cakephp/cakephp/wiki/3.0-Roadmap

    View Slide

  82. めでたしめでたし?
    © - BASE, Inc.
    • FWͱͯ͠͸Ұؾʹચ࿅͞Εͨ
    –͍ͪϢʔβʔͱͯ͠΋ʮ࢖͍৺஍͕ྑ͍ͳʯͱ
    ͍͏खԠ͑
    • ͨͩ͠ɺ༨Γʹ΋มߋ͕ഁյతͰɺҠߦ
    ͕ࠔ೉ͳ΋ͷʹͳͬͨ
    APPENDIX
    - CakePHP - The Road Ahead https://www.slideshare.net/markstory/cakephp-the-road-ahead (Slide no.4-)

    View Slide

  83. いくつか問題がありそう
    © - BASE, Inc.
    • 2.0(2011೥) - 3.0(2015೥)Ͱ͋Ε͹

    ʮͨͬͨ4೥ؒʯʹݟ͑Δ͕ɺ

    ʮ2011೥ͷ࠷৽஍఺ʯ͔ΒͷδϟϯϓͰ͸
    ͳ͍
    • ͦͷؒʹPHPΛऔΓר͘ঢ়گ͕େ͖͘มԽ
    –CIͷීٴɺςετͷʮ౰ͨΓલʯԽ
    –ComposerͷσϑΝΫτελϯμʔυԽ

    View Slide

  84. 「移⾏が困難」の問題点
    © - BASE, Inc.
    • ݹ͍όʔδϣϯ΁ͷډ࢒Γ
    –ίϛϡχςΟͷஅઈ
    • ʮίϛϡχςΟʯͷ೤ͷ௿Լ
    –ιϑτ΢ΣΞͷਐԽ͸ϑΟʔυόοΫʹґଘ͢
    Δ

    View Slide

  85. © - BASE, Inc.
    ʮҠߦΛ͠Α͏ͱࢥͬͨΒେมͩͬͨʯ
    =>ɾɾɾϨΨγʔʁ

    View Slide

  86. © - BASE, Inc.
    Cake3.x -> 4.xͰ਎ʹ͚ͭͨʮϞμϯ͞ʯ

    View Slide

  87. Cake .x -> .xで⾝につけた「モダンさ」
    © - BASE, Inc.
    CakePHP4લޙͰݟ͑ͯ͘Δ࢟੎
    1. Ϣʔβʔ΁ͷμϝʔδΛ཈੍͢Δ
    2. ʮඪ४ʯʹد͓ͤͯ͘
    3. ίʔυ඼࣭Λ։ൃऀ/ར༻ऀʹͱͬͯอ
    ͪ΍͘͢

    View Slide

  88. OSSとして進化し続けるための⼒
    © - BASE, Inc.
    • ιϑτ΢ΣΞ͸ϑΟʔυόοΫʹΑΓਐ
    Խ͢Δ
    –͍͔ʹϢʔβʔίϛϡχςΟͷ೤ΛอͯΔ͔ʁ
    –ʮΞΫςΟϒϢʔβʔʯ͕େࣄ

    View Slide

  89. OSSとして進化し続けるための⼒
    © - BASE, Inc.
    • 2.x -> 3.xͰ͸ʮࣦഊʯͨ͠
    –େن໛ͳഁյతมߋʹΑΔʮஅઈʯ
    –(MVCͷத৺తͳଘࡏͰ΋͋Δ)

    ʮϞσϧʯͷ࡞Γ͕ɺύϥμΠϜϨϕϧͰมߋ
    ΊͬͪΌΩπ͍
    APPENDIX
    - ৽ ORM ΞοϓάϨʔυΨΠυ - 3.8 https://book.cakephp.org/3/ja/appendices/orm-migration.html

    View Slide

  90. OSSとして進化し続けるための⼒
    © - BASE, Inc.
    • 4.xͰ͸ࣄલʹʮೈண཮ʯΛ࢓ࠐΜͩ
    –3.6͔Β͸ʮ4ͷͨΊͷ४උʯͱҐஔ͚ͮ
    –@deprecatedλάɺE_USER_DEPRECATEDΤϥʔ
    –ʮDEPRECATEDରԠ͓͚ͯ͠͹ಈ͘ʯํ਑
    APPENDIX
    - 3.6 - Add a deprecation warning helper. by markstory https://github.com/cakephp/cakephp/pull/11075
    - Upcoming CakePHP Roadmap & Releases — Bakery https://bakery.cakephp.org/2017/06/23/upcoming-cakephp-roadmap.html
    - 3.6 ҠߦΨΠυ https://book.cakephp.org/3/ja/appendices/3-6-migration-guide.html
    - 3.7 ҠߦΨΠυ https://book.cakephp.org/3/ja/appendices/3-7-migration-guide.html
    - 3.8 ҠߦΨΠυ https://book.cakephp.org/3/ja/appendices/3-8-migration-guide.html

    View Slide

  91. OSSとして進化し続けるための⼒
    © - BASE, Inc.
    • ݁Ռతʹ4.0͸೉࢈͕ͩͬͨɺ

    ΋ͷ͍͢͝ஸೡʹDEPRECATEΛચ͍ग़͠
    ͯ͘Εͨҹ৅
    –3.6Ͳ͜Ζ͔ɺ3.7 / 3.8·ͰਐΜͩ
    –ͦͷʮ໘౗ष͞ʯ͸ɺ

    4.0ͷʮ੔ཧ͞Εͨίʔυʯʹͭͳ͕ͬͯΔ

    View Slide

  92. 移⾏ツールの提供
    © - BASE, Inc.
    • ->3.xͷ࣌΋Upgrade tool͸͕͋ͬͨɺ

    ʮࣗಈͰ׬ྃ͢ΔʯϨϕϧʹ͸ͳ͔ͬͨ
    • ->4.x͸RectorϕʔεʹҠߦ
    –͜ΕͰϢʔβʔ͔Β΋ϙʔλϒϧͳ஌ࣝͰʮҠ
    ߦπʔϧ΁ͷϑΟʔυόοΫʯ͕ߦ͍΍͘͢
    APPENDIX
    - cakephp/upgrade: Upgrade tools for CakePHP meant to facilitate migrating from one version of the framework to another
    https://github.com/cakephp/upgrade
    - 4.0 ΞοϓάϨʔυΨΠυ https://book.cakephp.org/4/ja/appendices/4-0-upgrade-guide.html#rector
    - CakePHP3→CakePHP4ʹmigrateͯ͠Έͨ - ϥϯαʔζʢLancersʣΤϯδχΞϒϩά https://engineer.blog.lancers.jp/2019/12/
    cakephp4_admin/

    View Slide

  93. PHPエコシステムとの距離
    © - BASE, Inc.
    • PSRͷੵۃతͳద༻
    –CakePHP͸FIGϝϯόʔ
    –ଟ͘ͷPSRʹରԠ
    • Φʔτϩʔυ(1+4)ɺίʔσΟϯάن໿(12)ɺHTTP
    ϝοηʔδ(5)/ϛυϧ΢ΣΞ(15)ɺϩΪϯά(3)ɺ
    Ωϟογϡ(16)
    • 4.1ͰίϯςφΠϯλʔϑΣΠε(11)ରԠ༧ఆ
    –͜ΕʹΑΓPHPίϛϡχςΟͷࢿ࢈ΛऔΓࠐΈ΍͘͢

    View Slide

  94. コード品質を保ちやすく
    © - BASE, Inc.
    • strict_typeͷ༗ޮԽ
    • Ҿ਺ɾ໭Γ஋ͷܕએݴ
    • PHPStanͷϨϕϧҾ্͖͛&Psalmͷซ༻
    • PSR-12: Extended Coding Style
    APPENDIX
    - Update phpstan's config by ADmad · Pull Request #14194 · cakephp/cakephp https://github.com/cakephp/cakephp/pull/14194

    View Slide

  95. コード品質
    © - BASE, Inc.
    ։ൃऀʹͱͬͯ͸ɾɾ
    • ʮͪΌΜͱॻ͔Εͨʯίʔυ͸όάΓʹ
    ͘͘ɺ৘ใີ౓͕ߴ͍
    • ͜ΕʹΑͬͯʮ෗Γʹ͘͞ʯΛखʹೖΕ
    ͍ͯΔ

    View Slide

  96. コード品質
    © - BASE, Inc.
    ར༻ऀʹͱͬͯ͸ɾɾ
    • ʮ੩తղੳ͕࢖ΘΕ͍ͯΕ͹࢖ΘΕ͍ͯ
    Δ΄ͲʯɺIDEͷϙςϯγϟϧ͕Ҿ͖ग़͞
    ΕΔͷͰɺԸܙ͕͋Δ

    View Slide

  97. © - BASE, Inc.
    Part3·ͱΊ

    View Slide

  98. FWはどのように”今っぽさ”を⼿に⼊れるか
    © - BASE, Inc.
    • CakePHP2͸ଟ͘ͷϢʔβʔΛ֫ಘ͕ͨ͠ɺ

    ࢥ͏Α͏ʹ3.x΁ͷҠߦ͕ਐ·ͳ͔ͬͨ
    • ͦͷ൓ল͔Βɺʮޓ׵ੑʯʮഁյతมߋʯ
    ʹ޲͖߹͏Α͏ʹ͍ͯ͠Δ
    • Ճ͑ͯɺݴޠͷ৽ػೳ΍ίϛϡχςΟͷϓ
    ϥΫςΟεΛੵۃతʹऔΓࠐΜͰ͍Δͷ͕
    ݱঢ়

    View Slide

  99. © - BASE, Inc.
    おしながき
    PHPと”今っぽさ”のアップデート
    “今っぽさ”とは何か?

    && なぜ変化するのか
    FWはどのように”今っぽさ”を⼿に⼊れるか

    〜CakePHPの「今」と「未来」を例に〜

    View Slide

  100. © - BASE, Inc.
    まとめ

    View Slide

  101. まとめ
    © - BASE, Inc.
    • ʮԿͷͨΊʹϞμϯ͕ྑ͍ͷʯʁ
    –ະདྷʹ͍ۙ৔ॴʹ͍ΔͨΊʂ
    –࣌୅ʹऔΓ࢒͞ΕΔͷ͕ʮϨΨγʔʯ
    • PHP΍ίϛϡχςΟͷେ͖ͳτϨϯυʹ
    ଇͬͨʮϞμϯ͞ʯͷ֫ಘ

    View Slide

  102. まとめ
    © - BASE, Inc.
    • CakePHP4͸ͨΜ·Γ”ࠓͬΆ͞”Λ࣮ફ
    ͍ͯ͠ΔΑʂ
    • ʮਐԽΛࢭΊͳ͍ʯͨΊͷ࢓ֻ͚ํɺ

    ࣾ಺ϓϩμΫτͳͲʹ΋ࢀߟʹͳΔϙΠ
    ϯτ͕͋Δ͸ͣ

    View Slide

  103. © - BASE, Inc.
    ࣭͝໰ͳͲʂ

    ※งғؾճ౴ʹͳͬͨΒ͢Έ·ͤΜʂ

    View Slide

  104. © - BASE, Inc.
    お付き合いいただき

    ありがとうございました!

    View Slide

  105. © - BASE, Inc.
    (PHPerKaigiޙͷ௥ه)

    View Slide

  106. 追記
    © - BASE, Inc.
    • ౰೔ͷ࣭ٙԠ౴ͷதͰʮPHP8ʹͳͬͨΒpreload͕ೖ
    ΔͷͰʯͱ͍͏ൃݴΛ͠·͕ͨ͠ɺਖ਼͘͠͸ʮJIT͕ೖ
    ΔͷͰʯͷؒҧ͍Ͱ͢ʂగਖ਼͍ͨ͠·͢ɻ
    • τʔΫޙɺ൓ԠΛ΋Βͬͨtweetͷز͔ͭʹରͯ͠ϒ
    ϩάʹͯϦΞΫγϣϯΛฦ͍ͯ͠·͢ɻซͤͯޚཡ͘
    ͍ͩ͞ɻ
    –#phperkaigi ʹࢀՃ͖ͯ͠·ͨ͠ (day1) - େ޷͖ʂʹͪΑ͏ͼ
    https://daisuki.nichiyoubi.land/entry/2020/02/11/144838#π
    Πʔτ΁ͷϦΞΫγϣϯ

    View Slide