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

C90bac78c0fb61105cfd8239767f903d?s=47 hideki kinjyo
February 10, 2020

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

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

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

C90bac78c0fb61105cfd8239767f903d?s=128

hideki kinjyo

February 10, 2020
Tweet

Transcript

  1. © - BASE, Inc. CakePHPの進化から読み解く、 PHPフレームワークの
 "今"っぽさ -഑෍൛- . .

    - PHPerKaigi
  2. 「配布版」です © - BASE, Inc. • PHPerKaigi2020Ͱར༻ͨ͠εϥΠυΛ
 վగͨ͠΋ͷͰ͢ • ҎԼͷมߋ͕ߦΘΕ͍ͯ·͢

    • Ұ෦ͷදه౳ͷमਖ਼ • τʔΫ࣌ʹεΩοϓͨ͠಺༰ͷࠩ͠ࠐΈ • appendixͷ௥Ճ ➡PDFΛDLͨ͠ΒϦϯΫΛ։͚·͢ʂ
  3. © - BASE, Inc. ⾃⼰紹介 • ۚ৓लथ / ͖Μ͡ΐ͏ͻͰ͖ •

    GitHub: @o0h / Twitter: @o0h_ • BASE, Inc. (2019.10) / ج൫νʔϜ • ex Connehito Inc.(2015.04-) • ޷͖ͳFW͸CakePHP • ΞΠίϯ͸
 ඒຯ͍͠ࡪ਌ࢠကͷࣸਅͰ͢
  4. 本⽇のお話 © - BASE, Inc.

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

  6. © - BASE, Inc. ຊτʔΫ͸ɺൃදऀࣗ਎ͷݸਓతͳܦݧɾओ؍Λجʹͨ͠ߟ࡯͔Β੒Γཱ͍ͬͯ·͢ɻ
 ͥͻօ༷ͷߟ͑΍ඒֶΛڭ͑ͯԼ͍͞ɻ
 ͋Δ͍͸ɺ͜͜ʹډΔօ༷͕Կ͔Λߟ͑ͯΈΔΩοΧέʹͳͬͨΒ޾͍Ͱ͢ɻ Attention! PHPerKaigiを「偉いひとが⼀⽅的に何 かを教えてあげる場」ではなく、「エ

    ンジニア同⼠で知⾒を共有しあうコ ミュニケーションの場」として設計し たい、という想い (ʮPHPerKaigi 2020 εϐʔΧʔͷΈͳ͞·΁ͷ͝Ҋ಺ʯΑΓ)
  7. このトークで話したいこと © - BASE, Inc. • PHPͱͦΕΛऔΓר͘؀ڥ͸ɺͲ͏มΘͬ ͖͔ͯͨ • ͦΕʹ͋ΘͤͯɺCakePHP͸Ͳ͏มΘͬͯ

    ͖͔ͨ –CakePHP: ஌໊౓ͷߴ͍&ྺ࢙ͷ௕͍PHP੡FWͷ1 ͭͱͯ͠ • ʮ͜Ε͔Βʯʹ޲͖߹͏FWͷࡏΓํͱ͸
  8. このトークの対象者 © - BASE, Inc. • ʮϞμϯͬͯ͞ԿͩʁʯΛߟ͑ͯΈͨ͜ ͱͷ͋Δਓ • (ग़དྷΕ͹CakePHP2

    or 3Λར༻ͨ͜͠ͱ ͕͋ΔਓͩͱɺΑΓຯΘ͍ਂ͍͔΋) –৮ͬͨ͜ͱແ͍ਓͰ΋ຊےͷཧղʹ͸໰୊ͳ͍ Ͱ͢ʂ
  9. © - BASE, Inc. おしながき PHPと”今っぽさ”のアップデート “今っぽさ”とは何か?
 && なぜ変化するのか FWはどのように”今っぽさ”を⼿に⼊れるか


    〜CakePHPの「今」と「未来」を例に〜
  10. © - BASE, Inc. おしながき PHPと”今っぽさ”のアップデート “今っぽさ”とは何か?
 && なぜ変化するのか FWはどのように”今っぽさ”を⼿に⼊れるか


    〜CakePHPの「今」と「未来」を例に〜
  11. © - BASE, Inc. 1࣭ͭ໰Λͯ͠Έ·͢ ಥવͰ͕͢ʂ

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

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

    ɾɾɾͦΕ͸ͳͥʁ
  14. どっちが好きですか? © - BASE, Inc. • ͳͥʮϨΨγʔʯ͕ѱͯ͘ʮϞμϯʯ͕
 ྑ͍ͷ͔ʁ • ྆ऀΛ෼͚ΔϞϊ(ఆٛ)͸Կʁ

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

    –etc..
  16. レガシーコード? © - BASE, Inc. ͜ΕΒͷߟ͑ํͷࠜఈʹ͸ ίʔυͷण໋ͷ؍఺͕ڞ௨͍ͯͦ͠͏ • ෗Γ΍͍͢(෗ͬͨ) VS

    ଱ٱ೥਺͕௕͍ • ϦʔμϏϦςΟɺςελϏϦςΟɺ
 ϦϑΝΫλϏϦςΟɺϙʔλϏϦςΟ
  17. コードの寿命? © - BASE, Inc. • զʑ͸ʮ௕͘ੜ͖ΒΕΔίʔυʯ͕ཉ͍͠ • ʮੜ͖Δʯͱ͸ʮͪΌΜͱಈ͘ʯ –ಈ࡞͢Δ(ϓϩάϥϜͱͯ͠ಈ͔ͤΔ)

    –อकվम͕Մೳ(ϓϩδΣΫτͱͯ͠ಈ͔ ͤΔ)
  18. “時代遅れ”、“現在”、 “未来” © - BASE, Inc. • ϨΨγʔίʔυͱ”ࠓͬΆ͍”ίʔυ͸
 (গͳ͔Βͣ)ٯͷํ޲ੑʹ͋Δ͸ͣ •

    ϨΨγʔ͕ʮ෗Δʯํ޲΁ͷ࡞༻ͳΒ
 ͦͷٯͷ“ࠓͬΆ͞”ͱ͸ɺଈͪ๷෗ࡎ • “ࠓͬΆ͞” = “ະདྷࢤ޲ͷ”ίʔυ
  19. モダンでやっていくとは © - BASE, Inc. “ࠓͬΆ͍”(=Ϟμϯͳ)ίʔυͱ͸ • NOT: ৽ػೳΛ੝ΓࠐΜͩ •

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

    IS: ະདྷ΁͍ͭͯߦ͚Δɾ४උ͕Ͱ͖͍ͯΔ ͷ͜ͱΛࢦ͢ͷͰ͸ʁ ຊτʔΫͷ
 ओுͷࠎࢠʹͯ͠࠷େͷओ؍
  21. © - BASE, Inc. ʮϞμϯʯΛ΍͍ͬͯ͘ͷʹɺ
 (৽ػೳ|τϨϯυ)͸ؔ܎ͳ͍ͬͯ͜ͱʁ ͱ͍͏͜ͱ͸ʂ

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

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


    Ұఆͷ߹ཧੑɺʮ΍ͬͯݟΔՁ஋ʯ͕͋Γͦ͏
  24. © - BASE, Inc. テキストテキスト これで良いのか?

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

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

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


    ಉ͡ཧ۶͕എܠʹ͋ΓɺਐԽ͠ଓ͚͍ͯΔ • Ϣʔβʔ(=PHPίϛϡχςΟ)ͷ
 ϑΟʔυόοΫΛ࣮ݱ͢Δ͜ͱͰਐԽ
  29. 武器としての先進性 © - BASE, Inc. • ʮࠓͷ࣌୅ʹଈͯ͠ʯʮྑ͍ํ޲΁ʯͱ
 มԽΛ͠ଓ͚͍ͯΔ • ͦΕΒʹ৐͔ͬΔ͜ͱͰɺ


    ʮϞμϯ͞ʯΛٵऩ͍ͯ͘͠ҙࣝ
  30. © - BASE, Inc. Part1·ͱΊ

  31. “今っぽさ”とは何か? && なぜ変化するのか © - BASE, Inc. • ϨΨγʔ –อकɾมߋ͕೉͍͠ͷ͕ʮϨΨγʔʯ

    –݁Ռͱͯ͠ʮ෗ഊʯ͕ੜ͡ɺण໋͕ॖ·Δ • Ϟμϯ͞ –ϨΨγʔԽʹର͢Δ๷෗ࡎతͳཁૉͷ1ͭ • ৽ػೳ –ʮมߋʹڧ͍ίʔυʯΛॻͨ͘Ί
 ʮ৽͍͠ػೳ΍ॻ͖ํʯΛऔΓೖΕΔ
  32. © - BASE, Inc. おしながき PHPと”今っぽさ”のアップデート “今っぽさ”とは何か?
 && なぜ変化するのか FWはどのように”今っぽさ”を⼿に⼊れるか


    〜CakePHPの「今」と「未来」を例に〜
  33. © - BASE, Inc. おしながき PHPと”今っぽさ”のアップデート “今っぽさ”とは何か?
 && なぜ変化するのか FWはどのように”今っぽさ”を⼿に⼊れるか


    〜CakePHPの「今」と「未来」を例に〜
  34. “今っぽさ”を作るもの © - BASE, Inc. • ιϑτ΢ΣΞΛࢧ͑Δ΋ͷ͸ʁ –؀ڥ • ex:

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

    ίϛϡχςΟ • ͜ΕΒ͸૬ޓతͳӨڹΛٴ΅͠ͳ͕Βɺ
 ʮԿΛ͢΂͖͔ʯͱ͍͏ྗ͕ಇ͘ ➡ ਐԽΛଅਐ͢Δʮཁٻʯ
  36. © - BASE, Inc. Ϣʔβʔʹͱͬͯ
 PHP͕ͲͷΑ͏ʹมԽ͖͔ͯͨ͠
 ؆୯ʹৼΓฦͬͯΈΔ ͱ͍͏͜ͱͰ

  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
  38. PHPの歴史のおさらい © - BASE, Inc. • CakePHP1 • PHP 4.4

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

    / 5.0 / 5.1 • Ruby On Rails 1.0 ೥ PHP4ϕʔε
  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
  41. PHPの歴史のおさらい © - BASE, Inc. • CakePHP1 • PHP 4.4

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

    / 5.0 / 5.1 • Ruby On Rails 1.0 ೥ spl_autoload_register()ͷ௥Ճ
  43. PHPの歴史のおさらい © - BASE, Inc. • PHP5.3 • PHP Standards

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

    Group ೥ ೥ • GitHub ໊લۭؒͷαϙʔτ
  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
  46. PHPの歴史のおさらい © - BASE, Inc. • PHP5.3 • PHP Standards

    Group ೥ ೥ • GitHub ͦͷଞʹ΋ॏཁͳػೳ௥Ճଟ਺ɻ
 ౰ॳͷʮ࠷ޙͷPHP5ʯɻ
  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://
  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
  49. PHPの歴史のおさらい © - BASE, Inc. ೥ • CakePHP2 • Laravel1

    • PHP-FIG • Composer + Packagist(։ൃ։࢝)
  50. PHPの歴史のおさらい © - BASE, Inc. ೥ • CakePHP2 • Laravel1

    • PHP-FIG • Composer + Packagist(։ൃ։࢝) PHP5.2.6+Λαϙʔτ
 (4.xΛ੾Γࣺͯ)
  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/
  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/
  53. PHPの歴史のおさらい © - BASE, Inc. ೥ • CakePHP2 • Laravel1

    • PHP-FIG • Composer + Packagist(։ൃ։࢝) ΤίγεςϜͱͯ͠͸ɺ
 (PEARͷ)தԝूݖతͳ؅ཧ͔Β ͷ୤٫
  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
  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
  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
  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
  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
  59. PHPの歴史のおさらい © - BASE, Inc. ೥ • CakePHP3 • PHP7

    • Phan 0.1 PHP5.4.16+Λαϙʔτ
  60. PHPの歴史のおさらい © - BASE, Inc. ೥ • CakePHP3 • PHP7

    • Phan 0.1 εΧϥʔܕએݴ ໭Γ஋ͷܕએݴ Expectation / assert APPENDIX - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration70.new-features.php
  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
  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
  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
  64. パラメータの型の拡⼤変換 © - BASE, Inc. ϥΠϒϥϦɾFW͕ܕએݴΛߦ͍΍͘͢ͳͬͨ https://www.php.net/manual/ja/migration72.new-features.php#migration72.new-features.param-type-widening

  65. PHPの歴史のおさらい © - BASE, Inc. ೥ • PHP7.3 ೥ •

    PHP7.4 • CakePHP4
  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
  67. © - BASE, Inc. ͜ͷྲྀΕΛந৅Խͯ͠ଊ͑ͯΈΔ

  68. PHP .x後半〜5.x前半時代の進化 © - BASE, Inc. • ʙ2008೥ / ʙPHP5.2

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

    • ໊લۭؒͷಋೖͱComposerͷొ৔ • PHP-FIG =ʮFWؒͷ૬ޓӡ༻ੑʯ • ʮෳ਺ϞδϡʔϧΛखܰʹѻ͍͍ͨʯง ғؾʁ
  70. PHP . 以降 © - BASE, Inc. • 2016೥ʙ /

    PHP7.0+ • ܕએݴɾExpectationͷಋೖ • ੩తղੳπʔϧͷ੝Γ্͕Γ • ʮPHPͰ΋ݻ͘ॻ͖͍ͨʯงғؾʁ
  71. © - BASE, Inc. Part2·ͱΊ

  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
  73. © - BASE, Inc. おしながき PHPと”今っぽさ”のアップデート “今っぽさ”とは何か?
 && なぜ変化するのか FWはどのように”今っぽさ”を⼿に⼊れるか


    〜CakePHPの「今」と「未来」を例に〜
  74. © - BASE, Inc. おしながき PHPと”今っぽさ”のアップデート “今っぽさ”とは何か?
 && なぜ変化するのか FWはどのように”今っぽさ”を⼿に⼊れるか


    〜CakePHPの「今」と「未来」を例に〜
  75. © - BASE, Inc. CakePHPΛྫʹͯ͠ɺ
 ʮݴޠɾίϛϡχςΟͷਐԽʹରͯ͠ɺ1ͭͷι ϑτ΢ΣΞ͕Ͳ͏൓Ԡ͍͔ͯͬͨ͠ʯ
 ͱ͍͏࿩Λ͠·͢ʂ

  76. © - BASE, Inc. おさらいCakePHPの歴史 Y • 2005೥ϦϦʔε • PHP4Ҏ্

    Y • 2011೥ϦϦʔε • PHP5.2Ҏ্ Y • 2015೥ϦϦʔε • PHP5.4.16Ҏ্ Y • 2019೥ϦϦʔε • PHP7.2Ҏ্
  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-)
  78. .x/ .xのサポート期間 © - BASE, Inc. • ʮ4.0͕ग़ͨΒΞΫςΟϒαϙʔτऴྃʯͱએ ݴ͍ͯͨ͠ •

    2.x: –12ϱ݄ͷؒ͸bug fix΋ରԠ –18ϱ݄ͷؒ͸security fix͸ରԠ • 3.x: –4.0ͱޓ׵ੑͷਪਐ͸ܧଓ͢Δɻ৽ػೳ͸෇͚ͳ͍ –36ϱ݄ͷؒ͸security fix͸ରԠ
  79. © - BASE, Inc. CakePHP3.xͷʮ൓লʯͱʮֶͼʯ

  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
  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
  82. めでたしめでたし? © - BASE, Inc. • FWͱͯ͠͸Ұؾʹચ࿅͞Εͨ –͍ͪϢʔβʔͱͯ͠΋ʮ࢖͍৺஍͕ྑ͍ͳʯͱ ͍͏खԠ͑ •

    ͨͩ͠ɺ༨Γʹ΋มߋ͕ഁյతͰɺҠߦ ͕ࠔ೉ͳ΋ͷʹͳͬͨ APPENDIX - CakePHP - The Road Ahead https://www.slideshare.net/markstory/cakephp-the-road-ahead (Slide no.4-)
  83. いくつか問題がありそう © - BASE, Inc. • 2.0(2011೥) - 3.0(2015೥)Ͱ͋Ε͹
 ʮͨͬͨ4೥ؒʯʹݟ͑Δ͕ɺ


    ʮ2011೥ͷ࠷৽஍఺ʯ͔ΒͷδϟϯϓͰ͸ ͳ͍ • ͦͷؒʹPHPΛऔΓר͘ঢ়گ͕େ͖͘มԽ –CIͷීٴɺςετͷʮ౰ͨΓલʯԽ –ComposerͷσϑΝΫτελϯμʔυԽ
  84. 「移⾏が困難」の問題点 © - BASE, Inc. • ݹ͍όʔδϣϯ΁ͷډ࢒Γ –ίϛϡχςΟͷஅઈ • ʮίϛϡχςΟʯͷ೤ͷ௿Լ

    –ιϑτ΢ΣΞͷਐԽ͸ϑΟʔυόοΫʹґଘ͢ Δ
  85. © - BASE, Inc. ʮҠߦΛ͠Α͏ͱࢥͬͨΒେมͩͬͨʯ =>ɾɾɾϨΨγʔʁ

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

  87. Cake .x -> .xで⾝につけた「モダンさ」 © - BASE, Inc. CakePHP4લޙͰݟ͑ͯ͘Δ࢟੎ 1.

    Ϣʔβʔ΁ͷμϝʔδΛ཈੍͢Δ 2. ʮඪ४ʯʹد͓ͤͯ͘ 3. ίʔυ඼࣭Λ։ൃऀ/ར༻ऀʹͱͬͯอ ͪ΍͘͢
  88. OSSとして進化し続けるための⼒ © - BASE, Inc. • ιϑτ΢ΣΞ͸ϑΟʔυόοΫʹΑΓਐ Խ͢Δ –͍͔ʹϢʔβʔίϛϡχςΟͷ೤ΛอͯΔ͔ʁ –ʮΞΫςΟϒϢʔβʔʯ͕େࣄ

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

    –(MVCͷத৺తͳଘࡏͰ΋͋Δ)
 ʮϞσϧʯͷ࡞Γ͕ɺύϥμΠϜϨϕϧͰมߋ ΊͬͪΌΩπ͍ APPENDIX - ৽ ORM ΞοϓάϨʔυΨΠυ - 3.8 https://book.cakephp.org/3/ja/appendices/orm-migration.html
  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
  91. OSSとして進化し続けるための⼒ © - BASE, Inc. • ݁Ռతʹ4.0͸೉࢈͕ͩͬͨɺ
 ΋ͷ͍͢͝ஸೡʹDEPRECATEΛચ͍ग़͠ ͯ͘Εͨҹ৅ –3.6Ͳ͜Ζ͔ɺ3.7

    / 3.8·ͰਐΜͩ –ͦͷʮ໘౗ष͞ʯ͸ɺ
 4.0ͷʮ੔ཧ͞Εͨίʔυʯʹͭͳ͕ͬͯΔ
  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/
  93. PHPエコシステムとの距離 © - BASE, Inc. • PSRͷੵۃతͳద༻ –CakePHP͸FIGϝϯόʔ –ଟ͘ͷPSRʹରԠ •

    Φʔτϩʔυ(1+4)ɺίʔσΟϯάن໿(12)ɺHTTP ϝοηʔδ(5)/ϛυϧ΢ΣΞ(15)ɺϩΪϯά(3)ɺ Ωϟογϡ(16) • 4.1ͰίϯςφΠϯλʔϑΣΠε(11)ରԠ༧ఆ –͜ΕʹΑΓPHPίϛϡχςΟͷࢿ࢈ΛऔΓࠐΈ΍͘͢
  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
  95. コード品質 © - BASE, Inc. ։ൃऀʹͱͬͯ͸ɾɾ • ʮͪΌΜͱॻ͔Εͨʯίʔυ͸όάΓʹ ͘͘ɺ৘ใີ౓͕ߴ͍ •

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

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

  98. FWはどのように”今っぽさ”を⼿に⼊れるか © - BASE, Inc. • CakePHP2͸ଟ͘ͷϢʔβʔΛ֫ಘ͕ͨ͠ɺ
 ࢥ͏Α͏ʹ3.x΁ͷҠߦ͕ਐ·ͳ͔ͬͨ • ͦͷ൓ল͔Βɺʮޓ׵ੑʯʮഁյతมߋʯ

    ʹ޲͖߹͏Α͏ʹ͍ͯ͠Δ • Ճ͑ͯɺݴޠͷ৽ػೳ΍ίϛϡχςΟͷϓ ϥΫςΟεΛੵۃతʹऔΓࠐΜͰ͍Δͷ͕ ݱঢ়
  99. © - BASE, Inc. おしながき PHPと”今っぽさ”のアップデート “今っぽさ”とは何か?
 && なぜ変化するのか FWはどのように”今っぽさ”を⼿に⼊れるか


    〜CakePHPの「今」と「未来」を例に〜
  100. © - BASE, Inc. まとめ

  101. まとめ © - BASE, Inc. • ʮԿͷͨΊʹϞμϯ͕ྑ͍ͷʯʁ –ະདྷʹ͍ۙ৔ॴʹ͍ΔͨΊʂ –࣌୅ʹऔΓ࢒͞ΕΔͷ͕ʮϨΨγʔʯ •

    PHP΍ίϛϡχςΟͷେ͖ͳτϨϯυʹ ଇͬͨʮϞμϯ͞ʯͷ֫ಘ
  102. まとめ © - BASE, Inc. • CakePHP4͸ͨΜ·Γ”ࠓͬΆ͞”Λ࣮ફ ͍ͯ͠ΔΑʂ • ʮਐԽΛࢭΊͳ͍ʯͨΊͷ࢓ֻ͚ํɺ


    ࣾ಺ϓϩμΫτͳͲʹ΋ࢀߟʹͳΔϙΠ ϯτ͕͋Δ͸ͣ
  103. © - BASE, Inc. ࣭͝໰ͳͲʂ
 ※งғؾճ౴ʹͳͬͨΒ͢Έ·ͤΜʂ

  104. © - BASE, Inc. お付き合いいただき
 ありがとうございました!

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

  106. 追記 © - BASE, Inc. • ౰೔ͷ࣭ٙԠ౴ͷதͰʮPHP8ʹͳͬͨΒpreload͕ೖ ΔͷͰʯͱ͍͏ൃݴΛ͠·͕ͨ͠ɺਖ਼͘͠͸ʮJIT͕ೖ ΔͷͰʯͷؒҧ͍Ͱ͢ʂగਖ਼͍ͨ͠·͢ɻ •

    τʔΫޙɺ൓ԠΛ΋Βͬͨtweetͷز͔ͭʹରͯ͠ϒ ϩάʹͯϦΞΫγϣϯΛฦ͍ͯ͠·͢ɻซͤͯޚཡ͘ ͍ͩ͞ɻ –#phperkaigi ʹࢀՃ͖ͯ͠·ͨ͠ (day1) - େ޷͖ʂʹͪΑ͏ͼ https://daisuki.nichiyoubi.land/entry/2020/02/11/144838#π Πʔτ΁ͷϦΞΫγϣϯ