オープンセミナー2017@岡山での発表スライドです
ٕज़తෛ࠴ͱ͖߹͏/BPZB*UPגࣜձࣾҰٳ$50
View Slide
Ұٳͷհ ͔ΜͨΜʹ্࣭ͳϗςϧཱྀؗϨετϥϯͷ༧Ϊϑτɻ॓ധ༧Ͱ༗໊Ͱ͕͢ɺ࠷ۙϨετϥϯ༧ओྗࣄۀنʹ
نײͳͲ• ैۀһ໊͘Β͍ɻ͏ͪΤϯδχΞ໊ఔ• ʹϩʔϯνɺ͋Ε͔Β– Ϩετϥϯ• αʔόʔఔ• $ɺ7#ɺ1ZUIPOɺ+BWB4DSJQUɺ(Pɺ4XJGU– 8FCࠓͷͱ͜Ζ.JDSPTPGUςΫϊϩδ /&5$MBTTJD"41– σʔλΤϯδχΞϦϯάपΓΠϯϑϥ1ZUIPOɺ/PEFɺ(P– 'BTUMZɺ"84 ɺ-BNCEBɺ42-4FSWFS#JH2VFSZ3FETIJGU• ͨͩ͠ઈࢍҠߦதͰɺ·ͩΦϯϓϨ͋Δ
ΞδΣϯμ• ؒͷऔΓΈ– ٕज़ސͱͯ͠ܞΘͬͨؒ– $50ணҠߦͷ• ݹ͘ͳͬͨγεςϜͱͲ͏͖߹͖͔ͬͯͨ
ٕज़ސͷࠒͷͳ͠
Δ͜ͱલͷҰٳh"ps://speakerdeck.com/kensuketanaka/modannaxian-chang-nisurutamenishi-jian-sitakoto
ٕज़ސͱͯ͠ܞΘΔ͜ͱʹ• ݄ʙ݄• िʹҰɺ࣌ؒఔͷϛʔςΟϯά
݁Ռ• ΄ͲͰେ͖͘վળͨ͠– (JU)VC'MPX– ίʔυϨϏϡʔ– (JU)VC+FOLJOTʹΑΔσϓϩΠͷࣗಈԽ– 4FMFOJVN8FC%SJWFSʹΑΔ&&ςετ– 4MBDL2JJUB5FBN
ͦͷޙվળΛଓ͚݄ͯࠒ $50ணલ• ϒϥϯνσϓϩΠڥ• 3VOOOJOHCFUBJOQSPEVDUJPO• ϩάͷՄࢹԽ4MBDL௨ʹΑΔΤϥʔݕ
͜Ε͡Ό͋ɺԿΛ࡞ͬͯΔ͔Α͘Θ͔Βͳ͍ͷͰŋŋŋQSPEVDUJPOʹݶΓͳ͍ۙ͘%#ΛϨϓϦΧͯ͠ɺͦΕͰ։ൃɻ %))ݴͬͯͨΑ
ΦϑΟεʹܝࣔ͢Δ͜ͱͰɺো͕͋ͬͨΓ͢Δͱ͙͢Θ͔Δログ環境とDevOps ~一休.comでの事例h"ps://speakerdeck.com/shoichiron/roguhuan-jing-todevops-xiu-dot-comdefalseshi-li
݁Ռ• ϦεΫڐ༰ͷ্ˠՁఏڙεϐʔυͷ্– ϦϦʔεස͕૿͑҆શʹͳͬͨ͜ͱͰɺมߋͷϦεΫ͕ݮͬͨ– ৫จԽʹେ͖͘ӨڹΛ༩͑ͨ• िΠν͔͠ϦϦʔεͰ͖ͳ͍ͷͰෆ۩߹Λग़͞ͳ͍Α͏ϐϦϐϦͯͨ͠Β͍͠• ࠷ۙ࣌Ұ൪ϐϦϐϦ͍ͯͨ͠Ϧʔμʔ͕ʮͬͪΌ͑ΑʂʯΈ͍ͨͳ͍
一休.comのE2Eテスト事情h"ps://speakerdeck.com/shotaakasaka/seleniumjp4-ikyu
ͦΜͳ͜ΜͳͰ͍Ζ͍Ζਐͨ͠Θ͚Ͱ͕͢ŋŋŋ• ࣄ͕͏·͘ਐΉͨΊʹେͩͬͨ͜ͱԿͩͬͨͷ͔ • ࣦഊͳ͔ͬͨͷ͔
ॏཁͩͬͨ͜ͱ• Λཧղ͠ɺཧ͢Δϓϩηεͷܧଓ• ʹ͍ͭͯܧଓతʹߟ͑ଓ͚Δश׳ͦͦिʹ͔͠ߦͬͯͳ͍ͷͰɺ࡞ۀ͠ͳ͍͠ɺ)PX5PΛৄࡉʹڭ͑ΒΕΔΘ͚Ͱͳ͍
ࣄΛΒͳ͍֎ͷਓ͕นଧͪʹͳΔ͜ͱͰΛཧղ• ॳͷձ– Ұٳʮ(JU)VCͱ͔ςετͱ͔ͬͱϞμϯͳ։ൃ͕͍ͨ͠ΜͰ͢ʯ– OBPZBʮΔؾ͔࣋ͪΔ͕ɺ·ͣݱঢ়Λڭ͑ͯ͘Εʯ• ʙिʹҰͷϛʔςΟϯά– "ʮࠓσϓϩΠपΓͷݱঢ়Λઆ໌͠·͢ʯ– OBPZBʮ͜͜ɺ͜͏͍͏͜ͱ ʯ– #ʮ͍ɺͦ͜͜Ε͜Ε͜͏͍͏ܦҢͰ͜͏ͳͬͯͯŋŋŋʯ– OBPZBʮͳΔ΄ͲɻͰͦΕແବͬΆ͍Ͷʯ– "ʮͦ͏Ͱ͢Ͷʯ
Λ၆ᛌతʹཧ͢Δ͜ͷද͕େࣄͳͷͰͳ͘ɺ͜ΕΛ࡞ΔϓϩηεͰͷཧղͱཧΛਐΊͨ͜ͱ͕େࣄ
ͦͦɺͳΜͰ͏·͍ͬͯ͘ͳ͔͔ͬͨ• ٕज़త՝Λු͖ூΓʹ͢Δଘࡏͷෆࡏ– ՝ͷݱঢ়ཧɺͷཧղΛਂΊΔϓϩηε͕͚͍ܽͯͨ– $50ෆࡏ DG3FCVJMEGN• ܧଓతʹʹ͍ͭͯߟ͑ΔɾऔΓΉϓϩηε͕ͳ͔ͬͨ– Ұےೄʹ͍͔ͳ͍ଟ͍ˠܧଓతऔΓΈ͕ඞཁ– ݸʑਓͷҙ͚ࣝͩͰܧଓతʹऔΓΉͷ͍ٕ͠ज़ސ͕ఆظతʹ๚ͯ͘͠Δɺͱ͍͏ͷ͕͜ΕΒΛղফ͢Δࡐྉͩͬͨͷ͔ͳͱ
Ұํɺࣦഊͨ͜͠ͱ• ݱঢ়൱ఆ͔Βೖͬͯ͠·ͬͨ͜ͱͰແ༻ͳۓுΛੜΜͩ– *4)*/ͱ͍͏ϓϩδΣΫτ໊ŋŋŋʮນ͞ΕΔଆ͔ͱࢥͬͨʯ• ݱߦγεςϜʹର͢ΔϦεϖΫτෆ– ࣗͨͪͷࠓ ച্ɺརӹɺڅྉ͕ʮෛ࠴ʯʮϨΨγʔʯͱݺΜͰ͍ΔͦΕ͔ΒੜΈग़͞Ε͍ͯΔ͜ͱΛΕ͍͚ͯͳ͍– ͍ͬͯΕɺࣄۀతޭΛऩΊͨαʔϏε·ͣؒҧ͍ͳ͘ϨΨγʔΛ๊͑Δ• ͦΕ͕વͳΜͩͱ͍͏લఏʹཱͭʮੋʑඇʑ͕ΤϯδχΞͷ࢟Ͱ͠ΐʯਖ਼Ͱ͕͢ɺਓؒײͷੜ͖Ͱ͢
ֶΜͩ͜ͱ• ϐʔϓϧΣΞͷʮιϑτΣΞ։ൃ্ͷͷଟ͘ɺٕज़తͱ͍͏ΑΓࣾձֶతͳͷͰ͋ΔɻʯΛͰ͍ͬͯͨ• ͷཧղٕज़తͳ)PX5P– ºʮ͜͏͋Δ͖Ͱ͠ΐʂʯ– ˓ʮͳͥͦ͏͋Δ͖ͷ͕ɺͦ͏ͳ͍ͬͯͳ͍ͷ͔ɻͦ͏ͳΒͳ͔ͬͨͷԿͰͳͷ͔ʯͱ͍͏͍• ͜ΕΛಥ͖٧Ί͍ͯ͘ͱɺٕज़ͷͰͳ͘ਓ৫ʹର͢ΔΞϓϩʔν͕ݟ͑ͯདྷΔ
$50ணҎ߱ͷͳ͠
ࢁେ͖͔ͬͨ• ސͷؒͰ͍Ζ͍Ζਐḿͨ͠ͱࢥ͍͕ͬͯͨŋŋŋ• େ͖ͳۄ·͍ͩͭ͋ͬͨ͘– Ͱ͢ΑͶ
• &MBTUJDJUZʹ͚ܽΔσʔληϯλʔΠϯϑϥ ΦϯϓϨϛε• ΦΦΧϛগԽ͍ͯ͠ΔΞϥʔτ௨• ܦͰݹ͘ͳͬͨίʔυϕʔεɺΞʔΩςΫνϟ• ൿͷλϨԽͨ͠ɺۀʹߩݙ͍ͯ͠ΔϚʔέ༻ࣾ%#• ະͩʹ"044-Խ͞Ε͍ͯͳ͍αʔϏε• ຑᙺ͍ͯͯ͠Α͘Θ͔Βͳ͘ͳ͍ͬͯΔॾʑ– ϕϯμʔʹࢧ͍ͬͯΔӡ༻อकྉͷଥੑ– ଓ͚Δඞཁ͕͋Δͷ͔ɺഇࢭ͍͍ͯ͠ͷ͔Θ͔Βͳ͍ϓϩηε– ΤϯδχΞ͕ͬͯΔಓ۩͕ݹΊ͔͍͠– ͍ΖΜͳࡶ༻ʹΘΕΔ։ൃϚωʔδϟʔ
ͳͥސͷؒɺ͜ͷେ͖ͳʹखΛ͚ͭΒΕͳ͔ͬͨͷ͔ • ͦͷ͋ͨΓʹղ͖͕͋͘ΔͷബʑΘ͔͍ͬͯͨ• ਓؒຊೳతʹɺେ͖͗͢Δ͔ΒΛഎ͚Δੑ࣭– ͍ࣗͬͪΐטΈͰ͖ͦ͏ͳ׆ൃʹٞ͞ΕΔ͕ɺઐత͔ͭେ͖ͳʹ্Βͳ͍
վΊͯΛཧղ͠ɺཧ͢Δ͜ͱ͔Β࢝Ίͨ• ݱঢ়ΛௐࠪɻࢿྉʹαϚϦ͠આ໌Ͱ͖ΔϨϕϧ·ͰཧղΛਐΊΔ• ৽ਓͱͯ͠ͷΩϟονΞοϓͱͷҰੴೋௗ
γεςϜؔ࿈අ༻શͯ#*Ͱݟ͑ΔԽ
՝ײ͕Θ͔͖ͬͯͨͷͰ͍ͭͷΑ͏ʹཧͯ͠ŋŋŋ
ํΛ໌Β͔ʹͯ͠ɺల։
ඞཁͳΒ৫ͷܗม͑Δ͠ɺ෦ॺ࡞Δ%8)$3.ج൫ͳͲσδλϧϚʔέςΟϯάσʔλαΠΤϯεʹඞཁͳج൫Λ։ൃɾӡ༻͢ΔνʔϜ
ࣄ͕ਐΈ͡ΊΔ• σʔληϯλʔˠΫϥυҠߦɻ͋ͱϲ݄Ͱྃ• େྔͷΞϥʔτˠϞχλϦϯάΛ࠶ߏͯ͠ཧ• ൿͷλϨ%#ˠ&NCVMLEJHEBHͰ࠶ߏங• "044-Խˠྃ• ຑᙺ͍ͯͯ͠Α͘Θ͔Βͳ͘ͳ͍ͬͯͨࣄฑ– ΤϯδχΞͷ੮ͷిˠશ෦औͬͬͨ– ࠪূͷͨΊ͚ͩͷνέοτˠ(JUͷཤྺͰ༻ͯ͠ࢭΊͨ– ӡ༻อकྉˠֹͷେ͖ͳͷΛਫ਼ࠪ͠ϕϯμʔͱՁ֨ަব– ΤϯδχΞͷಓ۩ˠ༧ࢉΛ֬อ͖ͯ͠ͳͷΛങ͑ΔϧʔϧΛ࡞ͬͨ– Ϛωʔδϟʔˠ։ൃνʔϜઐଐͷ૯Λޏͬͯશ෦ר͖औͬͯΒͬͨ
Γ͗͢Δਓͨͪ曲面ディスプレイ43インチ4Kモニタ搬入時
Ͳ͏ΈͯήʔϛϯάΩʔϘʔυɻҰԠ੩ԻΒ͍͠Ͱ͢ŋŋŋ
ਓؾ&*;0ͷਖ਼ํܗϞχλ'MFY4DBO&72ɻ7JTVBM4UVEJPΛશը໘Խ͢Δͱ͢͜ͿΔշదͩͦ͏Ͱ͢
എதΛԡ͢• Πϯϑϥͷ৽͕ਐ·ͳ͔ͬͨͷ • ٕज़తʹࠔͳԿ͔ ن͕େ͖͗͢Δ • ˠಛघͰߴՁͳϋʔυΣΞΛ͍ͬͯͨͨΊɺͦΕΛࣺͯΔϦεΫ͕େ͖͘ݱஅ͕͔ͬͨ͠• ʮΠϯϑϥΛޙ·ͰʹΫϥυʹҠͯ͠ʯʮ͑ͬʯ– ํΛશࣾతʹ໌֬Խͨ͜͠ͱͰपลͷҙࢤܾఆʹྑ͍• ৽͍͠ϓϩδΣΫτϚωʔδυαʔϏεΛར༻͢ΔલఏͰઃܭ͞ΕΔΑ͏ʹͦ͏͍ͨ͠ͱࢥ͍͚ͬͯͨͲɺ୭͔͕എதΛԡ͞ͳ͍ͱඈͼࠐΊͳ͍ɺΈ͍ͨͳঢ়گΛଧ։
フォーカスすべき問題をクリアにすれば、あとはどういう物にすればいいかはエンジニアは知っている
ґଘؔΛղআ͢Δ• "044-Խ͕ਐ·ͳ͔ͬͨͷ • ΞϓϦέʔγϣϯΤϯδχΞΠϯϑϥଆͷ࡞ۀ͕େมͩͱࢥ͍ͬͯΔ• ΠϯϑϥଆΞϓϦέʔγϣϯΤϯδχΞ͕େมͩͱࢥ͍ͬͯΔ• ͓ޓ͍͕૬खͷ࡞ۀͪͩͱࢥ͍ࠐΈ– ཁ݅Λཧͯ͠ɺґଘؔΛղআ͢Δ• ʮΞϓϦέʔγϣϯଆΛਐΊͯऴΘͬͨΒΠϯϑϥʹ࿈བྷͯ͠ʯ• ʮΞϓϦέʔγϣϯଆؾʹͤͣઃఆΛਐΊͯ࿈བྷ͕͋ͬͨΒΓସ͑ͯʯ• ͙͢ʹྃͨ͠ɻҰ෦αʔϏε'BTUMZͰ)551Խ
ӌճ࿏Λ௵ͯ͠ਖ਼໘ೖΓޱΛ։͚Δ• Ϛʔέ%#͕ൿͷλϨԽͯ͠͠·ͬͨͷ – ෳࡶͳཁ݅ ٕज़ͷબϛε ଐਓԽ – ˠ୲͕ηΩϡϦςΟ্ͷࣄ͔Βᷖճ͢Δඞཁ͕͋Δŋŋŋͱࢥ͍ࠐΜͰͨ• جװ%#ԕ͍ˠ౿ΈͳͲͷᷖճ࿏Λܦ༝ͯࣾ͠ಧ͘&5-• ᷖճͷํ͕ಛघෳࡶͳ͍ͤͰ҉Խ• $*40ͱձ͠ɺ҆શ͕୲อ͞Εͨਖ਼໘ݰؔΛ࡞Δ– ͋ͱ&NCVMLEJHEBHͰ&5-– 044Λૉʹ͏– มΘͬͨ͜ͱͤͣɺγϯϓϧʹɻ
ຑᙺ͍ͯ͠Δ"T*Tͷ5P#FΛೝࣝͤ͞Δ• ΦΦΧϛগʹͳ͍ͬͯΔΞϥʔτϞχλϦϯά– ҟৗ͕ىͬͯ͜Δͷ͔ىͬͯ͜ͳ͍ͷ͔શવΘ͔Βͳ͍– ϕςϥϯʮ͜Εεϧʔ͍͍ͯͭ͠ʯʮ͜Εμϝͳͭʯͱ͍͏҉͕͋ΔͷͰؾʹͳΒͳ͍• ʮ͜Ε͜Ε͜͏͍͏ঢ়ଶʹ·Ͱ͍ͬͯͬͯཉ͍͠ʯͱ͍͏ظΛΫϦΞʹ͢Δ
%BUB%PHͰϞχλϦϯάΞϥʔτΛ࠶ߏங• ணखͨ͠ΒͰ5P#Fͳঢ়ଶʹͳͬͨ– Կ͍··ͰͷܗͰͬͯͨͷԿͩͬͨΜͩײ
Γɺࣾձతͳ• ʮͳͥͦ͏͋Δ͖ͷ͕ɺͦ͏ͳ͍ͬͯͳ͍ͷ͔ɻͦͷݪҼԿ͔ ʯ– ํ͕໌֬ʹͳ͍ͬͯͳ͍͜ͱ͕ϘτϧωοΫʹˠ໌֬ʹ͢Δ– ϧʔϧ͕Ұਓา͖ͯ͠ϘτϧωοΫʹˠࢥ͍ࠐΈΛऔΓআ͘– ෳࡶʹߟ͑͗ͯ͢ʮΕΔؾ͕͠ͳ͍ʯ͕ϘτϧωοΫʹˠγϯϓϧͳସҊΛఏࣔ͠τϨʔυΦϑΛڐ༰͢Δ
݁Ռ͕ग़࢝ΊΔ• ΫϥυҠߦͷ͓͔͛ͰώϧφϯσεΞλοΫͰམͪͳ͍• &5-Λγϯϓϧʹ͓͔ͨ͛͛͠Ͱ%8)ߋ৽͕ྃޕޙˠૣேʹॖ͞ΕΔ– ϚʔέςΟϯάࢪࡦͷճస্͕͕Δ• ΤϯδχΞͷୀࣾ࣌ࠁ͕ૣ͘ͳͬͨ– ʮ͘Β͍લͬͯͳΜ͔ΈΜͳ͘·Ͱͬͯ·ͨ͠ΑͶʯʮ͔֬ʹŋŋŋͳΜͰ͚ͩͬͨͬŋŋŋʯ
ྑ͔ͬͨྑ͔ͬͨŋŋŋͱݴ͍͍ͨͱ͜Ζ͕ͩ
• &MBTUJDJUZʹ͚ܽΔσʔληϯλʔΠϯϑϥ ΦϯϓϨϛε• ΦΦΧϛগԽ͍ͯ͠ΔେྔͷΞϥʔτ௨• ܦͰݹ͘ͳͬͨίʔυϕʔεɺΞʔΩςΫνϟ• ൿͷλϨԽͨ͠ɺۀʹߩݙ͍ͯ͠ΔϚʔέ༻ࣾ%#• ຑᙺ͍ͯͯ͠Α͘Θ͔Βͳ͘ͳ͍ͬͯΔॾʑ– ϕϯμʔʹࢧ͍ͬͯΔӡ༻อकྉͷଥੑ– ଓ͚Δඞཁ͕͋Δͷ͔ɺഇࢭ͍͍ͯ͠ͷ͔Θ͔Βͳ͍ϓϩηε• දྫŋŋŋࠪূͷͨΊͷ3FENJOFνέοτىථ– ͬͯΔಓ۩ ϋʔυ͕ݹΊ͔͍͠– ͍ΖΜͳࡶ༻ʹΘΕΔ։ൃϚωʔδϟʔʮҰ൪հͦ͏ͳͰ͚͢Ͳ͜ΕͲ͏ͳͬͨΜͰ͢ ʯʮŋŋŋʯ
技術的負債த৺ʹ͔͏΄Ͳਂࠁ͕େ͖͍ͱ͢Δ
पล͔Γ͕ղܾ͞Ε͍ͯͯɺҰ൪େ͖ͳ͕ղܾ͞Ε͍ͯͳ͍技術的負債レガシーアーキテクチャ問題(JU)VCσϓϩΠࣗಈԽϩάͷՄࢹԽ4MBDLใڞ༗ϏϧυύΠϓϥΠϯ
ল• ৫తίϯαϧతͳΞϓϩʔνʹཔΓ͖͗ͨ͢Β͍– ݁Ռɺຊؙʹख͕͔ͭͳ͍ͱ͍͏ঢ়گʹ– େ͖ͳʹखΛग़͍ͯ͠ΔͭΓͰ͍͕ͨɺϚΫϩʹΓʮղ͚ΔൣғͷΛղ͍͍ͯΔʯঢ়گΛ͍ͤͯͳ͔ͬͨʮଟ͘ͷࣾձతͰ͋Δͷ΄Μ·ͳʙʯͱ͍͏ޭମݧ͕अຐΛͨ͠
ਖ਼͢·Μ͔ͬͨɻͪΌΜͱٕज़ͷʹٕज़ͰΞϓϩʔν͢ΔͰ
͏ͻͱͭؾ͍ͮͨ͜ͱ• Ͳ͏Β$50Ͱ͋Δࢲͷ͋Μ·ΓΈΜͳؾʹͯ͠ͳ͍ͬΆ͍– ࣄۀ෦ͷΤϯδχΞͷେ͖ͳΛϦϑΝΫλϦϯάʹ͏ͧʂͱͳΔͱͦΕͳΓͷઆಘίετ͕͔͔Γͦ͏– ʮ$50͕͖ʹͬͯΔʯͱ͍͏ͷͲ͏Β୭ؾʹͯ͠ͳ͍ͬΆ͍
ŋŋŋͱ͍͏Θ͚Ͱɺٕज़తΞϓϩʔνΛ։࢝• Ҏ্લʹϩʔϯνͯ͠ɺͣͬͱͦͷ··։ൃ͖ͯͨ͠ҰٳϨετϥϯࣄۀ৳ͼΓ– $MBTTJD"417#4DSJQU– 044ք۾Ͱ͍͏ͱੲͷ1)1Έ͍ͨͳײ͡• Ͳ͏͢Δ – /&5ʹҠߦ͢Δ $ͰϦϥΠτ͢Δ – 8JOEPXTϓϥοτϑΥʔϜ – ·ͣςετΛॻ͘ – όοΫΤϯυΛ"1*Խͯ͠Ϟμϯͳϑϩϯτͱ
ݸਓతͳաڈͷল͔Β• ए͔Γ͜͠Ζɺنײ՝ͳͲΛ͋·Γؾʹ͍͖ͤͣͳΓϦϑΝΫλϦϯά͔Βೖͬͨ͜ͱ͕͋ͬͨ– ͏·͍ͬͨ͘͜ͱ͋Δ– Ұํɺࣦഊͨ͜͠ͱ͋Δˠத్ͳͷ͕৽ͨͳෛ࠴ʹŋŋŋ
ࣗࣾͷաڈͷল͔Β• աڈʹओྗࣄۀͷେنͳγεςϜϦχϡʔΞϧ– ϏοάϦϥΠτ $MBTTJD"41͔Β/&5Ҡߦ– ϦχϡʔΞϧʹର͢Δظ͕ߴ·Γ͗ͯ͢ɺେখ͋ΒΏΔཁ͕݅ϦχϡʔΞϧʹدͤΒΕΔ– ϓϩδΣΫτن͕େ͖͘ͳΓ͗͢ऩଋ·Ͱʹͱͯۤ࿑ͨ͠Β͍͠• ΞʔΩςΫνϟඞཁΑΓෳࡶͳͷʹͳͬͯ͠·ͬͨ• ল͔Β– ԿͷΛղܾ͍ͨ͠ͷ͔ɺͦͷϑΥʔΧεΛ͖ͬΓͤ͞Δ– ؔ৺ࣄΛ໌֬ʹ͠είʔϓΛখ͘͞ɻ࠶ઃܭʹ,*44ݪଇΛΕͳ͍
ղܾࡦΑΓલʹ࣮ΛಡΈݱߦγεςϜͷ՝Λ໌Β͔ʹ͢Δ• ͬͺΓʮΛཧղ͢Δʯͱ͍͏جຊ่࢟͞ͳ͍• Δؾ࣋ͪΛ͑ɺݱߦγεςϜੳΛͬ͘͡Γߦ͏ʮԶͷ7JTVBM4UVEJPʯ BLB&NBDT˞স͏ͱ͜ΖͰ͢
ಓʹίʔυϦʔσΟϯά• 6OJWFSTBMDUBHT IUUQTDUBHTJPͰλά͚– ΞΫςΟϒʹϝϯς͕ଓ͍͍ͯΔDUBHT• BOZUIJOHZBFUBHTͱBOZUIJOHDNPDDVSTͰιʔείʔυΛΓา͘– ΠϯΫϦϝϯλϧʹγϯϘϧΛߜΓࠐΈ֘ՕॴʹδϟϯϓͰ͖Δ&NBDT֦ு– ϞμϯͳΤσΟλͰ͋Εಉ༷ͷػೳ͕͋Δͣ
ಡΈ࢝Ίͨྑ͍͕ɺԿΛख͕͔ΓʹݴޠԽ͢Δ͔ • ൺֱର͕ཉ͍͠– ൺֱͳ͘ݱঢ়Λઆ໌͍ͯ͘͠ͷɺળ͠ѱ͠Θ͔ΓͮΒ͍– ຊਓཧղͰ͖ͯपғͷਓʹઆ໌ͮ͠Β͍• ڞ௨ݴޠతͳͷͱൺֱ͢Δͷ͕ྑͦ͞͏– અࢠɺͦΕʮύλʔϯʯ
ΠσΟΦϜɺσβΠϯύλʔϯɺΞʔΩςΫνϟύλʔϯ• ʮΞʔΩςΫνϟʯͷจ຺ͷύλʔϯͩͱओʹҎԼͷࡾ͔ͭ– ΞʔΩςΫνϟύλʔϯŋŋŋཻେ– σβΠϯύλʔϯŋŋŋத– ΠσΟΦϜ ϓϩάϥϛϯάύλʔϯŋŋŋখ• ཻେ͖Ί͔Βੳ͍ͨ͠– ΑͬͯɺΞʔΩςΫνϟύλʔϯͷΧλϩά͕͋Ε͍͍– અࢠɺͦΕ1PG&"" ΤϯλʔϓϥΠζΞϓϦέʔγϣϯΞʔΩςΫνϟύλʔϯ͕Α͘ΒΕͨද
1PG&"" 1BUUFSOTPG&OUFSQSJTF"QQMJDBUJPO"SDIJUFDUVSFஶऀϚʔνϯɾϑΝϥʔʮͨͱ͑܅͕ͨͪͬͯΔ"DUJWF3FDPSEͯͷ͜ͷຊͰղઆ͞Ε͍ͯΔύλʔϯͷҰͭͳΜͩΑɺ͑ͬΜʯ
ϨΠϠԽΞʔΩςΫνϟͷύλʔϯΧλϩάͷ၆ᛌਤJEBTBLJDIZ͞ΜͷϒϩάΑΓh"p://d.hatena.ne.jp/asakichy/20120611/1339366061
ύλʔϯͱ࣮Λൺֱ͠ͳ͕Βߏ՝Λ໌Β͔ʹ͢Δパターンにはそれぞれ長所・短所がある。パターンを基準に分類していくと自分たちのシステムの構造的な長所や短所を言語化しやすかった
͜͏ͯ͠ϨΠϠ͝ͱʹΛཧղ͠ͳ͕ΒݴޠԽ͍͖ͯ͠ŋŋŋ
Ճ͑ͯɺ՝͚ͩͰͳ͘ॴ໌Β͔ʹ͢Δ
ݱঢ়͕ݴޠԽͰ͖ͨΒ5P#Fߟ͑ͯΈΔ
ࠒ։ൃऀ͕ײ͡ΔετϨεͱͷϚοϐϯάΛߦ͏
υϝΠϯͷΑΓਂ͍ཧղฒߦͯ͠ߦ͏• ࣄۀऀɺϚʔέςΟϯάɺӦۀͱͷձػձΛ૿͢• ϓϩμΫτઓུ͓ΑͼϓϩμΫτϚωδϝϯτʹࣗՃΘͬͯυϝΠϯͷࣝΛ૿͢
ͷཧղ͕ਐΉʹͭΕݱ࣮తͳਐΊํ͕ݟ͑ͯ͘Δ• ϏοάϦϥΠτΛ͠ͳͯ͘গͣͭ͠ృΓସ͍͚͑ͯͦ͏– ϖʔδίϯτϩʔϥτϥϯβΫγϣϯεΫϦϓτͷΈ߹ΘͤͳͷͰϖʔδ୯ҐͰͷ࣮ͷಠཱੑ͕ߴ͍– σʔλϚούͰநԽ͢Δ͜ͱͰཧ σʔλϕʔεͦͷ··ɺ৽͍͠υϝΠϯΦϒδΣΫτΛಋೖͰ͖ͦ͏
ݴޠબఆݱࡏͷॴΛͳΔ͘อଘ͢Δ͜ͱΛඪʹͨ͠
৽͍࣮͠ബ͍ϑϨʔϜϫʔΫɺബ͍࣮Λࢦ͢• ՝ʹ߹ΘͤΔ– σʔλߏΛڧ੍͢ΔϑϧελοΫͳͷ࠾༻ͮ͠Β͍– ͱͱઃܭෳࡶͰͳ͍ɻෳࡶͳΞʔΩςΫνϟΛ࣋ͪࠐΉͷຊస– ബ͍࣮͕ϕετ• ࢀߟʹͨ͠ͷŋŋŋ͍͖͞ΐ͏ͷ;ΕʔΉΘʔͯ͘ͳڭՊॻ– IUUQTXXXTMJEFTIBSFOFUDIPZBQDBTJB– IUUQTHJUIVCDPNIBUFOB)BUFOB5FYUCPPL
ࢀߟʹͨ͠ͷͲΜͳΞʔΩςΫνϟίϯηϓτ͔• ಡΉίʔυ͕࠷খ ڞಉ։ൃͷͨΊʹ– ݶΓͳ͘ബ͍ϑϨʔϜϫʔΫ㲈ઃܭࢦŋŋŋಡΉίʔυ࠷খ– ڞಉ։ൃʹඞཁͳͷڞ௨ͷ࣮Ͱͳ͘ɺڞ௨ͷઃܭࢦ• ҆શͰ͋Δ͜ͱ ৴པੑઃܭ– ةݥͳ͜ͱΛ͢ΔͨΊʹΑΓଟ͘ͷίετ͕ඞཁʹͳΔΑ͏ʹ• σϑΥϧτͰ҆શɻةݥͳ͜ͱΛ͢Δʹ໌ࣔతͳએݴ– 42-Ͱ*0͢Δͷίετ͕ඞཁͳ͜ͱˠ؆୯ʹҾ͚ΔΑ͏ʹ͗͢͠ͳ͍• ίετ͕͔͔Δ͜ͱΛศརʹ͍͚ͯ͠ͳ͍cf. ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーくh"ps://www.slideshare.net/cho45/yapc-asia-2011
ϓϩτλΠϐϯάŋŋŋΛཧղ͢ΔɺԾઆݕূͷͨΊͷࢼ࡞• 1ZUIPO– ΤίγεςϜ͕ࡢࠓͷτϨϯυ͋Γ׆ൃɻܧଓੑظͰ͖Δ– ֶशίετ͕͍– ͍·ར༻͍ͯ͠Δݴޠͱɺಛੑ͕େ͖͘มΘΒͳ͍– 8JOEPXTͰɺNBD04Ͱ։ൃͰ͖Δ• 'MBTL 3PVUJOHΞϧϑΝఔͷখ͞ͳϑϨʔϜϫʔΫ• 03.ͳ͠– %BUB.BQQFSͱɺ1MBJO0ME1ZUIPO0CKFDUͳυϝΠϯΦϒδΣΫτ
モデル (データソース層、ドメイン層)データソースからユビキタス言語へのマッピングも
値オブジェクトEnum や namedtuple など標準でミニマムな機能でシンプルなオブジェクトとして表現する
コントローラ (Flask では "View")KISS ・・・ 凝ったことはしない
Plain なオブジェクトなのでテストも楽実行も速い
ਐͲ͏Ͱ͔͢• ࣮։͔࢝Βϲ݄ऑͰओཁͳը໘֓Ͷಈ͘Α͏ʹ– ϑϩϯτΤϯυผνʔϜ͕վળΛଓ͚͍ͯΔ• γϯϓϧͳΞʔΩςΫνϟײ৮• ͜ͷ··1ZUIPOͰ͍͘ͷ – ೝূपΓΛͳ͘طଘ࣮ͱڞଘͰ͖ͯɺ42-4FSWFSυϥΠόͷੑೳʹ͕ͳ͚Εŋŋŋ– 1ZUIPOͷ5ZQF)JOUTͷಋೖΛݕ౼த
Ҿ͖ଓ͖ɺ͕ΜΔ͍ͧ
ओு
ٕज़తෛ࠴ͷ৫γεςϜʹݻ༗ͷͷ• ৫ɺγεςϜʹݻ༗ͷͷɻҰൠԽ͢Δͷ͍͠– ࡞Γ͕͍͍͠ͷ͔ɺѱ͍ͷ͔ɻͲΜͳઃܭ͕͍͍ͷ͔ѱ͍ͷ͔Ұ֓ʹݴ͑ͳ͍• υϝΠϯɺ๊͍͑ͯΔσʔλɺఀࢭແఀࢭɺ৫ͷέΠύϏϦςΟɺ͜Ε·ͰͷܦҢɺ͔͚ΒΕΔίετ ࣄۀঢ়گŋŋŋඇৗʹͨ͘͞Μͷม– ͔ͩΒͦ͜ɺͦͷݻ༗ͷΛཧղ͢ΔݟۃΊΔ͜ͱ͕ॏཁ• Λਖ਼͘͠ཧղ͢Δલʹղܾ͢Δ͜ͱΛٸ͗͗͢ͳ͍• ͦͷݻ༗ͷͱηοτͰߟ͑ͳ͍ͱγεςϜϓϩηεͷଥੑධՁͰ͖ͳ͍– ˓˓ΛͬͯΔ͔Β͍͍ɺ˚˚Λͬͯͳ͍͔Βμϝͱ͍͏͜ͱͰͳ͍
ҰํɺྲྀߦσϑΝΫτελϯμʔυ͓ͬͯ͘ͱʹཱͭ• ੈͷதͰΑΓγϯϓϧͳΓํͰͦͷΛղܾ͢ΔΞΠσΞ͕ڞ༗͞Ε͍ͯΔ– ϕετɾϓϥΫςΟε– ͨͱ͑ɺ5IF5XFMWF'BDUPS"QQ• Βͣʹ࡞ΓࠐΉͱɺΞϯνύλʔϯΛ౿ΜͰෛ࠴ʹͳΓ͍͢• ৫తʹਓࡐ͕ଟ༷ͩͱΑΓ෯͘ελϯμʔυΛΔ͜ͱ͕Ͱ͖Δ– -JOVY044ͳࢲ͕.JDSPTPGUͳҰٳʹ– ಛఆٕज़ʹͩ͜ΘΒͣਓࡐ࠾༻ͷ෯Λ֦͛ͨ
ʹ͍ͭͯߟ͑Δ͜ͱେࣄɺҰํɺͱ͖ʹେࣄ• ʹ͍ͭͯߟ͑͗ͯ͢಄Ͱ͔ͬͪʹͳΔͱͷ͝ͱ͕ਐ·ͳ͍• खΛಈ͔ͨ͠΄͏͕ͷཧղ͕ૣ͍໘ͱͯଟ͍– ϓϩτλΠϐϯάɺτϥΠΤϥʔ図解・拙速は巧遅に勝るhttp://blog.kentarok.org/entry/2017/01/17/002401
ؒͷॴײ• େ͖͍͔ΒΛഎ͚ͣϑΥʔΧε͢Δ– ͏ɺຊʹɻ͜Εສճ͙Β͍಄ͷதͰ࠶ੜͨ͠– ʮԶେ͖ͳʹ͖߹ͬͯΔʯͱࢥͬͯͯɺແҙࣝʹେมͳΛආ͚͕֮ͯͯࣗͳ͍• ͡Ό͋ސब࣌ʹ͍͖ͳΓҰ൪େ͖ͳʹ͔ͬͯͨΒΑ͔͔ͬͨͱ͍͏ͱͦ͏ͱݴ͑ͳ͍– ͍͖ͳΓΞʔΩςΫνϟʹखΛग़͍ͯͯ͠ɺՌͨͯ͠ޭ͔ͨ͠ ແཧήʔ– ղܾͷޭମݧΛੵΈॏͶ͖͔ͯͨΒͦ͜ɺΕΔಓے͕Έ͑ͨͱ͍͏ͷ͋Δ
ཁ͢Δʹɺόϥϯεॏཁ長々と喋った割に、いつもどおり、極めて無難な結論に達してしまいました
·ͱΊ• ٕज़తෛ࠴ͱ͖߹͖ͬͯͨؒ• ܧଓͯ͠ߟ͑ଓ͚Δ͜ͱ͕େࣄ• Λཧղ͢Δɺਖ਼͍͠ʹϑΥʔΧε͢Δ͜ͱ͕େࣄ• ͳΜ͔ͩΜͩͰɺόϥϯεॏཁ