Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

「配布版」です © - BASE, Inc. • PHPerKaigi2020Ͱར༻ͨ͠εϥΠυΛ
 վగͨ͠΋ͷͰ͢ • ҎԼͷมߋ͕ߦΘΕ͍ͯ·͢ • Ұ෦ͷදه౳ͷमਖ਼ • τʔΫ࣌ʹεΩοϓͨ͠಺༰ͷࠩ͠ࠐΈ • appendixͷ௥Ճ ➡PDFΛDLͨ͠ΒϦϯΫΛ։͚·͢ʂ

Slide 3

Slide 3 text

© - BASE, Inc. ⾃⼰紹介 • ۚ৓लथ / ͖Μ͡ΐ͏ͻͰ͖ • GitHub: @o0h / Twitter: @o0h_ • BASE, Inc. (2019.10) / ج൫νʔϜ • ex Connehito Inc.(2015.04-) • ޷͖ͳFW͸CakePHP • ΞΠίϯ͸
 ඒຯ͍͠ࡪ਌ࢠကͷࣸਅͰ͢

Slide 4

Slide 4 text

本⽇のお話 © - BASE, Inc.

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

© - BASE, Inc. ຊτʔΫ͸ɺൃදऀࣗ਎ͷݸਓతͳܦݧɾओ؍Λجʹͨ͠ߟ࡯͔Β੒Γཱ͍ͬͯ·͢ɻ
 ͥͻօ༷ͷߟ͑΍ඒֶΛڭ͑ͯԼ͍͞ɻ
 ͋Δ͍͸ɺ͜͜ʹډΔօ༷͕Կ͔Λߟ͑ͯΈΔΩοΧέʹͳͬͨΒ޾͍Ͱ͢ɻ Attention! PHPerKaigiを「偉いひとが⼀⽅的に何 かを教えてあげる場」ではなく、「エ ンジニア同⼠で知⾒を共有しあうコ ミュニケーションの場」として設計し たい、という想い (ʮPHPerKaigi 2020 εϐʔΧʔͷΈͳ͞·΁ͷ͝Ҋ಺ʯΑΓ)

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

“時代遅れ”、“現在”、 “未来” © - BASE, Inc. • ϨΨγʔίʔυͱ”ࠓͬΆ͍”ίʔυ͸
 (গͳ͔Βͣ)ٯͷํ޲ੑʹ͋Δ͸ͣ • ϨΨγʔ͕ʮ෗Δʯํ޲΁ͷ࡞༻ͳΒ
 ͦͷٯͷ“ࠓͬΆ͞”ͱ͸ɺଈͪ๷෗ࡎ • “ࠓͬΆ͞” = “ະདྷࢤ޲ͷ”ίʔυ

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

© - BASE, Inc. ʮϞμϯʯΛ΍͍ͬͯ͘ͷʹɺ
 (৽ػೳ|τϨϯυ)͸ؔ܎ͳ͍ͬͯ͜ͱʁ ͱ͍͏͜ͱ͸ʂ

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

進化: ⽅向づけと推進⼒ © - 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

Slide 28

Slide 28 text

PHP as software © - BASE, Inc. • ͦ΋ͦ΋ʮPHPʯ΋1ͭͷιϑτ΢ΣΞ –ͭ·ΓFW΍ΞϓϦέʔγϣϯͱ
 ಉ͡ཧ۶͕എܠʹ͋ΓɺਐԽ͠ଓ͚͍ͯΔ • Ϣʔβʔ(=PHPίϛϡχςΟ)ͷ
 ϑΟʔυόοΫΛ࣮ݱ͢Δ͜ͱͰਐԽ

Slide 29

Slide 29 text

武器としての先進性 © - BASE, Inc. • ʮࠓͷ࣌୅ʹଈͯ͠ʯʮྑ͍ํ޲΁ʯͱ
 มԽΛ͠ଓ͚͍ͯΔ • ͦΕΒʹ৐͔ͬΔ͜ͱͰɺ
 ʮϞμϯ͞ʯΛٵऩ͍ͯ͘͠ҙࣝ

Slide 30

Slide 30 text

© - BASE, Inc. Part1·ͱΊ

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

“今っぽさ”を作るもの © - BASE, Inc. • ؀ڥ ⁵ ݴޠ ⁵ ίϛϡχςΟ • ͜ΕΒ͸૬ޓతͳӨڹΛٴ΅͠ͳ͕Βɺ
 ʮԿΛ͢΂͖͔ʯͱ͍͏ྗ͕ಇ͘ ➡ ਐԽΛଅਐ͢Δʮཁٻʯ

Slide 36

Slide 36 text

© - BASE, Inc. Ϣʔβʔʹͱͬͯ
 PHP͕ͲͷΑ͏ʹมԽ͖͔ͯͨ͠
 ؆୯ʹৼΓฦͬͯΈΔ ͱ͍͏͜ͱͰ

Slide 37

Slide 37 text

© - 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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

PHPの歴史のおさらい © - BASE, Inc. • PHP5.3 • PHP Standards Group ೥ ೥ • GitHub ໊લۭؒͷαϙʔτ

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

