仕様書もないレガシーモジュールに最低限の秩序をもたせる為に何ができるかを考え、対応した話をします。 主にCI環境を構築した話になると思います。
テストコードを書いて、カバレッジ100%とかは非現実的な話はしません。
ϨΨγʔίʔυʹ࠷ݶͷடংΛͨͤΔ2019/03/31 PHPerKaigi2019@juve534
View Slide
ࣗݾհ• Twitter / GitHub• juve534• ࣄ• ࠷ۙ·ͰϨΨγʔγεςϜͷอक։ൃ• ݱࡏPHP7 + Laravelͷ৽ن։ൃ• ͖ͳαοΧʔνʔϜ• Ϣϕϯτε(Juventus)
ϨΨγʔίʔυʹ࠷ݶͷடংΛͨͤΔ
͖͔͚ͬ• ༷ॻͳ͠ͷΦϨΦϨFWͰɺӡ༻͞Ε͍ͯͨγεςϜͷ։ൃ͍ͯͨ͠• ৽͘͠ೖͬͨਓɺӨڹൣғ͕Θ͔Βͳ͍• ςετॴΛؒҧ͑ɺ୯७ͳϛεͰোʹͳͬͯ͠·ͬͨ→͜ΕΛվળ͍ͨ͠…
ର• 10Ҏ্લ͔Β͋ΔαʔϏεͷAPI• ෳϞδϡʔϧͱີ݁߹͍ͯ͠Δ• ฏۉ݄ͯ͠1ͷසͰϦϦʔε͞Ε͍ͯΔ
ڥ• PHP5.xܥ• ༷ॻͳ͠Ͱςετൣғ͕͔ΓͮΒ͍• όʔδϣϯཧCVS→͜ΕΒͷڥΛͰ͖Δ͚ͩվળ͢Δ
վળҊ• PHP5.xܥ• ෳϞδϡʔϧͱີ݁߹Ͱݫ͍͠• ༷ॻͳ͠Ͱςετൣғ͕͔ΓͮΒ͍• CIπʔϧ(CircleCI)Ͱ࠷ݶͷடংΛͨΒ͢• όʔδϣϯཧCVS• GitHubʹҠߦ
࠷ݶͷடংΛߟ͑Δ• ୯ମςετ• ෳϞδϡʔϧͱີ݁߹Ͱςετ͕ॻ͚ΔΑ͏ʹͳ͍ͬͯͳ͍• ܰྔͰ࢝ΊΒΕͳ͍• API༷ॻ• 1͔Βચ͍ग़͢Ϩϕϧͷ࡞ۀ͕ඞཁ• ͜ΕܰྔͰ࢝ΊΒΕͳ͍
php -l
࠷ݶͷடংΛߟ͑Δ• PHPඪ४ίϚϯυ• γϯλοΫεΤϥʔΛݕ͢Δ• ϨΨγʔίʔυͰ͑Δ• ܰྔͰ࢝ΊΒΕΔ→࠷ݶͷடংʹ;͞Θ͍͠ͱߟ͑ͨ
ٕज़ݕূ͍ͯ͘͠
վળҊ
վળҊϓϧϦΫݕͯ͠ɺCircleCI͕ಈ͍ͯ͘ΕΔ
վળҊCircleCIͷΠϝʔδઃఆͰAmazon ECRΛࢦఆhttps://circleci.com/docs/2.0/private-images/
վળҊγϯλοΫενΣοΫγΣϧΛ࣮ߦ͠·͢http://48n.jp/blog/2016/08/08/php-lint-with-ci/
վળҊγϯλοΫεΤϥʔ͕͋ͬͨΒݕ
վળҊͷϙΠϯτ• ΠϝʔδͷཧʹAmazon ECRΛ͏• Docker Hubʹ͕͍͍ࣗͨόʔδϣϯͷΠϝʔδ͕ݟ͔ͭΒͳ͔ͬͨ• ࣗͰ༻ҙ͢Δඞཁ͕͋Δ• CircleCIͷެࣜʹ࿈ܞํ๏͕ॻ͍ͯ͋ͬͨ https://circleci.com/docs/2.0/private-images/
νʔϜʹܭըΛఏҊ
Ͳ͏ͳ͔ͬͨ• ܭըʹࢍಉͯ͠Β͑ͨ• ࠓճͷରҎ֎ʹಋೖ͠Α͏ͱ͍͏ʹͳͬͨ• CIπʔϧΛͬͨ࣍ͷվળҊ͕ग़͖ͯͨ
·ͱΊ• ϨΨγʔίʔυͩͬͯվળͷݟࠐΈ͋ͬͨ• php -l ͳΒܰྔͰ࢝ΊΒΕΔ͜ͱ͕Θ͔ͬͨ• ϨΨγʔίʔυͰͰ͖ΔൣғͰߟ͍͑ͯ͘͜ͱ͕େͩͱࢥͬͨ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠Twitter/GitHubjuve534