レガシーコード改革!UT/CIでWebサービスの技術的負債を解消する取り組み 登壇枠で使用
参考URL https://base.connpass.com/event/94476/
Copyright Re:Build.inc All Rights Reserved.Laravel5.5的ܧଓ的インテグレʔション嘉侑起2018/08/073F#VJME
View Slide
Copyright Re:Build.inc All Rights Reserved."HFOEBձࣾɾࣗݾհ(JU-BC$*Λಋೖ͢ΔϝϦοτ(JU-BC$*ͷಋೖํ๏-BSBWFM1)16OJUͷϝϦοτ
Copyright Re:Build.inc All Rights Reserved.ձࣾɾࣗݾհ
Copyright Re:Build.inc All Rights Reserved.ࣗݾհ◆໊લླ ೭(Suzuki Takayuki)◆ࣗݾհɾ1990ɺਆಸݝੜ·Εɻɾࣾձਓʹͳ͔ͬͯΒɺϓϩάϥϛϯάΛ࢝ΊΔɻɾ2015ʹϑϧεϐʔυʹೖࣾ͠ɺ2017ʹϑϦʔϥϯεΛͬͨޙʹ201711݄ʹԭೄͰىۀɻ◆झຯίεϓϨɺԻָϥΠϒɺϚϥιϯେձʹग़Δɺٿ؍ઓ◆εΩϧɾPHP,Symfony2,CakePHP3,Laravel5,ɾJavaScript,backbone.js,Angular4
Copyright Re:Build.inc All Rights Reserved.ࣗݾհ◆໊લՅ ါى(Kakazu Yuki) @kkznch◆ࣗݾհɾ1990ɺԭೄݝੜ·Εɾ2016ʹԭిάϩʔόϧγεςϜζגࣜձࣾʹೖࣾɺ2018ʹגࣜձࣾRe:Buildస৬ͯ͠ݱࡏʹࢸΔɾࠃॎஅ͍ͨ͠◆झຯόϨʔϘʔϧɺϐΞϊɺήʔϜɺΧϑΣ८Γ◆εΩϧɾPHPɺJavaScriptɺC/C++ɺPythonɺRubyɾΠϯϑϥશൠɺηΩϡϦςΟগʑ
Copyright Re:Build.inc All Rights Reserved.ձࣾհ◆ձ໊ࣾגࣜձࣾRe:Build◆ॅॴԭೄݝԭೄࢢதԝ̍ஸ̍̒−̕◆ࣄۀ༰ɾۀʹ͓͍ͯͷϑʔυϩεΛແࣗࣾ͘͢WEBαʔϏεͷاըɾ։ൃɻɾडୗ։ൃ◆ࣾһ4໊◆ΤϯδχΞͷಇ͖ํϦϞʔτϫʔΫՄೳͳࣗ༝ͳಇ͖ํΛਪͯ͠·͢ʂ
ɾαʔϏε໊temiteɾγεςϜ֓ཁECϓϥοτϑΥʔϜΫϨδοτܾࡁΞϑΟϦΤΠτͳͲɾ͍ͬͯΔٕज़ݴޠ : PHP,JavaScriptϑϨʔϜϫʔΫ: laravel5,Vue.js,JQueryͳͲ։ൃதͷαʔϏε
ϑϩϯταΠυαʔόαΠυϏϧυπʔϧDB
৫ମ੍ϓϩμΫτΦʔφʔ։ൃϦʔμʔνʔϜϝϯόʔ■ϓϩδΣΫτߏɾϓϩμΫτΦʔφʔɿ1໊ɾ։ൃϦʔμʔɿ1໊ɾνʔϜϝϯόʔɿ3໊※σβΠφʔ΄΅ແ͠
Copyright Re:Build.inc All Rights Reserved.(JU-BC$*Λಋೖ͢ΔϝϦοτ
GitLabͱʁ
GitLabͱʁGitHubͬΆౕ͍
GitLabͷΞΠίϯ
GitLabͷΞΠίϯʢچʣͳΜ͔ා͍
GitLabͷΞΠίϯॏͶͯΈͨ
GitLabͷػೳ
GitLabͷػೳ ͜͜ΒΜΑ͘͏
‣ GitLabఏڙͷܧଓతΠϯςάϨʔγϣϯπʔϧ‣ ϦϙδτϦ͕Push͞ΕͨλΠϛϯάͰಈ࡞͢Δ‣ ಈ͔ͨ͢Ίʹ৭ʑͱ͝ʹΐ͝ʹΐ͢Δඞཁ͋ΓGitLab CIͱʁ
‣ PHPStan(PHP Static Analysis Tool)Ͱ੩తղੳ‣ PHPUnitͰ୯ମςετɾ݁߹ςετ‣ εςʔδϯάڥͷσϓϩΠGitLab CIͰฐ͕ࣾͬͯΔ͜ͱ
PHPStanͰ੩తղੳ
PHPUnitͰ୯ମςετɾ݁߹ςετ
εςʔδϯάڥͷσϓϩΠ※اۀൿີͷͨΊ͓ݟͤͰ͖·ͤΜ
2 3GitLab CIΛಋೖ͢ΔϝϦοτѹత҆৺ײͷ֫ಘॲཧͷࣗಈԽʹΑΓޮΞοϓ࣭Λ୲อ1 2 3
Copyright Re:Build.inc All Rights Reserved.(JU-BC$*ͷಋೖํ๏
(1)PUSH(2)GitLab CI࣮ߦ (3)ίϯςφىಈGitlab(6)Envoy࣮ߦςετ࣮ߦίϯςφσϓϩΠ࣮ߦίϯςφ(5)ίϯςφىಈ(4)UnitTest࣮ߦ(7)Pullຊ൪ڥorεςʔδϯάڥϦϙδτϦGiaLab CI࣮ߦϑϩʔ
‣ SSHଓ༻ͷ伴Λ࡞ɾొ͢Δ‣ DockerΠϝʔδΛ࡞ɾొ͢Δ‣ GitLabϥϯφʔཧ༻ϑΝΠϧΛ࡞͢Δ‣ σϓϩΠλεΫϥϯφʔཧ༻ϑΝΠϧΛ࡞͢ΔGitLab CIಋೖखॱ
‣SSHଓ༻ͷ伴Λ࡞ɾొ͢Δ‣ DockerΠϝʔδΛ࡞ɾొ͢Δ‣ GitLabϥϯφʔཧ༻ϑΝΠϧΛ࡞͢Δ‣ σϓϩΠλεΫϥϯφʔཧ༻ϑΝΠϧΛ࡞͢ΔGitLab CIಋೖखॱ
(1)PUSH(2)GitLab CI࣮ߦ (3)ίϯςφىಈGitlab(6)Envoy࣮ߦςετ࣮ߦίϯςφσϓϩΠ࣮ߦίϯςφ(5)ίϯςφىಈ(4)UnitTest࣮ߦ(7)Pullຊ൪ڥorεςʔδϯάڥϦϙδτϦGitLab CI͔ΒσϓϩΠઌσϓϩΠΛ࣮ߦ͢ΔͨΊʹSSHଓ༻ͷ伴͕ඞཁެ։伴Λઃஔൿີ伴Λઃஔ
(1)PUSH(2)GitLab CI࣮ߦ (3)ίϯςφىಈGitlab(6)Envoy࣮ߦςετ࣮ߦίϯςφσϓϩΠ࣮ߦίϯςφ(5)ίϯςφىಈ(4)UnitTest࣮ߦ(7)Pullຊ൪ڥorεςʔδϯάڥϦϙδτϦσϓϩΠઌͷαʔό͔ΒGitLabͷϦϙδτϦΛPull͢ΔͨΊʹSSHଓ༻ͷ伴͕ඞཁൿີ伴Λઃஔެ։伴Λઃஔ
‣ SSHଓ༻ͷ伴Λ࡞ɾొ͢Δ‣DockerΠϝʔδΛ࡞ɾొ͢Δ‣ GitLabϥϯφʔཧ༻ϑΝΠϧΛ࡞͢Δ‣ σϓϩΠλεΫϥϯφʔཧ༻ϑΝΠϧΛ࡞͢ΔGitLab CIಋೖखॱ
(1)PUSH(2)GitLab CI࣮ߦ (3)ίϯςφىಈGitlab(6)Envoy࣮ߦςετ࣮ߦίϯςφσϓϩΠ࣮ߦίϯςφ(5)ίϯςφىಈ(4)UnitTest࣮ߦ(7)Pullຊ൪ڥorεςʔδϯάڥϦϙδτϦςετɾσϓϩΠͷ࣮ߦΛߦ͏ίϯςφͷݩͱͳΔDockerΠϝʔδ͕ඞཁϩʔΧϧͰ࡞ͨ͠DockerΠϝʔδΛGitLab Container Registryʹొ
‣ SSHଓ༻ͷ伴Λ࡞ɾొ͢Δ‣ DockerΠϝʔδΛ࡞ɾొ͢Δ‣GitLabϥϯφʔཧ༻ϑΝΠϧΛ࡞͢Δ‣ σϓϩΠλεΫϥϯφʔཧ༻ϑΝΠϧΛ࡞͢ΔGitLab CIಋೖखॱ
(1)PUSH(2)GitLab CI࣮ߦ (3)ίϯςφىಈGitlab(6)Envoy࣮ߦςετ࣮ߦίϯςφσϓϩΠ࣮ߦίϯςφ(5)ίϯςφىಈ(4)UnitTest࣮ߦ(7)Pullຊ൪ڥorεςʔδϯάڥϦϙδτϦPush͞ΕͨλΠϛϯάͰϦϙδτϦʹ.gitlab-ci.ymlͱ͍͏ϑΝΠϧ͕͋Εͦͷதʹهࡌ͞Εͨδϣϒ͕࣮ߦ͞ΕΔ.gitlab-ci.ymlΛ࡞
.gitlab-ci.ymlσϓϩΠ࣮ߦίϯςφͷॲཧ༰Λهड़ςετ࣮ߦίϯςφͰ༻͢ΔαʔϏεॲཧ༰Λهड़༻͢ΔDockerΠϝʔδenvoyίϚϯυʂ
‣ SSHଓ༻ͷ伴Λ࡞ɾొ͢Δ‣ DockerΠϝʔδΛ࡞ɾొ͢Δ‣ GitLabϥϯφʔཧ༻ϑΝΠϧΛ࡞͢Δ‣σϓϩΠλεΫϥϯφʔཧ༻ϑΝΠϧΛ࡞͢ΔGiLlab CIಋೖखॱ
(1)PUSH(2)GitlabCI࣮ߦ (3)ίϯςφىಈGitlab(6)Envoy࣮ߦςετ࣮ߦίϯςφσϓϩΠ࣮ߦίϯςφ(5)ίϯςφىಈ(4)UnitTest࣮ߦ(7)Pullຊ൪ڥorεςʔδϯάڥϦϙδτϦσϓϩΠ࣮ߦίϯςφͰenvoyίϚϯυ͕࣮ߦ͞ΕɺEnvoy.blade.phpʹهड़ͨ͠ॲཧ͕࣮ߦ͞ΕΔEnvoy.blade.phpΛ࡞
Envoy.blade.php ෳͷσϓϩΠઌΛهड़ՄೳEnvoyͷதͰ༻͢ΔάϩʔόϧมతͳͷΛఆٛ۩ମతͳॲཧΛ৭ʑͱهड़@serversσΟϨΫςΟϒͰࢦఆͨ͠ϗετʹSSHଓ͠ɺͦͷ෦Ͱ@storyσΟϨΫςΟϒͷॲཧ͕࣮ߦ͞ΕΔ
͜͜·ͰͬͯGitLab CI͕ಈ͖·͢ʢଟʣ
ৄࡉʹ͍ͭͯฐࣾͷϒϩά͔ՅݸਓͷϒϩάΛࢀর͍ͩ͘͞※ࢀߟʮגࣜձࣾRe:Buildͷϒϩάʯʮ͚͚ͣΜηϧϑϋοΩϯάʯ
Copyright Re:Build.inc All Rights Reserved.-BSBWFM1)16OJUͷϝϦοτ
4 1LaravelͰςετ͢ΔϝϦοτMeritᶃςετ༻ͷget,postϝιου͕͋ΔᶄϨεϙϯεͷΞαʔτ͕๛ᶅςετ༻ͷτϨΠτ͕ศརᶆϞοΫԽͷΈ͕ศར
getϝιουͷྫ
postϝιουͷྫ
ϨεϙϯεͷΞαʔτ͕๛
ςετ༻τϨΠτ͕ศར‣ RefreshDatabaseɿ- ̍ͭͷςετ͕ऴΘΔͨͼʹDBΛϦϑϨογϡ͢Δ‣ DatabaseTransactionsɿ- ̍ͭͷςετ͕ऴΘΔͨͼʹDBΛςετ։࢝લͷঢ়ଶ·ͰϩʔϧόοΫ͢Δ‣ WithoutMiddlewareɿ- ֻ͚ΒΕ͍ͯΔMiddlewareΛແࢹ
ɾۄͶ͗ͷΑ͏ͳߏͰϦΫΤετͱϨεϙϯεͷؒʹ༷ʑͳॲཧΛڬΈࠐΈ͍͢ɾόϦσʔγϣϯͳͲ୯ҰͷΤϯςΟςΟʹґଘ͢ΔͷͰͳ͘ɺForm୯ҐͰ࣮Ͱ͖ΔMiddleWareͷྫೝ ূ ν Σ ο Ϋɺ ό Ϧ σ ʔ γ ϣ ϯɺCSRFτʔΫϯͷνΣοΫ[ิ] Middlewareͱʁ
ϞοΫԽͷΈ͕ศར
ϞοΫԽ͢ΔલMailClassRouter ControllerSMTPαʔόʔ
ϞοΫԽͨ͋͠ͱRouter ControllerSMTPαʔόʔMailClassSMTPαʔόʔʹϝʔϧΛૹ৴ͨ͜͠ͱʹͯ͘͠ΕΔʢ࣮ࡍʹૹ৴͠ͳ͍ʣ
Copyright Re:Build.inc All Rights Reserved.·ͱΊ
5 1·ͱΊᶃ GitLab CIͰςετٴͼσϓϩΠॲཧΛࣗಈԽ͢Δ͜ͱʹΑΓɺ࡞ۀΛޮԽ࣭ͭͭ͠ͷ୲อ͕Ͱ͖Δᶄ LaravelͷPHPUnitʹศརͳΞαʔττϨΠτ͕༻ҙ͞Ε͍ͯΔͨΊɺՄಡੑɾอकੑͷߴ͍ςετ͕ॻ͚Δ