PHPの歴史のおさらい © - BASE, Inc. • PHP5.3 • PHP Standards Group ೥ ೥ • GitHub ͦͷଞʹ΋ॏཁͳػೳ௥Ճଟ਺ɻ
 ౰ॳͷʮ࠷ޙͷPHP5ʯɻ

Slide 47

Slide 47 text

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://

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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/

Slide 52

Slide 52 text

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/

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

PHPの歴史のおさらい © - BASE, Inc. ೥ • CakePHP3 • PHP7 • Phan 0.1 εΧϥʔܕએݴ ໭Γ஋ͷܕએݴ Expectation / assert APPENDIX - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration70.new-features.php

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

PHPの歴史のおさらい © - BASE, Inc. ೥ • PHP7.1 • PHPStan 0.1 ೥ • PHP7.2 ந৅ϝιουͷΦʔόʔϥΠυ ύϥϝʔλͷܕͷ֦େม׵ objectܕએݴ APPENDIX - PHP: ৽ػೳ - Manual https://www.php.net/manual/ja/migration72.new-features.php

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

© - BASE, Inc. Part2·ͱΊ

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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-)

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

.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

Slide 82

Slide 82 text

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

Slide 83

Slide 83 text

いくつか問題がありそう © - BASE, Inc. • 2.0(2011೥) - 3.0(2015೥)Ͱ͋Ε͹
 ʮͨͬͨ4೥ؒʯʹݟ͑Δ͕ɺ
 ʮ2011೥ͷ࠷৽஍఺ʯ͔ΒͷδϟϯϓͰ͸ ͳ͍ • ͦͷؒʹPHPΛऔΓר͘ঢ়گ͕େ͖͘มԽ –CIͷීٴɺςετͷʮ౰ͨΓલʯԽ –ComposerͷσϑΝΫτελϯμʔυԽ

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

OSSとして進化し続けるための⼒ © - BASE, Inc. • 2.x -> 3.xͰ͸ʮࣦഊʯͨ͠ –େن໛ͳഁյతมߋʹΑΔʮஅઈʯ –(MVCͷத৺తͳଘࡏͰ΋͋Δ)
 ʮϞσϧʯͷ࡞Γ͕ɺύϥμΠϜϨϕϧͰมߋ ΊͬͪΌΩπ͍ APPENDIX - ৽ ORM ΞοϓάϨʔυΨΠυ - 3.8 https://book.cakephp.org/3/ja/appendices/orm-migration.html

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

OSSとして進化し続けるための⼒ © - BASE, Inc. • ݁Ռతʹ4.0͸೉࢈͕ͩͬͨɺ
 ΋ͷ͍͢͝ஸೡʹDEPRECATEΛચ͍ग़͠ ͯ͘Εͨҹ৅ –3.6Ͳ͜Ζ͔ɺ3.7 / 3.8·ͰਐΜͩ –ͦͷʮ໘౗ष͞ʯ͸ɺ
 4.0ͷʮ੔ཧ͞Εͨίʔυʯʹͭͳ͕ͬͯΔ

Slide 92

Slide 92 text

移⾏ツールの提供 © - 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/

Slide 93

Slide 93 text

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

Slide 94

Slide 94 text

コード品質を保ちやすく © - 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

Slide 95

Slide 95 text

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

Slide 96

Slide 96 text

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

Slide 97

Slide 97 text

© - BASE, Inc. Part3·ͱΊ

Slide 98

Slide 98 text

FWはどのように”今っぽさ”を⼿に⼊れるか © - BASE, Inc. • CakePHP2͸ଟ͘ͷϢʔβʔΛ֫ಘ͕ͨ͠ɺ
 ࢥ͏Α͏ʹ3.x΁ͷҠߦ͕ਐ·ͳ͔ͬͨ • ͦͷ൓ল͔Βɺʮޓ׵ੑʯʮഁյతมߋʯ ʹ޲͖߹͏Α͏ʹ͍ͯ͠Δ • Ճ͑ͯɺݴޠͷ৽ػೳ΍ίϛϡχςΟͷϓ ϥΫςΟεΛੵۃతʹऔΓࠐΜͰ͍Δͷ͕ ݱঢ়

Slide 99

Slide 99 text

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

Slide 100

Slide 100 text

© - BASE, Inc. まとめ

Slide 101

Slide 101 text

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

Slide 102

Slide 102 text

まとめ © - BASE, Inc. • CakePHP4͸ͨΜ·Γ”ࠓͬΆ͞”Λ࣮ફ ͍ͯ͠ΔΑʂ • ʮਐԽΛࢭΊͳ͍ʯͨΊͷ࢓ֻ͚ํɺ
 ࣾ಺ϓϩμΫτͳͲʹ΋ࢀߟʹͳΔϙΠ ϯτ͕͋Δ͸ͣ

Slide 103

Slide 103 text

© - BASE, Inc. ࣭͝໰ͳͲʂ
 ※งғؾճ౴ʹͳͬͨΒ͢Έ·ͤΜʂ

Slide 104

Slide 104 text

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

Slide 105

Slide 105 text

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

Slide 106

Slide 106 text

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