$30 off During Our Annual Pro Sale. View Details »

技術的負債と向き合う

 技術的負債と向き合う

オープンセミナー2017@岡山での発表スライドです

Naoya Ito

May 15, 2017
Tweet

More Decks by Naoya Ito

Other Decks in Technology

Transcript

  1. ٕज़తෛ࠴ͱ޲͖߹͏
    /BPZB*UP
    גࣜձࣾҰٳ$50

    View Slide

  2. Ұٳͷ঺հ ͔ΜͨΜʹ

    ্࣭ͳϗςϧ΍ཱྀؗϨετϥϯͷ༧໿΍Ϊϑτɻ॓ധ༧໿Ͱ༗໊Ͱ͕͢ɺ࠷ۙ͸Ϩετϥϯ༧໿΋ओྗࣄۀن໛ʹ

    View Slide

  3. ن໛ײͳͲ
    •  ैۀһ໊͘Β͍ɻ͏ͪΤϯδχΞ໊ఔ౓
    •  ೥ʹϩʔϯνɺ͋Ε͔Β೥
    –  Ϩετϥϯ͸೥
    •  αʔόʔ͸୆ఔ౓
    •  $ɺ7#ɺ1ZUIPOɺ+BWB4DSJQUɺ(Pɺ4XJGU
    –  8FC͸ࠓͷͱ͜Ζ.JDSPTPGUςΫϊϩδ /&5$MBTTJD"41

    –  σʔλΤϯδχΞϦϯάपΓ΍Πϯϑϥ͸1ZUIPOɺ/PEFɺ(P
    –  'BTUMZɺ"84 ɺ-BNCEB
    ɺ42-4FSWFS#JH2VFSZ3FETIJGU
    •  ͨͩ͠ઈࢍҠߦதͰɺ·ͩΦϯϓϨ΋͋Δ

    View Slide

  4. ΞδΣϯμ
    •  ೥ؒͷऔΓ૊Έ
    –  ٕज़ސ໰ͱͯ͠ܞΘͬͨ೥ؒ
    –  $50ண೚Ҡߦͷ೥
    •  ݹ͘ͳͬͨγεςϜͱͲ͏޲͖߹͖͔ͬͯͨ

    View Slide

  5. ٕज़ސ໰ͷࠒͷ͸ͳ͠

    View Slide

  6. ૎Δ͜ͱ೥લͷҰٳ
    h"ps://speakerdeck.com/kensuketanaka/modannaxian-chang-nisurutamenishi-jian-sitakoto

    View Slide

  7. View Slide

  8. ٕज़ސ໰ͱͯ͠ܞΘΔ͜ͱʹ
    •  ೥݄ʙ೥݄
    •  िʹҰ౓ɺ࣌ؒఔ౓ͷϛʔςΟϯά

    View Slide

  9. ݁Ռ
    •  ೥΄ͲͰେ͖͘վળͨ͠
    –  (JU)VC'MPX
    –  ίʔυϨϏϡʔ
    –  (JU)VC+FOLJOTʹΑΔσϓϩΠͷࣗಈԽ
    –  4FMFOJVN8FC%SJWFSʹΑΔ&&ςετ
    –  4MBDL2JJUB5FBN

    View Slide

  10. View Slide

  11. ͦͷޙ΋վળΛଓ͚ͯ೥݄ࠒ $50ண೚௚લ

    •  ϒϥϯνσϓϩΠ؀ڥ
    •  3VOOOJOHCFUBJOQSPEVDUJPO
    •  ϩάͷՄࢹԽ4MBDL௨஌ʹΑΔΤϥʔݕ஌

    View Slide

  12. View Slide

  13. ͜Ε͡Ό͋ɺԿΛ࡞ͬͯΔ
    ͔Α͘Θ͔Βͳ͍ͷͰŋŋŋ
    QSPEVDUJPOʹݶΓͳ͍ۙ͘
    %#ΛϨϓϦΧͯ͠ɺͦΕͰ
    ։ൃɻ %))΋ݴͬͯͨΑ

    View Slide

  14. ΦϑΟε಺ʹܝࣔ͢Δ͜ͱ
    Ͱɺো֐͕͋ͬͨΓ͢Δͱ
    ͙͢Θ͔Δ
    ログ環境とDevOps ~一休.comでの事例
    h"ps://speakerdeck.com/shoichiron/roguhuan-jing-todevops-xiu-dot-comdefalseshi-li

    View Slide

  15. ݁Ռ
    •  ϦεΫڐ༰౓ͷ޲্ˠՁ஋ఏڙεϐʔυͷ޲্
    –  ϦϦʔεස౓͕૿͑҆શʹͳͬͨ͜ͱͰɺมߋͷϦεΫ͕ݮͬͨ
    –  ૊৫จԽʹ΋େ͖͘ӨڹΛ༩͑ͨ
    •  िΠν͔͠ϦϦʔεͰ͖ͳ͍ͷͰෆ۩߹Λग़͞ͳ͍Α͏ϐϦϐϦͯͨ͠Β͍͠
    •  ࠷ۙ͸౰࣌Ұ൪ϐϦϐϦ͍ͯͨ͠Ϧʔμʔ͕ʮ΍ͬͪΌ͑ΑʂʯΈ͍ͨͳ੎͍

    View Slide

  16. View Slide

  17. 一休.comのE2Eテスト事情
    h"ps://speakerdeck.com/shotaakasaka/seleniumjp4-ikyu

    View Slide

  18. View Slide

  19. ͦΜͳ͜ΜͳͰ͍Ζ͍Ζਐ௙ͨ͠Θ͚Ͱ͕͢ŋŋŋ
    •  ෺ࣄ͕͏·͘ਐΉͨΊʹେ੾ͩͬͨ͜ͱ͸Կͩͬͨͷ͔
    •  ࣦഊ͸ͳ͔ͬͨͷ͔

    View Slide

  20. ॏཁͩͬͨ͜ͱ
    •  ໰୊Λཧղ͠ɺ੔ཧ͢Δϓϩηεͷܧଓ
    •  ໰୊ʹ͍ͭͯܧଓతʹߟ͑ଓ͚Δश׳
    ͦ΋ͦ΋िʹ౓͔͠ߦͬͯͳ
    ͍ͷͰɺ࡞ۀ͸͠ͳ͍͠ɺ
    )PX5PΛৄࡉʹڭ͑ΒΕΔ
    Θ͚Ͱ΋ͳ͍

    View Slide

  21. ࣄ৘Λ஌Βͳ͍֎ͷਓ͕นଧͪ໾ʹͳΔ͜ͱͰ໰୊Λཧղ
    •  ౰ॳͷձ࿩
    –  Ұٳʮ(JU)VCͱ͔ςετͱ͔΋ͬͱϞμϯͳ։ൃ͕͍ͨ͠ΜͰ͢ʯ
    –  OBPZBʮ͸΍Δؾ࣋ͪ͸෼͔Δ͕ɺ·ͣ͸ݱঢ়Λڭ͑ͯ͘Εʯ
    •  ʙिʹҰ౓ͷϛʔςΟϯά
    –  "ʮࠓ೔͸σϓϩΠपΓͷݱঢ়Λઆ໌͠·͢ʯ
    –  OBPZBʮ͜͜͸ɺ͜͏͍͏͜ͱ ʯ
    –  #ʮ͍΍ɺͦ͜͸͜Ε͜Ε͜͏͍͏ܦҢͰ͜͏ͳͬͯͯŋŋŋʯ
    –  OBPZBʮͳΔ΄ͲɻͰ΋ͦΕ͸ແବͬΆ͍Ͷʯ
    –  "ʮͦ͏Ͱ͢Ͷʯ

    View Slide

  22. ໰୊Λ၆ᛌతʹ੔ཧ͢Δ
    ͜ͷද͕େࣄͳͷͰ͸ͳ͘ɺ͜ΕΛ
    ࡞ΔϓϩηεͰ໰୊ͷཧղͱ੔ཧΛ
    ਐΊͨ͜ͱ͕େࣄ

    View Slide

  23. ͦ΋ͦ΋ɺͳΜͰ͏·͍ͬͯ͘ͳ͔͔ͬͨ
    •  ٕज़త՝୊Λු͖ூΓʹ͢Δଘࡏͷෆࡏ
    –  ՝୊ͷݱঢ়੔ཧɺ໰୊ͷཧղΛਂΊΔϓϩηε͕͚͍ܽͯͨ
    –  $50ෆࡏ໰୊ DG3FCVJMEGN

    •  ܧଓతʹ໰୊ʹ͍ͭͯߟ͑ΔɾऔΓ૊Ήϓϩηε͕ͳ͔ͬͨ
    –  Ұےೄʹ͸͍͔ͳ͍໰୊΋ଟ͍ˠܧଓతऔΓ૊Έ͕ඞཁ
    –  ݸʑਓͷҙ͚ࣝͩͰ͸ܧଓతʹऔΓ૊Ήͷ͸೉͍͠
    ٕज़ސ໰͕ఆظతʹ๚໰ͯ͠
    ͘Δɺͱ͍͏ͷ͕͜ΕΒΛղ
    ফ͢Δࡐྉͩͬͨͷ͔ͳͱ

    View Slide

  24. Ұํɺࣦഊͨ͜͠ͱ
    •  ݱঢ়൱ఆ͔Βೖͬͯ͠·ͬͨ͜ͱͰແ༻ͳۓுΛੜΜͩ
    –  *4)*/ͱ͍͏ϓϩδΣΫτ໊ŋŋŋʮ౗ນ͞ΕΔଆ͔ͱࢥͬͨʯ
    •  ݱߦγεςϜʹର͢ΔϦεϖΫτෆ଍
    –  ࣗ෼ͨͪͷࠓ ച্ɺརӹɺڅྉ
    ͕ʮෛ࠴ʯ΍ʮϨΨγʔʯͱݺΜͰ
    ͍ΔͦΕ͔ΒੜΈग़͞Ε͍ͯΔ͜ͱΛ๨Εͯ͸͍͚ͳ͍
    –  ೥΋΍͍ͬͯΕ͹ɺࣄۀత੒ޭΛऩΊͨαʔϏε͸·ͣؒҧ͍ͳ͘
    ϨΨγʔΛ๊͑Δ
    •  ͦΕ͕౰વͳΜͩͱ͍͏લఏʹཱͭ
    ʮੋʑඇʑ͕ΤϯδχΞͷ࢟
    ੎Ͱ͠ΐʯ͸ਖ਼࿦Ͱ͕͢ɺਓ
    ؒ͸ײ৘ͷੜ͖෺Ͱ͢

    View Slide

  25. ֶΜͩ͜ͱ
    •  ϐʔϓϧ΢ΣΞͷʮιϑτ΢ΣΞ։ൃ্ͷ໰୊ͷଟ͘͸ɺٕज़తͱ
    ͍͏ΑΓࣾձֶతͳ΋ͷͰ͋ΔɻʯΛ஍Ͱ͍ͬͯͨ
    •  ໰୊ͷཧղٕज़తͳ)PX5P
    –  ºʮ͜͏͋Δ΂͖Ͱ͠ΐʂʯ
    –  ˓ʮͳͥͦ͏͋Δ΂͖΋ͷ͕ɺͦ͏ͳ͍ͬͯͳ͍ͷ͔ɻͦ͏ͳΒͳ
    ͔ͬͨͷ͸ԿͰͳͷ͔ʯͱ͍͏໰͍
    •  ͜ΕΛಥ͖٧Ί͍ͯ͘ͱɺٕज़ͷ໰୊Ͱ͸ͳ͘ਓ΍૊৫ʹର͢ΔΞϓϩʔν͕ݟ
    ͑ͯདྷΔ

    View Slide

  26. $50ண೚Ҏ߱ͷ͸ͳ͠

    View Slide

  27. ࢁ͸େ͖͔ͬͨ
    •  ސ໰ͷ೥ؒͰ͍Ζ͍Ζਐḿͨ͠ͱ͸ࢥ͍͕ͬͯͨŋŋŋ
    •  େ͖ͳۄ͸·͍ͩͭ͘΋͋ͬͨ
    –  Ͱ͢ΑͶ

    View Slide

  28. •  &MBTUJDJUZʹ͚ܽΔσʔληϯλʔΠϯϑϥ ΦϯϓϨϛε

    •  ΦΦΧϛগ೥Խ͍ͯ͠ΔΞϥʔτ௨஌
    •  ܦ೥Ͱݹ͘ͳͬͨίʔυϕʔεɺΞʔΩςΫνϟ
    •  ൿ఻ͷλϨԽͨ͠ɺۀ੷ʹ௒ߩݙ͍ͯ͠ΔϚʔέ༻ࣾ಺%#
    •  ະͩʹ"044-Խ͞Ε͍ͯͳ͍αʔϏε
    •  ຑᙺ͍ͯͯ͠Α͘Θ͔Βͳ͘ͳ͍ͬͯΔॾʑ
    –  ϕϯμʔʹࢧ෷͍ͬͯΔӡ༻อकྉͷଥ౰ੑ
    –  ଓ͚Δඞཁ͕͋Δͷ͔ɺഇࢭ͍͍ͯ͠ͷ͔Θ͔Βͳ͍ϓϩηε
    –  ΤϯδχΞ͕࢖ͬͯΔಓ۩͕ݹΊ͔͍͠
    –  ͍ΖΜͳࡶ༻ʹ௥ΘΕΔ։ൃϚωʔδϟʔ

    View Slide

  29. ͳͥސ໰ͷ೥ؒɺ͜ͷେ͖ͳ໰୊ʹखΛ͚ͭΒΕͳ͔ͬͨͷ͔
    •  ͦͷ͋ͨΓʹղ͘΂͖໰୊͕͋Δͷ͸ബʑΘ͔ͬͯ͸͍ͨ
    •  ਓؒ͸ຊೳతʹɺେ͖͗͢Δ໰୊͔Β໨Λഎ͚Δੑ࣭
    –  ࣗ෼΋͍ͬͪΐטΈͰ͖ͦ͏ͳ໰୊͸׆ൃʹٞ࿦͞ΕΔ͕ɺઐ໳త͔
    ͭେ͖ͳ໰୊͸࿩୊ʹ΋্Βͳ͍

    View Slide

  30. վΊͯ໰୊Λཧղ͠ɺ੔ཧ͢Δ͜ͱ͔Β࢝Ίͨ
    •  ݱঢ়ΛௐࠪɻࢿྉʹαϚϦ͠આ໌Ͱ͖ΔϨϕϧ·ͰཧղΛਐΊΔ
    •  ৽ਓͱͯ͠ͷΩϟονΞοϓͱͷҰੴೋௗ

    View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. γεςϜؔ࿈අ༻͸શͯ#*Ͱݟ͑ΔԽ

    View Slide

  35. ՝୊ײ͕Θ͔͖ͬͯͨͷͰ͍ͭ΋ͷΑ͏ʹ੔ཧͯ͠ŋŋŋ

    View Slide

  36. ํ਑Λ໌Β͔ʹͯ͠ɺల։

    View Slide

  37. ඞཁͳΒ૊৫ͷܗ΋ม͑Δ͠ɺ෦ॺ΋࡞Δ
    %8)΍$3.ج൫ͳͲσδλϧ
    ϚʔέςΟϯά΍σʔλαΠΤϯ
    εʹඞཁͳج൫Λ։ൃɾӡ༻͢Δ
    νʔϜ

    View Slide

  38. ෺ࣄ͕ਐΈ͸͡ΊΔ
    •  σʔληϯλʔˠΫϥ΢υ΁Ҡߦɻ͋ͱ਺ϲ݄Ͱ׬ྃ
    •  େྔͷΞϥʔτˠϞχλϦϯάΛ࠶ߏ੒ͯ͠੔ཧ
    •  ൿ఻ͷλϨ%#ˠ&NCVMLEJHEBHͰ࠶ߏங
    •  "044-Խˠ׬ྃ
    •  ຑᙺ͍ͯͯ͠Α͘Θ͔Βͳ͘ͳ͍ͬͯͨࣄฑ
    –  ΤϯδχΞͷ੮ͷి࿩ˠશ෦औͬ෷ͬͨ
    –  ؂ࠪূ੻ͷͨΊ͚ͩͷνέοτˠ(JUͷཤྺͰ୅༻ͯ͠ࢭΊͨ
    –  ӡ༻อकྉˠֹͷେ͖ͳ΋ͷΛਫ਼ࠪ͠ϕϯμʔͱՁ֨ަব
    –  ΤϯδχΞͷಓ۩ˠ༧ࢉΛ֬อͯ͠޷͖ͳ΋ͷΛങ͑ΔϧʔϧΛ࡞ͬͨ
    –  Ϛωʔδϟʔˠ։ൃνʔϜઐଐͷ૯຿Λޏͬͯશ෦ר͖औͬͯ΋Βͬͨ

    View Slide

  39. ΍Γ͗͢Δਓͨͪ
    曲面ディスプレイ
    43インチ4Kモニタ
    搬入時

    View Slide

  40. Ͳ͏Έͯ΋ήʔϛϯάΩʔϘʔυɻ
    ҰԠ੩ԻΒ͍͠Ͱ͢ŋŋŋ

    View Slide

  41. ਓؾ͸&*;0ͷਖ਼ํܗϞχλ
    'MFY4DBO&72ɻ
    7JTVBM4UVEJPΛશը໘Խ͢Δͱ͢͜
    ͿΔշదͩͦ͏Ͱ͢

    View Slide

  42. എதΛԡ͢
    •  Πϯϑϥͷ࡮৽͕ਐ·ͳ͔ͬͨͷ͸
    •  ٕज़తʹࠔ೉ͳԿ͔ ن໛͕େ͖͗͢Δ
    •  ˠಛघͰߴՁͳϋʔυ΢ΣΞΛ࢖͍ͬͯͨͨΊɺͦΕΛࣺͯΔϦεΫ͕େ
    ͖͘ݱ৔൑அ͕೉͔ͬͨ͠

    •  ʮΠϯϑϥΛ೥ޙ·ͰʹΫϥ΢υʹҠͯ͠ʯʮ͑ͬʯ
    –  ํ਑Λશࣾతʹ໌֬Խͨ͜͠ͱͰपลͷҙࢤܾఆʹ΋ྑ͍೾໲
    •  ৽͍͠ϓϩδΣΫτ͸ϚωʔδυαʔϏεΛར༻͢ΔલఏͰઃܭ͞ΕΔΑ͏ʹ
    ͦ͏͍ͨ͠ͱࢥ͍͚ͬͯͨͲɺ
    ୭͔͕എதΛԡ͞ͳ͍ͱඈͼࠐ
    Ίͳ͍ɺΈ͍ͨͳঢ়گΛଧ։

    View Slide

  43. フォーカスすべき問題をクリアにすれば、あとはどういう物にすればいいかはエンジニアは知っている

    View Slide

  44. ґଘؔ܎Λղআ͢Δ
    •  "044-Խ͕ਐ·ͳ͔ͬͨͷ͸
    •  ΞϓϦέʔγϣϯΤϯδχΞ͸Πϯϑϥଆͷ࡞ۀ͕େมͩͱࢥ͍ͬͯΔ
    •  Πϯϑϥଆ͸ΞϓϦέʔγϣϯΤϯδχΞ͕େมͩͱࢥ͍ͬͯΔ
    •  ͓ޓ͍͕૬खͷ࡞ۀ଴ͪͩͱࢥ͍ࠐΈ
    –  ཁ݅Λ੔ཧͯ͠ɺґଘؔ܎Λղআ͢Δ
    •  ʮΞϓϦέʔγϣϯଆΛਐΊͯऴΘͬͨΒΠϯϑϥʹ࿈བྷͯ͠ʯ
    •  ʮΞϓϦέʔγϣϯଆؾʹͤͣઃఆΛਐΊͯ࿈བྷ͕͋ͬͨΒ੾Γସ͑ͯʯ
    •  ͙͢ʹ׬ྃͨ͠ɻҰ෦αʔϏε͸'BTUMZͰ)551Խ΋

    View Slide

  45. ӌճ࿏Λ௵ͯ͠ਖ਼໘ೖΓޱΛ։͚Δ
    •  Ϛʔέ%#͕ൿ఻ͷλϨԽͯ͠͠·ͬͨͷ͸
    –  ෳࡶͳཁ݅ ٕज़ͷબ୒ϛε ଐਓԽ
    –  ˠ୲౰͕ηΩϡϦςΟ্ͷࣄ৘͔Βᷖճ͢Δඞཁ͕͋Δŋŋŋͱࢥ͍ࠐΜͰͨ
    •  جװ%#͸ԕ͍ˠ౿Έ୆ͳͲͷᷖճ࿏Λܦ༝ͯࣾ͠಺΁ಧ͘&5-
    •  ᷖճͷ࢓ํ͕ಛघෳࡶͳ͍ͤͰ҉໧஌Խ
    •  $*40ͱձ࿩͠ɺ҆શ͕୲อ͞Εͨਖ਼໘ݰؔΛ࡞Δ
    –  ͋ͱ͸&NCVMLEJHEBHͰ&5-
    –  044Λૉ௚ʹ࢖͏
    –  มΘͬͨ͜ͱ͸ͤͣɺγϯϓϧʹɻ

    View Slide

  46. ຑᙺ͍ͯ͠Δ"T*Tͷ5P#FΛೝࣝͤ͞Δ
    •  ΦΦΧϛগ೥ʹͳ͍ͬͯΔΞϥʔτ΍ϞχλϦϯά
    –  ҟৗ͕ىͬͯ͜Δͷ͔ىͬͯ͜ͳ͍ͷ͔શવΘ͔Βͳ͍
    –  ϕςϥϯ͸ʮ͜Ε͸εϧʔ͍͍ͯ͠΍ͭʯʮ͜Ε͸μϝͳ΍ͭʯͱ͍͏҉໧஌
    ͕͋ΔͷͰؾʹͳΒͳ͍
    •  ʮ͜Ε͜Ε͜͏͍͏ঢ়ଶʹ·Ͱ΋͍ͬͯͬͯཉ͍͠ʯͱ͍͏ظ଴஋ΛΫϦ
    Ξʹ͢Δ

    View Slide

  47. View Slide

  48. %BUB%PHͰϞχλϦϯάΞϥʔτΛ࠶ߏங
    •  ணखͨ͠Β਺೔Ͱ5P#Fͳঢ়ଶʹͳͬͨ
    –  Կ೥΋͍··ͰͷܗͰ΍ͬͯͨͷ͸ԿͩͬͨΜͩײ

    View Slide

  49. ΍͸Γɺࣾձతͳ໰୊
    •  ʮͳͥͦ͏͋Δ΂͖΋ͷ͕ɺͦ͏ͳ͍ͬͯͳ͍ͷ͔ɻͦͷݪҼ͸Կ
    ͔ ʯ
    –  ํ਑͕໌֬ʹͳ͍ͬͯͳ͍͜ͱ͕ϘτϧωοΫʹˠ໌֬ʹ͢Δ
    –  ϧʔϧ͕Ұਓา͖ͯ͠ϘτϧωοΫʹˠࢥ͍ࠐΈΛऔΓআ͘
    –  ෳࡶʹߟ͑͗ͯ͢ʮ΍ΕΔؾ͕͠ͳ͍ʯ͕ϘτϧωοΫʹˠγϯϓϧ
    ͳ୅ସҊΛఏࣔ͠τϨʔυΦϑΛڐ༰͢Δ

    View Slide

  50. ݁Ռ͕ग़࢝ΊΔ
    •  Ϋϥ΢υҠߦͷ͓͔͛ͰώϧφϯσεΞλοΫͰ΋མͪͳ͍
    •  &5-Λγϯϓϧʹ͓͔ͨ͛͛͠Ͱ%8)ߋ৽׬͕ྃޕޙˠૣேʹ୹ॖ͞
    ΕΔ
    –  ϚʔέςΟϯάࢪࡦͷճస਺্͕͕Δ
    •  ΤϯδχΞͷୀࣾ࣌ࠁ͕ૣ͘ͳͬͨ
    –  ʮ೥͘Β͍લͬͯͳΜ͔ΈΜͳ஗͘·Ͱ࢒ͬͯ·ͨ͠ΑͶʯʮ͔֬ʹŋŋŋͳΜ
    Ͱ͚ͩͬͨͬŋŋŋʯ

    View Slide

  51. ྑ͔ͬͨྑ͔ͬͨŋŋŋͱݴ͍͍ͨͱ͜Ζ͕ͩ

    View Slide

  52. •  &MBTUJDJUZʹ͚ܽΔσʔληϯλʔΠϯϑϥ ΦϯϓϨϛε

    •  ΦΦΧϛগ೥Խ͍ͯ͠ΔେྔͷΞϥʔτ௨஌
    •  ܦ೥Ͱݹ͘ͳͬͨίʔυϕʔεɺΞʔΩςΫνϟ
    •  ൿ఻ͷλϨԽͨ͠ɺۀ੷ʹ௒ߩݙ͍ͯ͠ΔϚʔέ༻ࣾ಺%#
    •  ຑᙺ͍ͯͯ͠Α͘Θ͔Βͳ͘ͳ͍ͬͯΔॾʑ
    –  ϕϯμʔʹࢧ෷͍ͬͯΔӡ༻อकྉͷଥ౰ੑ
    –  ଓ͚Δඞཁ͕͋Δͷ͔ɺഇࢭ͍͍ͯ͠ͷ͔Θ͔Βͳ͍ϓϩηε
    •  ୅දྫŋŋŋ؂ࠪূ੻ͷͨΊͷ3FENJOFνέοτىථ
    –  ࢖ͬͯΔಓ۩ ϋʔυ
    ͕ݹΊ͔͍͠
    –  ͍ΖΜͳࡶ༻ʹ௥ΘΕΔ։ൃϚωʔδϟʔ
    ʮҰ൪໽հͦ͏ͳ࿩Ͱ͚͢Ͳ͜
    Ε͸Ͳ͏ͳͬͨΜͰ͢ ʯ
    ʮŋŋŋʯ

    View Slide

  53. 技術的負債
    த৺ʹ޲͔͏΄Ͳਂࠁ౓͕
    େ͖͍ͱ͢Δ

    View Slide

  54. पล͹͔Γ͕ղܾ͞Ε͍ͯͯɺҰ൪େ͖ͳ໰୊͕ղܾ͞Ε͍ͯͳ͍
    技術的負債
    レガシー
    アーキテクチャ
    問題
    (JU)VC
    σϓϩΠ
    ࣗಈԽ
    ϩάͷՄࢹ
    Խ
    4MBDL
    ৘ใڞ༗
    ϏϧυύΠ
    ϓϥΠϯ

    View Slide

  55. ൓ল
    •  ૊৫తίϯαϧతͳΞϓϩʔνʹཔΓ͖͗ͨ͢Β͍
    –  ݁Ռɺຊؙʹख͕͔ͭͳ͍ͱ͍͏ঢ়گʹ
    –  େ͖ͳ໰୊ʹखΛग़͍ͯ͠Δͭ΋ΓͰ͍͕ͨɺϚΫϩʹ͸΍͸Γʮղ
    ͚Δൣғ಺ͷ໰୊Λղ͍͍ͯΔʯঢ়گΛ୤͍ͤͯͳ͔ͬͨ
    ʮଟ͘ͷ໰୊͸ࣾձతͰ͋Δͷ͸
    ΄Μ·΍ͳʙʯͱ͍͏੒ޭମݧ͕
    अຐΛͨ͠

    View Slide

  56. ਖ਼௚͢·Μ͔ͬͨɻͪΌΜͱ
    ٕज़ͷ໰୊ʹٕज़ͰΞϓϩʔ
    ν͢ΔͰ

    View Slide

  57. ΋͏ͻͱͭؾ͍ͮͨ͜ͱ
    •  Ͳ͏΍Β$50Ͱ͋Δࢲͷ޻਺͸͋Μ·ΓΈΜͳؾʹͯ͠ͳ͍ͬΆ͍
    –  ࣄۀ෦ͷΤϯδχΞͷେ͖ͳ޻਺ΛϦϑΝΫλϦϯάʹ࢖͏ͧʂͱͳΔͱͦΕ
    ͳΓͷઆಘίετ͕͔͔Γͦ͏
    –  ʮ$50͕޷͖ʹ΍ͬͯΔʯͱ͍͏ͷ͸Ͳ͏΍Β୭΋ؾʹͯ͠ͳ͍ͬΆ͍

    View Slide

  58. ŋŋŋͱ͍͏Θ͚Ͱɺٕज़తΞϓϩʔνΛ։࢝
    •  ೥Ҏ্લʹϩʔϯνͯ͠ɺͣͬͱͦͷ··։ൃ͖ͯͨ͠ҰٳϨετϥϯ
    ࣄۀ͸৳ͼ੝Γ

    –  $MBTTJD"417#4DSJQU
    –  044ք۾Ͱ͍͏ͱੲͷ1)1Έ͍ͨͳײ͡
    •  Ͳ͏͢Δ
    –  /&5ʹҠߦ͢Δ $ͰϦϥΠτ͢Δ
    –  ୤8JOEPXTϓϥοτϑΥʔϜ
    –  ·ͣ͸ςετΛॻ͘
    –  όοΫΤϯυΛ"1*Խͯ͠Ϟμϯͳϑϩϯτͱ෼཭

    View Slide

  59. ݸਓతͳաڈͷ൓ল͔Β
    •  ए͔Γ͜͠Ζɺن໛ײ΍՝୊ͳͲΛ͋·Γؾʹ͍͖ͤͣͳΓϦϑΝ
    ΫλϦϯά͔Βೖͬͨ͜ͱ͕͋ͬͨ
    –  ͏·͍ͬͨ͘͜ͱ΋͋Δ
    –  Ұํɺࣦഊͨ͜͠ͱ΋͋Δˠத్൒୺ͳͷ͕৽ͨͳෛ࠴ʹŋŋŋ

    View Slide

  60. ࣗࣾͷաڈͷ൓ল͔Β
    •  աڈʹओྗࣄۀͷେن໛ͳγεςϜϦχϡʔΞϧ
    –  ϏοάϦϥΠτ $MBTTJD"41͔Β/&5΁Ҡߦ

    –  ϦχϡʔΞϧʹର͢Δظ଴͕ߴ·Γ͗ͯ͢ɺେখ͋ΒΏΔཁ͕݅ϦχϡʔΞϧ
    ʹدͤΒΕΔ
    –  ϓϩδΣΫτن໛͕େ͖͘ͳΓ͗͢ऩଋ·Ͱʹͱͯ΋ۤ࿑ͨ͠Β͍͠
    •  ΞʔΩςΫνϟ͸ඞཁΑΓ΋ෳࡶͳ΋ͷʹͳͬͯ͠·ͬͨ
    •  ൓ল͔Β
    –  Կͷ໰୊Λղܾ͍ͨ͠ͷ͔ɺͦͷϑΥʔΧεΛ͸͖ͬΓͤ͞Δ
    –  ؔ৺ࣄΛ໌֬ʹ͠είʔϓΛখ͘͞ɻ࠶ઃܭʹ,*44ݪଇΛ๨Εͳ͍

    View Slide

  61. ղܾࡦΑΓલʹ࣮૷ΛಡΈݱߦγεςϜͷ՝୊Λ໌Β͔ʹ͢Δ
    •  ΍ͬͺΓʮ໰୊Λཧղ͢Δʯͱ͍͏جຊ࢟੎͸่͞ͳ͍
    •  ͸΍Δؾ࣋ͪΛ཈͑ɺݱߦγεςϜ෼ੳΛͬ͘͡Γߦ͏
    ʮԶͷ7JTVBM4UVEJPʯ BLB&NBDT

    ˞স͏ͱ͜ΖͰ͢

    View Slide

  62. ஍ಓʹίʔυϦʔσΟϯά
    •  6OJWFSTBMDUBHT IUUQTDUBHTJP
    Ͱλά෇͚
    –  ΞΫςΟϒʹϝϯς͕ଓ͍͍ͯΔDUBHT
    •  BOZUIJOHZBFUBHTͱBOZUIJOHDNPDDVSTͰιʔείʔυΛ౉Γา͘
    –  ΠϯΫϦϝϯλϧʹγϯϘϧΛߜΓࠐΈ֘౰ՕॴʹδϟϯϓͰ͖Δ&NBDT֦ு
    –  ϞμϯͳΤσΟλͰ͋Ε͹ಉ༷ͷػೳ͕͋Δ͸ͣ

    View Slide

  63. ಡΈ࢝Ίͨ͸ྑ͍͕ɺԿΛख͕͔ΓʹݴޠԽ͢Δ͔
    •  ൺֱର৅͕ཉ͍͠
    –  ൺֱ΋ͳ͘ݱঢ়Λઆ໌͍ͯ͘͠ͷ͸ɺળ͠ѱ͠΋Θ͔ΓͮΒ͍
    –  ຊਓ͸ཧղͰ͖ͯ΋पғͷਓʹઆ໌ͮ͠Β͍

    •  ڞ௨ݴޠతͳ΋ͷͱൺֱ͢Δͷ͕ྑͦ͞͏
    –  અࢠɺͦΕʮύλʔϯʯ΍

    View Slide

  64. ΠσΟΦϜɺσβΠϯύλʔϯɺΞʔΩςΫνϟύλʔϯ
    •  ʮΞʔΩςΫνϟʯͷจ຺ͷύλʔϯͩͱओʹҎԼͷࡾ͔ͭ
    –  ΞʔΩςΫνϟύλʔϯŋŋŋཻ౓େ
    –  σβΠϯύλʔϯŋŋŋத
    –  ΠσΟΦϜ ϓϩάϥϛϯάύλʔϯ
    ŋŋŋখ
    •  ໰୊͸ཻ౓େ͖Ί͔Β෼ੳ͍ͨ͠
    –  ΑͬͯɺΞʔΩςΫνϟύλʔϯͷΧλϩά͕͋Ε͹͍͍
    –  અࢠɺͦΕ1PG&"" ΤϯλʔϓϥΠζΞϓϦέʔγϣϯΞʔΩςΫνϟύλʔ
    ϯ
    ͕Α͘஌ΒΕͨ୅ද΍

    View Slide

  65. 1PG&"" 1BUUFSOTPG&OUFSQSJTF"QQMJDBUJPO"SDIJUFDUVSF

    ೥ஶऀϚʔνϯɾϑΝ΢ϥʔ
    ʮͨͱ͑͹܅͕ͨͪ࢖ͬͯΔ"DUJWF3FDPSE
    ͯͷ͸͜ͷຊͰղઆ͞Ε͍ͯΔύλʔϯͷҰ
    ͭͳΜͩΑɺ͑ͬ΁Μʯ

    View Slide

  66. ϨΠϠԽΞʔΩςΫνϟͷύλʔϯΧλϩάͷ၆ᛌਤ
    JEBTBLJDIZ͞ΜͷϒϩάΑΓ

    h"p://d.hatena.ne.jp/asakichy/20120611/1339366061

    View Slide

  67. ύλʔϯͱ࣮૷Λൺֱ͠ͳ͕Βߏ଄΍՝୊Λ໌Β͔ʹ͢Δ
    パターンにはそれぞれ長所・短所がある。パターンを基準に分類していくと自分たちのシステムの構造的
    な長所や短所を言語化しやすかった

    View Slide

  68. ͜͏ͯ͠ϨΠϠ͝ͱʹ໰୊Λཧղ͠ͳ͕ΒݴޠԽ͍͖ͯ͠ŋŋŋ

    View Slide

  69. Ճ͑ͯɺ՝୊͚ͩͰͳ͘௕ॴ΋໌Β͔ʹ͢Δ

    View Slide

  70. ݱঢ়͕ݴޠԽͰ͖ͨΒ5P#F΋ߟ͑ͯΈΔ

    View Slide

  71. ೔ࠒ։ൃऀ͕ײ͡ΔετϨεͱͷϚοϐϯάΛߦ͏

    View Slide

  72. υϝΠϯͷΑΓਂ͍ཧղ΋ฒߦͯ͠ߦ͏
    •  ࣄۀ੹೚ऀɺϚʔέςΟϯάɺӦۀͱͷձ࿩ػձΛ૿΍͢
    •  ϓϩμΫτઓུ͓ΑͼϓϩμΫτϚωδϝϯτʹࣗ෼΋ՃΘͬͯυ
    ϝΠϯͷ஌ࣝΛ૿΍͢

    View Slide

  73. ໰୊ͷཧղ͕ਐΉʹͭΕݱ࣮తͳਐΊํ͕ݟ͑ͯ͘Δ
    •  ϏοάϦϥΠτΛ͠ͳͯ͘΋গͣͭ͠ృΓସ͍͚͑ͯͦ͏
    –  ϖʔδίϯτϩʔϥτϥϯβΫγϣϯεΫϦϓτͷ૊Έ߹ΘͤͳͷͰϖʔδ
    ୯ҐͰͷ࣮૷ͷಠཱੑ͕ߴ͍
    –  σʔλϚούͰந৅Խ͢Δ͜ͱͰ෺ཧ૚ σʔλϕʔε
    ͸ͦͷ··ɺ৽͍͠υ
    ϝΠϯΦϒδΣΫτΛಋೖͰ͖ͦ͏

    View Slide

  74. ݴޠબఆ͸ݱࡏͷ௕ॴΛͳΔ΂͘อଘ͢Δ͜ͱΛ໨ඪʹͨ͠

    View Slide

  75. ৽͍࣮͠૷͸ബ͍ϑϨʔϜϫʔΫɺബ͍࣮૷Λ໨ࢦ͢
    •  ՝୊ʹ߹ΘͤΔ
    –  σʔλߏ੒Λڧ੍͢ΔϑϧελοΫͳ΋ͷ͸࠾༻ͮ͠Β͍
    –  ΋ͱ΋ͱઃܭ͸ෳࡶͰ͸ͳ͍ɻෳࡶͳΞʔΩςΫνϟΛ࣋ͪࠐΉͷ͸ຊ຤స౗
    –  ബ͍࣮૷͕ϕετ
    •  ࢀߟʹͨ͠΋ͷŋŋŋ͍͖͞ΐ͏ͷ;ΕʔΉΘʔ͘͸ͯͳڭՊॻ
    –  IUUQTXXXTMJEFTIBSFOFUDIPZBQDBTJB
    –  IUUQTHJUIVCDPNIBUFOB)BUFOB5FYUCPPL

    View Slide

  76. ࢀߟʹͨ͠ͷ͸ͲΜͳΞʔΩςΫνϟίϯηϓτ͔
    •  ಡΉίʔυ͕࠷খ ڞಉ։ൃͷͨΊʹ

    –  ݶΓͳ͘ബ͍ϑϨʔϜϫʔΫ㲈ઃܭࢦ਑ŋŋŋಡΉίʔυ࠷খ
    –  ڞಉ։ൃʹඞཁͳͷ͸ڞ௨ͷ࣮૷Ͱ͸ͳ͘ɺڞ௨ͷઃܭࢦ਑

    •  ҆શͰ͋Δ͜ͱ ৴པੑઃܭ

    –  ةݥͳ͜ͱΛ͢ΔͨΊʹΑΓଟ͘ͷίετ͕ඞཁʹͳΔΑ͏ʹ
    •  σϑΥϧτͰ҆શɻةݥͳ͜ͱΛ͢Δʹ͸໌ࣔతͳએݴ
    –  42-Ͱ*0͢Δͷ΋ίετ͕ඞཁͳ͜ͱˠ؆୯ʹҾ͚ΔΑ͏ʹ͗͢͠ͳ͍
    •  ίετ͕͔͔Δ͜ͱΛศརʹͯ͠͸͍͚ͳ͍
    cf. ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく
    h"ps://www.slideshare.net/cho45/yapc-asia-2011

    View Slide

  77. ϓϩτλΠϐϯάŋŋŋ໰୊Λཧղ͢ΔɺԾઆݕূͷͨΊͷࢼ࡞
    •  1ZUIPO
    –  ΤίγεςϜ͕ࡢࠓͷτϨϯυ΋͋Γ׆ൃɻܧଓੑ΋ظ଴Ͱ͖Δ
    –  ֶशίετ͕௿͍
    –  ͍·ར༻͍ͯ͠Δݴޠͱɺಛੑ͕େ͖͘͸มΘΒͳ͍
    –  8JOEPXTͰ΋ɺNBD04Ͱ΋։ൃͰ͖Δ
    •  'MBTL 3PVUJOHΞϧϑΝఔ౓ͷখ͞ͳϑϨʔϜϫʔΫ

    •  03.ͳ͠
    –  %BUB.BQQFS૚ͱɺ1MBJO0ME1ZUIPO0CKFDUͳυϝΠϯΦϒδΣΫ
    τ

    View Slide

  78. モデル (データソース層、ドメイン層)
    データソースからユビキタス言語へのマッピングも

    View Slide

  79. 値オブジェクト
    Enum や namedtuple など標準でミニマムな機能で
    シンプルなオブジェクトとして表現する

    View Slide

  80. コントローラ (Flask では "View")
    KISS ・・・ 凝ったことはしない

    View Slide

  81. Plain なオブジェクトなのでテストも楽
    実行も速い

    View Slide

  82. ਐ௙Ͳ͏Ͱ͔͢
    •  ࣮૷։͔࢝Βϲ݄ऑͰओཁͳը໘͸֓Ͷಈ͘Α͏ʹ
    –  ϑϩϯτΤϯυ͸ผνʔϜ͕վળΛଓ͚͍ͯΔ
    •  γϯϓϧͳΞʔΩςΫνϟ͸޷ײ৮
    •  ͜ͷ··1ZUIPOͰ͍͘ͷ
    –  ೝূपΓΛ໰୊ͳ͘طଘ࣮૷ͱڞଘͰ͖ͯɺ42-4FSWFSυϥΠόͷੑೳʹ໰
    ୊͕ͳ͚Ε͹ŋŋŋ
    –  1ZUIPOͷ5ZQF)JOUTͷಋೖΛݕ౼த

    View Slide

  83. Ҿ͖ଓ͖ɺ͕Μ͹Δ͍ͧ

    View Slide

  84. ओு

    View Slide

  85. ٕज़తෛ࠴ͷ໰୊͸૊৫΍γεςϜʹݻ༗ͷ΋ͷ
    •  ૊৫ɺγεςϜʹݻ༗ͷ΋ͷɻҰൠԽ͢Δͷ͸೉͍͠
    –  ࡞Γ௚͕͍͍͠ͷ͔ɺѱ͍ͷ͔ɻͲΜͳઃܭ͕͍͍ͷ͔ѱ͍ͷ͔Ұ֓ʹ͸ݴ͑ͳ͍
    •  υϝΠϯɺ๊͍͑ͯΔσʔλɺఀࢭແఀࢭɺ૊৫ͷέΠύϏϦςΟɺ͜Ε·ͰͷܦҢɺ͔͚ΒΕΔ
    ίετ ࣄۀঢ়گ
    ŋŋŋඇৗʹͨ͘͞Μͷม਺
    –  ͔ͩΒͦ͜ɺͦͷݻ༗ͷ໰୊Λཧղ͢ΔݟۃΊΔ͜ͱ͕ॏཁ
    •  ໰୊Λਖ਼͘͠ཧղ͢Δલʹղܾ͢Δ͜ͱΛٸ͗͗͢ͳ͍

    •  ͦͷݻ༗ͷ໰୊ͱηοτͰߟ͑ͳ͍ͱγεςϜ΍ϓϩηεͷଥ౰ੑ͸ධՁͰ͖ͳ͍
    –  ˓˓Λ࢖ͬͯΔ͔Β͍͍ɺ˚˚Λ࢖ͬͯͳ͍͔Βμϝͱ͍͏͜ͱͰ͸ͳ͍

    View Slide

  86. Ұํɺྲྀߦ΍σϑΝΫτελϯμʔυ͸஌͓ͬͯ͘ͱ໾ʹཱͭ
    •  ੈͷதͰ͸ΑΓγϯϓϧͳ΍ΓํͰͦͷ໰୊Λղܾ͢ΔΞΠσΞ͕ڞ༗͞Ε͍ͯΔ
    –  ϕετɾϓϥΫςΟε
    –  ͨͱ͑͹ɺ5IF5XFMWF'BDUPS"QQ
    •  ஌Βͣʹ࡞ΓࠐΉͱɺΞϯνύλʔϯΛ౿ΜͰෛ࠴ʹͳΓ΍͍͢
    •  ૊৫తʹ͸ਓࡐ͕ଟ༷ͩͱΑΓ෯޿͘ελϯμʔυΛ஌Δ͜ͱ͕Ͱ͖Δ
    –  -JOVY044ͳࢲ͕.JDSPTPGUͳҰٳʹ
    –  ಛఆٕज़ʹͩ͜ΘΒͣਓࡐ࠾༻ͷ෯Λ֦͛ͨ

    View Slide

  87. ໰୊ʹ͍ͭͯߟ͑Δ͜ͱ͸େࣄɺҰํɺͱ͖ʹ͸੿଎΋େࣄ
    •  ໰୊ʹ͍ͭͯߟ͑͗ͯ͢಄Ͱ͔ͬͪʹͳΔͱ΋ͷ͝ͱ͕ਐ·ͳ͍
    •  खΛಈ͔ͨ͠΄͏͕໰୊ͷཧղ͕ૣ͍৔໘͸ͱͯ΋ଟ͍
    –  ϓϩτλΠϐϯάɺτϥΠΤϥʔ
    図解・拙速は巧遅に勝る
    http://blog.kentarok.org/entry/2017/01/17/002401

    View Slide

  88. ೥ؒͷॴײ
    •  େ͖͍໰୊͔Β໨Λഎ͚ͣϑΥʔΧε͢Δ
    –  ΋͏ɺຊ౰ʹɻ͜Ε͸ສճ͙Β͍಄ͷதͰ࠶ੜͨ͠
    –  ʮԶ͸େ͖ͳ໰୊ʹ޲͖߹ͬͯΔʯͱࢥͬͯͯ΋ɺແҙࣝʹେมͳ໰୊Λආ͚
    ͕֮ͯͯࣗͳ͍

    •  ͡Ό͋ސ໰ब೚࣌ʹ͍͖ͳΓҰ൪େ͖ͳ໰୊ʹ޲͔ͬͯͨΒΑ͔͔ͬͨͱ
    ͍͏ͱͦ͏ͱ΋ݴ͑ͳ͍
    –  ͍͖ͳΓΞʔΩςΫνϟʹखΛग़͍ͯͯ͠ɺՌͨͯ͠੒ޭ͔ͨ͠ ແཧήʔ

    –  ໰୊ղܾͷ੒ޭମݧΛੵΈॏͶ͖͔ͯͨΒͦ͜ɺ΍ΕΔಓے͕Έ͑ͨͱ͍͏ͷ
    ΋͋Δ

    View Slide

  89. ཁ͢Δʹɺόϥϯεॏཁ
    長々と喋った割に、いつもどおり、極めて無難な結論に達してしまいました

    View Slide

  90. ·ͱΊ
    •  ٕज़తෛ࠴ͱ޲͖߹͖ͬͯͨ೥ؒ
    •  ܧଓͯ͠ߟ͑ଓ͚Δ͜ͱ͕େࣄ
    •  ໰୊Λཧղ͢Δɺਖ਼͍͠໰୊ʹϑΥʔΧε͢Δ͜ͱ͕େࣄ
    •  ͳΜ͔ͩΜͩͰɺόϥϯεॏཁ

    View Slide