Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rebuild Team - 急成長プロダクトのDev&Opsで生じる悪循環とその解決策 / 20171013

yuzutas0
October 13, 2017

Rebuild Team - 急成長プロダクトのDev&Opsで生じる悪循環とその解決策 / 20171013

SPI Japan 2017の発表資料です。
refs. https://yuzutas0.hatenablog.com/entry/2017/10/16/093000

yuzutas0

October 13, 2017
Tweet

More Decks by yuzutas0

Other Decks in Technology

Transcript

  1. Rebuild Team

    ٸ੒௕ϓϩμΫτͷDev&OpsͰੜ͡Δѱ॥؀ͱͦͷղܾࡦ

    2017-10-13 (Fri) 

    SPI Japan 2017
    presented by @yuzutas0

    IUUQTXXXQFYFMTDPNQIPUPDPMMFBHVFTDPPQFSBUJPOpTUCVNQpTUT

    View Slide

  2. 90ຕ / 20min

    ͲΜͲΜ͍͖·͢

    View Slide

  3. ɹSho Yokoyama (@yuzutas0)
    ɹɹ



    ● ϦΫϧʔτςΫϊϩδʔζ
    ● ೝఆεΫϥϜϚελʔ
    ● ΤϯδχΞνʔϜͷ্ཱͪ͛ɾཱͯ௚͠

    View Slide

  4. ɹຊ೔ͷ಺༰
    “ٸ੒௕ʹ൐͏௧Έ” Λ1ͭ1ͭղফͯ͠
    νʔϜΛ҆ఆԽͨ͠ࣄྫΛڞ༗͠·͢

    View Slide

  5. ɹ૝ఆ͢Δର৅
    ٸ੒௕ϑΣʔζͷϓϩμΫτ։ൃɾӡ༻ʹؔ৺ͷ͋Δ
    ● ιϑτ΢ΣΞΤϯδχΞ

    ● νʔϜϦʔμʔ

    ● ૊৫Ϛωʔδϟʔ

    View Slide

  6. 1. എܠɾ՝୊


    2. վળ׆ಈ

    ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ


    3. ৼΓฦΓ

    ɹΞδΣϯμ

    View Slide

  7. ɹ੒௕௧ʹۤ͠ΉϓϩμΫτ

    ձࣾͷ࣍Λ୲͏ࣄۀͱͯ͠ͷظ଴
    νʔϜཱͯ௚͠ͷඞཁੑ


    ϝϯόʔ2ഒ/Q

    εέʔϧظ
    ച্3ഒ/೥

    άϩʔε੡඼
    ো֐2݅/Ӧۀ೔

    ةػతঢ়گ

    View Slide

  8. ɹ“0→1” ͕ੜΜͩෛ࠴
    ώοτ͢Δ͔ෆ֬ఆͰίετΛׂ͚ͳ͔ͬͨ

    ֎஫ʹؙ౤͛
    γεςϜ͸௿඼࣭
    γεςϜͷݶք
    ϐʔΫ࣌ؒଳͷԠ౴͕20sec
    ࢢ৔֦େ
    Ϣʔβʔ૿Ճ

    View Slide

  9. ɹ“1→10” ʹඋ͑ͨ࠶ߏங
    ϐʔΫ࣌ؒଳͷϨεϙϯελΠϜΛ0.05secʹ400ഒͷվળ
    ɹɹɹɹɹɹɹɹɹɹɹɹΦϯϓϨ

    ϨϯμϦϯάHTMLͱ

    jQueryͷଟॏಡࠐ

    → VirtualDOMɾSPA

    ʢඇಉظϕʔεͷ௨৴ʣ
    ֤αʔόͷεέʔϧΞοϓˍεέʔϧΞ΢τ
    DBΩϟογϡ

    → KVSҠ؅
    ϚϧνϚελߏ੒ʹWrite෼ࢄ
    ඇਖ਼نԽ&Ϛελςʔϒϧഇࢭ

    ʹJoin΍εΩϟϯΛ࡟ݮ
    ϙʔϦϯά࠷దԽ
    ΤϯυϙΠϯτΛ෼ࢄ

    ϩδοΫશॻ͖௚͠
    JPA؆қੜ੒ΫΤϦ
    → ࣗલSQLͰ࠷దԽ

    View Slide

  10. ɹ“1→10” ʹඋ͑ͨ಺੡Խ

    αϒγεAͷ࠶ߏங
    ՔಇதγεςϜͷ

    อकӡ༻
    αϒγεAͷ

    ड͚౉͠
    ʴαϒγεAͷ

    ػೳ௥ՃΛ࠶։
    ʴαϒγεBͷ

    ػೳ௥ՃΛ࠶։
    αϒγεBͷ࠶ߏங αϒγεCͷ࠶ߏங
    αϒγεBͷ

    ड͚౉͠
    γεςϜ࠶ߏஙνʔϜ
    ੡඼։ൃˍӡ༻νʔϜ ػೳ௥ՃΛҰ࣌ఀࢭ͢Δܭը͕ͩͬͨࣄۀ෦໳ͷཁٻͰ࣮ࢪ

    γεςϜ෦໳ͷϚωδϝϯτ૚͕ະհࡏͷ··૸Γ࢝Ίͨ
    ֎஫Λഇࢭ

    View Slide

  11. ɹDev&OpsͰੜͨ͡௧Έ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ

    View Slide

  12. ɹϛογϣϯ
    ● ։ൃɾӡ༻νʔϜΛཱͯ௚͢͜ͱ
    ● ͞ΒͳΔ੒௕ͷ౔୆Λߏங͢Δ͜ͱ

    View Slide

  13. 1. എܠɾ՝୊


    2. վળ׆ಈ

    ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ


    3. ৼΓฦΓ

    ɹΞδΣϯμ

    View Slide

  14. γεςϜো֐͕Ӧۀ೔͋ͨΓ2݅ൃੜ͢Δঢ়گ͕1ϲ݄ଓ͍ͨ

    → શνʔϜͷ͋ΒΏΔ։ൃΛࢭΊͯ௜੩Խ
    ঃʑʹऩଋ͕ͨ͠
    ● ߃ٱରԠ͸ਃ͠ૹΓ

    ● िʹԿճ͔࣌ݶര஄͕രൃ

    ● ϦϦʔεͷ౓ʹ৽ͨͳো֐͕ൃੜ

    ɹͳʹ͸ͱ΋͋ΕՐΛফ͢
    https://www.pexels.com/photo/water-outside-fire-hose-69934/

    View Slide

  15. ɹѱ॥؀Λଧ։͢Δվળ׆ಈ
    վળαΠΫϧΛͻͨ͢Βճ͠ଓ͚ͨ

    ݱঢ়ͷՄࢹԽ

    ಁ໌ੑ
    ϘτϧωοΫͷಛఆ

    ݕࠪ
    ϓϥΫςΟεͷద༻

    దԠ

    View Slide


  16. ɹ˞ٕज़؍఺΋ίπίπվળ͠ͳ͕Β
    ίʔυ඼࣭ͷ୲อ ϒϥϯνઓུͷಋೖ
    QAࢧԉɾςετڧԽ ϦϦʔε࡞ۀͷࣗಈԽ
    ཁ݅ϑΥʔϚοτ੔උ
    ςετ޲͚෺ࢿ؅ཧ
    IUUQTPOJDTPGUTPMVUJPOTJORVBMJUZBTTVSBODFBOEUFTUJOHIUNMɹɹɹIUUQOWJFDPNQPTUTBTVDDFTTGVMHJUCSBODIJOHNPEFM

    View Slide

  17. ݁Ռతʹʮݱ৔͚ͩͰແཧʹղܾ͠ͳ͍ʯʮ૬ஊ͢Ε͹ղܾͰ͖Δ͜ͱ΋͋Δʯͷϝοηʔδʹ΋ͳͬͨ

    ɹ˞֎෦ϦιʔεͰෆ଍Λิ͍ͳ͕Β
    ෺ࢿɿϗϫΠτϘʔυ΍Ϟχλʔ ஌ࣝɿಛఆ෼໺ͷઐ໳Ոαϙʔτ

    View Slide

  18. 1. എܠɾ՝୊


    2. վળ׆ಈ

    ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ


    3. ৼΓฦΓ

    ɹΞδΣϯμ

    View Slide

  19. ɹDev&OpsͰੜͨ͡௧Έ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ

    View Slide

  20. ɹϘτϧωοΫ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄
    τϥϒϧ
    ମྗɾϝϯλϧʹ௚ܸ
    ๷͗Α͏͕ͳ͍

    View Slide


  21. ɹࠞཚͨ͠··ো֐ʹରቂ͢Δ

    View Slide

  22. ● ܰඍͳෆ۩߹ͰͷΦϯίʔϧ΍࢒ۀରԠ͕ൃੜ͍ͯͨ͠

    ● ෆద੾ͳରԠʹΑΔೋ࣍ࡂ֐͕গͳ͔Βͣൃੜ͍ͯͨ͠

    ɹো֐ͷ܏޲෼ੳ͔Βணख

    View Slide

  23. ● ඼࣭ɾো֐ରԠʹ͓͚Δؔ܎ऀͷ໨ઢ߹Θͤ
    ● ఆٛͦͷ΋ͷ < “ఆظతͳձ࿩” Λ௨ͨ͡ڞ௨ೝࣝͷৢ੒

    ɹαʔϏεϨϕϧΛఆٛ

    View Slide


  24. ɹͲͷ͘Β͍ ”΍͹͍” Ϩϕϧ͔
    SLA
    ػೳ
    ηΩϡϦςΟɾ๏཯
    ίΞػೳ
    αϒػೳ
    ඇػೳ
    ৴པੑɾՄ༻ੑ
    ੑೳɾΩϟύγςΟ
    OLA
    ʴ 

    Өڹൣғ
    ར༻ऀ਺ɾγΣΞ཰
    ࣌ؒଳ
    αϙʔτ؀ڥ
    ʹ 

    ରԠ଎౓
    ଈ࣌ରԠ - ϕετΤϑΥʔτ
    ༏ઌରԠʢʼػೳ௥Ճʣ
    ௨ৗରԠʢʹػೳ௥Ճʣ
    ӡ༻
    ఆظతͳධՁ → ࠶ൃ๷ࢭ + ࣄલ༧๷ αʔϏεϨϕϧఆٛࣗମͷݟ௚͠
    ࢀরʰαʔϏεϨϕϧɿઃܭͱӡ༻ͷϓϥΫςΟεʱ http://yuzutas0.hatenablog.com/entry/2017/05/23/073000

    View Slide

  25. ಋೖ࣌ʹ͸աڈࣄྫΛ౿·͑ͨγϛϡϨʔγϣϯͰઆ໌

    ྫྷ੩ʹ࿩͢ͱʮ͜ͷϨϕϧͷෆ۩߹Ͱʯʮ໷௨͠ͷରԠΛͯ͠ʯ

    ʮೋ࣍ࡂ֐͕ى͖ͨ͜ͱʯͷ࢒೦͕͞ු͖ூΓʹͳΔʢ൑அج४ͷඞཁੑʣ

    ɹʮ͜ΕΛܾΊͯԿͷҙຯ͕͋Δͷʁʯ
    ͜ͷτϥϒϧͩͱ ͜ͷରԠʹͳΔ
    ͜ͷτϥϒϧͩͱ ͜ͷରԠʹͳΔ
    ͜ͷτϥϒϧͩͱ ͜ͷରԠʹͳΔ

    View Slide

  26. αʔϏεϨϕϧΛ൑அͷدΔลͱͯ͠গͣͭ͠ఆணͤ͞Δ


    ɹײ৘΍যΓͰҙࢥܾఆ͕ͳ͞Ε͕ͪ
    ɹʮαʔϏεϨϕϧఆٛͩͱ

    ɹɹ͜ͷΑ͏ʹ൑அͰ͖·͢Ͷʯ
    ҙࢥܾఆͷ৔ʹډ߹ΘͤΔ

    γεςϜ෦໳ͷ໾৬ऀΛঌש͢Δ
    τϥϒϧൃੜ࣌͸

    ϝϯόʔʹ੠Λֻ͚ͯ΋Β͏
    ৺ཧత҆શੑ

    ʮ૬ஊ͢Ε͹໷ؒରԠͤͣʹࡁΉʯ
    ϝϯόʔ͕ҰํతʹෆརӹΛ

    ඃΒͳ͍Α͏ʹίϛϡχέʔγϣϯ

    View Slide

  27. ܗ֚Խɾߗ௚ԽΛ๷͙ͨΊͷӡ༻ઃܭ

    ● ݄࣍ͷৼΓฦΓͰఆٛࣗମΛՃචɾमਖ਼

    ● աେɾաগͳΦϖϨʔγϣϯϨϕϧͰରԠ → ͔࣍Βద੾ͳϨϕϧͱ͢Δձ࿩
    ● Ξοϓσʔτ͠΍͍͢Α͏ʹίϥϘϨʔγϣϯπʔϧʢConfluenceʣʹهࡌ

    ɹ౰ॳ͸ߟྀ֎ͩͬͨ৽؍఺͕ग़Δ

    View Slide


  28. ɹద੾ͳϨϕϧͰ඼࣭ʹରቂ͢Δ

    View Slide

  29. 1. എܠɾ՝୊


    2. վળ׆ಈ

    ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ


    3. ৼΓฦΓ

    ɹΞδΣϯμ

    View Slide

  30. ɹDev&OpsͰੜͨ͡௧Έ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ

    View Slide

  31. ɹϘτϧωοΫ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ർฐ
    ”୲౰ऀ”ͷ๊͑Δ

    ՝୊Λ੾Γ։͘

    View Slide


  32. ɹ“୲౰ऀ”͚͕ͩ՝୊ʹରቂ͢Δ

    View Slide


  33. ɹ1on1ʹͯώΞϦϯά
    IUUQTXXXQFYFMTDPNQIPUPBEVMUCFBSECFWFSBHFCMVS

    View Slide

  34. ɹɹɹɹɹ ● ϝϯόʔ͝ͱʹҟͳΔ՝୊ҙࣝΛ๊͍͑ͯΔ
    ɹɹɹɹɹ ● ͦͷ “໰୊” Λ͓ޓ͍ʹൃ৴͍͋͑ͯ͠ͳ͍

    ɹɹɹɹɹ ● νʔϜͱͯ͠ “໰୊” ͷݕ஌ɾղܾ͕Ͱ͖͍ͯͳ͍

    ɹܧଓతͳ՝୊ͷݕ஌͕Ͱ͖͍ͯͳ͍
    [email protected]

    View Slide

  35. ●ʮߴ͍༏ઌ౓ʯͩΒ͚ͷܭը
    ●ʮߴ͍༏ઌ౓ʯͩΒ͚ͷׂΓࠐΈ࡞ۀ

    ● “୲౰ऀ” ͕ՔಇΛ૿΍͢͜ͱͰܭըʹ࣮ଶΛ߹ΘͤΑ͏ͱͨ͠

    ɹ༏ઌॱҐʹԠͯ͡࡞ۀͰ͖͍ͯͳ͍

    View Slide

  36. νʔϜ಺෦ͷձ࿩Λ׆ੑԽ → ಁ໌ੑΛอͭ → ݕࠪɾదԠͷαΠΫϧΛճ͢
    ɹεϓϦϯτηϨϞχʔΛ։࠵

    What
    ԿΛ͢Δ͔
    How
    Ͳ͏΍ͬͯ͢Δ͔
    ि࣍ϨϏϡʔ
    ࡞ۀ݁ՌϑΟʔυόοΫ
    σΠϦʔMTG
    ࡞ۀͷ࠶ܭը
    ि࣍ϓϥϯχϯά
    Ҋ݅ͷ࠶ܭը
    ϨτϩεϖΫςΟϒ
    ϓϩηεͷ࠶ܭը
    What
    ԿΛ͢Δ͔
    How
    Ͳ͏΍ͬͯ͢Δ͔

    View Slide

  37. ɹηϨϞχʔʹ൐͏ΞΠςϜͷ੔උ

    ɹϓϩμΫτόοΫϩά

    ɹݶΒΕͨਓһͰ༏ઌॱҐʹԠͯ͡࡞ۀ͢ΔΩϡʔ
    ɹো֐෺Ϧετ

    ɹϨτϩεϖΫςΟϒͰՄࢹԽ͞Εͨ՝୊
    ɹεϓϦϯτόοΫϩά

    ɹݱঢ়ͷ࡞ۀਐḿΛՄࢹԽ͢ΔΧϯόϯ

    View Slide

  38. *ྫʮ͋ͷَిͷதͰ΋खॱॻΛ࡞ͬͯϨϏϡʔͰ͖ͨʂೋ࣍ࡂ֐͕ى͖ͳ͍Α͏ʹಈ͚ͨͷ͸ྑ͔ͬͨʂʯ

    ɹKPTʹΑΔৼΓฦΓ͔Βணख
    Keep
    ݫ͍͠ঢ়گ͔ͩΒͦ͜ൃش͞Εͨ

    ྑ͍఺Λ͔ͬ͠Γͱশ͑߹ͬͨ*
    Problem
    ʢͦͷ্Ͱʣ֤ϝϯόʔ͕

    ײ͍ͯ͡Δ՝୊Λચ͍ग़ͨ͠
    [email protected]

    View Slide

  39. ɹTryͱͯ͠ϓϥΫςΟεΛঃʑʹಋೖ
    ݱ৔͕ແཧͳ͘ड͚ೖΕΒΕΔॱ൪ͰΞδϟΠϧख๏Λద༻ʢ͍͖ͳΓεΫϥϜͩͱ਎ߏ͑ΒΕΔʣ

    1౓ʹ͋Ε΋͜Ε΋

    ରԠ͢Δͷ͸ແཧͩʂ
    ༏ઌॱҐͷΩϡʔ؅ཧ

    όοΫϩάΛಋೖ
    Problem Try
    Ωϡʔͷݟ௚͠Λ

    ͨ͠΄͏͕ྑ͍ͷͰ͸ʁ
    ݟ௚͠ػձͱͯ͠

    ϓϥϯχϯάձٞΛಋೖ
    Problem Try
    ଞͷҊ݅Λ஌Βͳ͍ͷͰ

    αϙʔτͰ͖ͳ͍ʂ
    σΠϦʔMTG΍

    ि࣍ϨϏϡʔΛಋೖ
    Problem Try

    View Slide

  40. ɹʮ΍Γํ͕ίϩίϩมΘΔʯ໰୊
    ϓϥΫςΟεͷద༻͕ٸ͗͢Δͱɺݱ৔ͷϝϯόʔ͕뱌Ͱ͖ͳ͍

    ● ೲಘͰ͖ΔൣғΛฉ͖ग़͢ → શһ͕ೲಘͰ͖Δ෦෼͔Βಋೖ
    ● ͜ͷνʔϜʹ͸·ͩૣ͗ͨ͢ → ʮ΍ͬͺΓ΍Ί·͠ΐ͏ʯͰ੾Γ໭͠
    ● த్൒୺ͳద༻Ώ͑ͷProblem͕ڍ͕Δ → TryͰ͞Βʹຊ֨ద༻
    ●ʮࠜຊͷߟ͑ํΛ஌Γ͍ͨʯͱ͍͏ҙݟ → ر๬ऀʹରͯ͠ࢀߟਤॻͷҊ಺

    View Slide

  41. ɹ“ݱ৔ͷৼΓฦΓ”Λج఺ʹ্Ґ૚࿈ܞ

    Slack #kpt ʹ౤ߘ

    ؾ෇͍ͨ఺͸͙͢ڞ༗
    ౤ߘΛࢀߟʹͯ͠

    ϨτϩεϖΫςΟϒ
    Try Λચ͍ग़͢
    Ϛωδϝϯτձٞ Ͱ

    ্Ґ૚ʹαϚϦʔใࠂ
    ͦͷProblem͸

    νʔϜ಺ͰରॲՄೳ͔ʁ
    Yes
    No
    ࢀরʰΤεΧϨΛࢧ͑Δٕज़ - ΞδϟΠϧͳใ࿈૬ͱ৘ใྲྀ௨ʱ http://yuzutas0.hatenablog.com/entry/2017/08/10/090000
    Lean Escalation ͷ࠲૊Έ

    View Slide


  42. ɹνʔϜͱͯ͠՝୊ͱରቂ͢Δ

    View Slide

  43. 1. എܠɾ՝୊


    2. վળ׆ಈ

    ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ


    3. ৼΓฦΓ

    ɹΞδΣϯμ

    View Slide

  44. ɹDev&OpsͰੜͨ͡௧Έ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ

    View Slide

  45. ɹϘτϧωοΫ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ
    KPTΛ௨ͯ͠՝୊͕ු্
    ʢνʔϜͷॏ఺՝୊ͱͯ͠߹ҙܗ੒ʣ
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ہॴ࠷ద

    View Slide

  46. ● શମ૾Λશ͘஌Βͳ͍
    ● શମ૾ʹΞΫηεͰ͖ͳ͍

    ɹہॴ࠷దͷ༠Ҽ

    View Slide

  47. ͋ΒΏΔ։ൃɾӡ༻ۀ຿ͷɺ͋ΒΏΔ޻ఔʹ

    ͋ΒΏΔProblem͕Ϛοϐϯά͞Εͨ
    ཁٻ੔ཧ ཁ݅ఆٛ ઃܭ ੡଄ ࢼݧ ग़ՙ ӡ༻
    Problem
    Problem
    Problem
    Problem
    Problem
    Problem
    Problem
    Problem
    Problem
    Problem
    Problem
    Problem
    Problem

    ɹʮԿͱͳ͘ʯͷ࡞ۀͩΒ͚

    View Slide

  48. Tryͷ༏ઌॱҐܾΊ΍૬ޓαϙʔτ͕ࠔ೉
    ● ୲౰ऀҎ֎͸ʢ୲౰ऀࣗ਎Ͱ͑͞ʣ֤ʑͷۀ຿ϑϩʔΛ೺ѲͰ͖ͳ͍
    ● ۀ຿಺༰ͷͲ͜ʹɺͲͷΑ͏ͳϜμɾϜϥɾϜϦ͕ੜ͡Δ͔ݟ͑ͳ͍
    ɹશମ૾͕ෆಁ໌

    View Slide

  49. ࡞ۀ࣌ؒɾ଴ͪ࣌ؒ΍ख໭Γͷ࣮ଶΛચ͍ग़͢

    ϜμɾϜϥɾϜϦ͕ੜ͡ΔՕॴΛಛఆ

    ɹόϦϡʔετϦʔϜϚοϓʢVSMʣΛ࡞੒
    Ҿ༻ݩʮ೔ຊͷDevOpsมֵΛଅਐ͢ΔόϦϡʔετϦʔϜϚοϐϯάʯ http://gihyo.jp/dev/column/01/devops/2017/value-stream-mapping

    View Slide

  50. ݟ͑ʹ͍͘෦෼ʹͦ͜໰୊͕જΉ ʹ શۀ຿ΛՄࢹԽ͢Δ͜ͱ͕େ੾

    ɹ֤ۀ຿͝ͱʹผͷVSMΛ࡞Δ
    ػೳ௥Ճͷ։ൃ γεςϜো֐ରԠ
    ΧελϚʔ͔Βͷ

    ໰͍߹ΘͤରԠ
    ଞ෦ॺ͔Βͷ

    ࡞ۀґཔରԠ
    γεςϜอकۀ຿

    ྫɿEOSLରԠ
    γεςϜӡ༻ۀ຿

    ྫɿΩϟύγςΟܭଌ
    http://gihyo.jp/dev/column/01/devops/2017/value-stream-mapping

    View Slide

  51. 1. ೲಘͯ͠΋Β͏

    ● ໰୊ҙࣝɾଧͪखΛઆ໌

    ● ࣾ಺ͰͷVSM׆༻ࣄྫΛ঺հ


    2. શһͰVSMΛ࡞੒

    ● ֤୲౰ऀ͕આ໌͠ͳ͕Βۀ຿ͷྲྀΕΛॻ͘

    ● “ϜμɾϜϥɾϜϦ” ΍ ”ϝϯόʔؒͷೝࣝͷࠩ෼” ΛՄࢹԽ

    ● ·͞ʹਐߦதͩͬͨҊ݅ͷϦεΫΛͦͷ৔Ͱݕ஌Ͱ͖ͨʢ੒ޭମݧʣ

    ɹશһࢀՃܕϫʔΫγϣοϓ͔Β࢝ΊΔ
    ࣮෺͸Ԛ͍Ͱ͢ʜʜ

    View Slide


  52. ɹʮ߆ଋ͕࣌ؒ௕͗͢Δʯ໰୊
    ϫʔΫγϣοϓͰ͸

    શһ͕ཧղ͠΍͍͢

    ʮػೳ௥ՃʯΛର৅
    ࢒Γ͸୲౰ऀʹ

    ώΞϦϯά
    VSMΛ࡞੒

    ʹ՝୊ͷՄࢹԽ
    ͙͢Ͱ͖ΔՕॴ͔Β

    ۀ຿ϑϩʔΛվળ
    վળޮՌ͕ݟ͑Δ
    ʹඞཁੑɾೲಘײ

    View Slide


  53. ɹۀ຿ͷશମ૾Λ஌Δ

    View Slide

  54. 1. എܠɾ՝୊


    2. վળ׆ಈ

    ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ


    3. ৼΓฦΓ

    ɹΞδΣϯμ

    View Slide

  55. ɹDev&OpsͰੜͨ͡௧Έ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ

    View Slide

  56. ɹϘτϧωοΫ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ
    KPTΛ௨ͯ͠՝୊͕ු্
    ʢνʔϜͷॏ఺՝୊ͱͯ͠߹ҙܗ੒ʣ
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ہॴ࠷ద

    View Slide

  57. ● શମ૾Λશ͘஌Βͳ͍
    ● શମ૾ʹΞΫηεͰ͖ͳ͍

    ɹہॴ࠷దͷ༠Ҽ

    View Slide

  58. վળ׆ಈΛ௨ͯ͠ٸܹʹϧʔϧɾϓϩηε͕ܾ·͍͕ͬͯ͘

    ҙࢥܾఆͷεϐʔυʹυΩϡϝϯτԽ͕ؒʹ߹Θͳ͍

    ɹʮͲ͜ΛݟΕ͹෼͔Δʁʯ໰୊
    ※ຊߘʹ͓͚ΔʮυΩϡϝϯτʯ͸ূ੻ɾܖ໿໨తͰ͸ͳ͘ɺۀ຿ඪ४Խͷʮ࡞ۀखॱॻʯ΍ʮΠϯϑϥ؀ڥҰཡʯͱ͍ͬͨ΋ͷ

    View Slide


  59. ● υΩϡϝϯτԽʴߋ৽͠ଓ͚Δ͜ͱͷॏཁੑ͸KPTͰڧௐ
    ● ೔ʑͷίϛϡχέʔγϣϯͰʮͥͻจॻԽ͍ͯͩ͘͠͞ʯʮߋ৽͍ͯͩ͘͠͞ʯ
    ● ଅਐҊΛืΔ → ϝϯόʔओମͰଅਐbot΍νέοτӡ༻ͷࢼߦࡨޡ

    ɹʢҊࣗମ͸ଓ͔ͳ͔͕ͬͨϝϯόʔ͕ࣗൃతʹจॻԽ͢ΔΑ͏ʹͳͬͨʣ

    ɹνʔϜશһʹਪਐऀͱͯ͠ৼ෣ͬͯ΋Β͏

    View Slide


  60. ● ϝϯόʔ͕ओମతʹจॻԽ → ผͷ৔ॴʹࣅͨυΩϡϝϯτ͕ॏෳ
    ɹ࣮ྫ: A͞Μ͕ো֐Λड͚ͯϦϦʔεखॱॻΛߋ৽ → B͞Μ͸ผͷखॱॻͰಉ͡ϛε → C͞Μ΋
    ● ໎ͬͨͱ͖ʹɺͲ͜ΛݟΕ͹ʢʹͲ͜ʹॻ͚͹ʣྑ͍͔෼͔Βͳ͍

    ɹʮͲΕ͕ਖ਼͍͠ʁʯ໰୊
    ϦϦʔεखॱॻA
    "͞Μ
    ো֐ൃੜ
    ϦϦʔε࡞ۀΛ࣮ࢪ
    ࡞ۀ࿙ΕΛ൓ө
    ϦϦʔεखॱॻA

    ʢ൓өࡁΈʣ
    ϦϦʔεखॱॻB

    ʢະ൓өʣ
    #͞Μ
    "͞Μ
    ಉ͡ো֐͕ൃੜ
    ϦϦʔε࡞ۀΛ࣮ࢪ
    ࡞ۀ࿙ΕΛ൓ө
    ϦϦʔεखॱॻA

    ʢ൓өࡁΈʣ
    "͞Μ
    ϦϦʔεखॱॻB

    ʢ൓өࡁΈʣ
    #͞Μ
    ϦϦʔεखॱॻC

    ʢະ൓өʣ
    $͞Μ
    ·ͨಉ͡ো֐͕ൃੜ
    ϦϦʔε࡞ۀΛ࣮ࢪ

    View Slide

  61. ɹϨΨγʔυΩϡϝϯτ

    मਖ਼͕͍ͭޙճ͠

    ԿΛॻ͚͹͍͍͔໎͏

    Ͳ͜ʹॻ͚͹͍͍͔໎͏
    Write
    ݟ͔ͭΒͳ͍

    ৘ใ͕ݹ͍ɾޡΓ

    ࣅͨ಺༰͕ࢄࡏ͍ͯ͠Δ
    Read
    ·͞ʹϨΨγʔίʔυͱಉ͡

    ର৅͕ࣗવݴޠʢ΋͘͠͸දɾਤʣʹͳ͚ͬͨͩʂ

    ↓

    ઃܭɾमਖ਼ͷ΍Γํ΋ϓϩάϥϛϯάͱಉ͡Ͱ͸ʁ

    View Slide

  62. ɹMVCΞʔΩςΫνϟͷద༻

    ґଘؔ܎ʹج͍ͮͨυΩϡϝϯτઃܭ

    View
    ϦϦʔε࡞ۀखॱॻ Πϯϑϥ؀ڥҰཡ
    JenkinsϩάΠϯ৘ใ
    ϦϦʔεه࿥_201704XX
    Controller Model

    View Slide


  63. ܁Γฦ͠ϖʔδ͸Ұׅ؅ཧ
    ɹIteratorύλʔϯ(GoF)ͷద༻

    View
    ϦϦʔε࡞ۀखॱॻ Πϯϑϥ؀ڥҰཡ
    JenkinsϩάΠϯ৘ใ
    ϦϦʔεه࿥_201704XX
    Controller Model
    ϦϦʔεه࿥_201704XX
    ϦϦʔεه࿥_201705XX
    ϦϦʔεه࿥_201706XX

    View Slide

  64. ɹDocument as Code - υΩϡϝϯτΛιʔείʔυͷΑ͏ʹѻ͏
    ɹ ● ϘʔΠεΧ΢τݪଇɿ๚Εͨϝϯόʔ͕Ճචɾमਖ਼

    ɹɹɹɹɹจॻΛݟΔલΑΓ΋ɺݟͨޙͷ΄͏͕៉ྷͳঢ়ଶͱͳ͍ͬͯΔͷ͕๬·͍͠

    ɹ ● ίʔυϨϏϡʔɿߏ੒ʹ೰ΜͩΒ૬ஊ

    ɹɹɹɹɹʮ͜͏͍͏ҙਤͰ͜͜ʹॻ͜͏ͱࢥ͏ʂͲ͏ࢥ͏ʁʯΛ૬ஊ͢ΔSlackνϟϯωϧ ʹ ϨϏϡʔ׆ੑԽ

    Ͳ͜ʹͲͷυΩϡϝϯτ͕͋Δ΂͖͔Λ

    ίʔσΟϯάʹྫ͑ͯձ࿩͢Δ

    ↓

    ߟ͑ํ΍࡞ۀͷਐΊํʹ΋౰ͯ͸·Δ
    IUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG

    View Slide


  65. ● Ϣʔεέʔε෼ੳ

    ● ϦϑΝΫλϦϯά

    ● ϖΞϓϩάϥϛϯά

    ● Ϟϒϓϩάϥϛϯά

    ● όʔδϣϯ؅ཧ


    ɹυΩϡϝϯτΛίʔυͷΑ͏ʹѻ͏16ͷύλʔϯ (Document Design Pattern)

    ● ΞʔΩςΫτνʔϜ

    ● ίϯ΢ΣΠͷ๏ଇ

    ମ੍ͷύλʔϯ

    ● ٕज़తෛ࠴

    ● ϙʔτϑΥϦΦ

    ● ίʔσΟϯάΛଅ͢

    ● ίʔυϨϏϡʔ

    ● ϘʔΠεΧ΢τ

    ● Rule of Three
    จԽͷύλʔϯ

    ● MVCϞσϧ

    ● GoFσβΠϯύλʔϯ

    ● ܧଓతσϦόϦʔ /

    ΠςϨʔγϣϯ
    ߏ੒ͷύλʔϯ ࡞ۀͷύλʔϯ
    ˞ମ੍΍จԽ͸σβΠϯʢઃܭʣʹӨڹΛ༩͑ΔͷͰσβΠϯύλʔϯʹؚΊ͍ͯ·͢
    ࢀরʰDevOpsͱυΩϡϝϯτσβΠϯύλʔϯʱ http://yuzutas0.hatenablog.com/entry/2017/07/06/083000

    View Slide


  66. ɹ৘ใͷΞΫηγϏϦςΟ

    View Slide

  67. 1. എܠɾ՝୊


    2. վળ׆ಈ

    ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ


    3. ৼΓฦΓ

    ɹΞδΣϯμ

    View Slide

  68. ɹDev&OpsͰੜͨ͡௧Έ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ

    View Slide

  69. ɹϘτϧωοΫʁ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ
    ݁Ռతʹྑ͘ͳΔ෦෼ͳͷͰ
    ௚઀ͷΞϓϩʔνͳ͠
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    ඼࣭ྼԽ

    View Slide

  70. 1. എܠɾ՝୊


    2. վળ׆ಈ

    ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ


    3. ৼΓฦΓ

    ɹΞδΣϯμ

    View Slide

  71. ● ։ൃɾӡ༻νʔϜΛཱͯ௚͢͜ͱ
    ● ͞ΒͳΔ੒௕ͷ౔୆Λߏங͢Δ͜ͱ

    ɹϛογϣϯ

    View Slide

  72. ɹDev&OpsͰੜͨ͡௧Έ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ

    View Slide

  73. ɹ௧ΈΛ཈੍͢Δ

    ػೳෆશͷѱ॥؀
    ϓϨογϟʔ → “୲౰ऀͷ੹೚”

    ໨ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Ε͹
    ޓ͍ͷ࢓ࣄΛ஌Βͳ͍

    αϙʔτɾϨϏϡʔͰ͖ͳ͍

    ୲౰ऀ͚ͩͰࣗݾ׬݁
    ૝ఆ֎ͷ࢓༷

    ߟྀෆ଍ͷ։ൃ

    ͦͷ৔྇͗ͷӡ༻
    γεςϜো֐ͷଟൃ

    ػೳ௥Ճͷ஗Ԇ

    ਂ໷ରԠɾٳ೔ग़ࣾͷৗଶԽ

    “0→1” ͷ࣌ݶര஄

    ஌ࣝܧঝͳ͖νʔϜ֦େ
    ͞ΒͳΔ඼࣭ѱԽͷݒ೦
    τϥϒϧ
    ർฐ
    ہॴ࠷ద
    ඼࣭ྼԽ
    αʔϏεϨϕϧ
    ηϨϞχʔ
    όϦϡʔετϦʔϜ
    υΩϡϝϯτ

    View Slide

  74. ɹάϩʔεΛ࣋ଓՄೳʹ͢Δ޷॥؀

    Dev ❤ Ops

    “0→1” ͷ࣌ݶര஄

    νʔϜ֦େ΁ͷ४උ
    ஌ࣝͷܧঝ

    γεςϜো֐: 0.5݅/݄ʹݮগ

    ܰඍͳෆ۩߹: ਂ໷ٳ೔ରԠ͸0ʹ
    ҆ఆԽ

    ηϨϞχʔʹΑΔݕࠪͱదԠ

    VSM/υΩϡϝϯτʹΑΔۀ຿ܕԽ
    ՄࢹԽ

    ୲౰֎ϝϯόʔ͕ॿݴɾαϙʔτ

    ࣄલʹ໰୊఺Λݕ஌→඼࣭༧๷
    શମ࠷ద
    ঃʑʹݮΔ

    View Slide

  75. ɹ৽نࢀըऀͷ੠ @KPTͰͷձ࿩

    Կ͔ฉ͍ͨΒશ෦ʮܾ·͍ͬͯͳ͍ʯ

    ͜ΜͳʹԿ΋ܾ·͍ͬͯͳ͍ݱ৔͸ॳΊͯ
    υΩϡϝϯτ΍αϙʔτ͕ॆ࣮͍ͯͨ͠

    ͜ΜͳʹεϜʔζʹ্ཱ͕ͪΕͨݱ৔͸ॳΊͯ
    4Q Joinϝϯόʔ 1Q Joinϝϯόʔ

    View Slide

  76. 1. ૣ͍ஈ֊Ͱ༏लͳएखࣾһΛԿ໊͔ଞ෦ॺ͔ΒҾ͖ൈ͍ͨ

    2. ൑அج४ͱͨ͠ਓࡐཁ݅ = അྗ͕͋Δ͜ͱ

    ɹ ● ໰୊ఏىɾվળਪਐͰ͖Δࣗൃੑɹ͜ͷΞαΠϯ͸ਪਐ໾Λ૿΍ͨ͢ΊͷଧͪखͳͷͰ

    ɹ ● ৬ೳԣஅࢤ޲ɹτϥϒϧ͸ԣஅՕॴͰى͖ΔͨΊʢྫɿiOSͱWebAPIΛ྆ํݟΔඞཁ͕͋Δʣ
    ɹ ● Կ͔͠Β1ͭͷݴޠɾFWͷۀ຿ར༻ܦݧɹ1ͭεΩϧͷϕʔε͕͋Ε͹ଞͷεΩϧ͸ֶ΂ΔͨΊ

    ɹ ● ιʔείʔυʹ৮Εͣ͘͢Ϳ͍ͬͯΔ͜ͱɹݏͰ΋ຖ೔ιʔείʔυΛಡΈॻ͖Ͱ͖Δमཏ৔ΛఏڙͰ͖ΔΑʂ

    ʮՖܗ෦ॺɾՖܗۀ຿Ͱ͸ͳ͍ʯʮ্͕٧·͍ͬͯΔʯͳͲͷཧ༝Ͱ֘౰͢Δएख͸ଟ͍ͩΖ͏ͱ͍͏ൃ૝
    ϝϯόʔͷҰһͱͯ͠

    ޷॥؀΁ͷγϑτΛܦݧ
    Qຖͷମ੍֦େʹ߹Θͤ

    ͞ΒʹνʔϜΛ෼ׂ
    ֤νʔϜϦʔμʔͱͯ͠

    ਪਐ໾ʹͳͬͯ΋Β͏
    ɹεέʔϧʹ޲͚ͨਪਐ໾

    View Slide

  77. ɹ޷॥؀Λճͨ͢Ίʹඅ΍ͨ͠ίετ


    ݱ৔ϝϯόʔͷίϛϡχέʔγϣϯίετΛେ෯ʹඅ΍ͨ͠

    ɹ ● ୹ظతʹ͸σϦόϦʔʹϚΠφεӨڹʢʹݟ͑Δɿલ޻ఔͷ඼࣭୲อͰ݁Ռతʹϓϥεʣ

    ɹ ● ͲͷΈͪѱ॥؀ΛࢭΊΔͨΊʹඞཁͳίετͩͱ্Ґ૊৫ɾൃදऀ͸ೝ͍ࣝͯ͠Δ


    εςʔΫϗϧμʔશମͱͷѲΓ͸ऑ͔ͬͨ
    ɹ ● ঢ়گ͕ঢ়گͳͷͰʮνʔϜ಺ͷ՝୊Λ੾Γ։͘͜ͱʯʮ্Ґ૊৫ʹ఻ୡ͢Δ͜ͱʯ͕࠷༏ઌ

    ɹ ● ֎͔Βͷݟ͑ํ͸ʮো֐Λग़ͨ͠ɾ։ൃ͕஗Ε͍ͯΔͷʹɺखΛࢭΊͯϫʔΫγϣοϓΛ࢝ΊΔνʔϜʯ

    ɹ ● ݏຯΛݴΘΕͨͷ͸1౓΍2౓Ͱ͸ͳ͍ → ͜ͷѹྗ͕ѱ॥؀ͷਅҼ → कΓखͱͯ͠ͷΤϯδχΞ෦ॺͷҙٛ


    ্Ґ૊৫ˍଞ෦ॺϝϯόʹཪͰϑΥϩʔ͍ͨͩ͘ܗͱͳͬͨ
    ɹ ● ಛʹʮ։ൃܦݧ͋ΓʯʮϏδωε෦໳ʹॴଐʯͷϝϯόʔ͕؇িࡐͱͳͬͨͷ͕େ͖͍

    View Slide

  78. ɹ͞ΒͳΔ੒௕ͷͨΊʹ

    Ծઆ ऩӹ
    Dev&Ops࠷దԽͷ༨஍

    ྫɿνʔϜͷΫϩεϑΝϯΫγϣφϧԽ
    γεςϜ؍఺Ͱͷ౔୆ߏங

    ྫɿա৒ͳٕज़తෛ࠴Λ༧๷͢Δ࢓૊Έ
    Biz Dev Ops
    ɹBizΛ౿·͑ͨ

    ɹ શମ࠷దԽ

    ɹ ● γεςϜ

    ɹ ● ϓϩηε

    ɹ ● ࢪࡦɾཁ݅

    View Slide

  79. ɹBizDevOpsʹ޲͚ͨऔΓ૊Έ
    “෦ॺɾ৬຿Λ௒͑ͨϝτϦΫεͷڞ༗” ͱ “σʔλ׆༻จԽͷ૷ண”

    ࢀরʰJupyterͱBigQueryʹΑΔσʔλ෼ੳج൫ͷDevOpsʱ http://yuzutas0.hatenablog.com/entry/2017/09/12/203000
    σʔλج൫

    View Slide

  80. ɹϏδωεՁ஋ʹ޲͚ͨվળ

    View Slide

  81. ࠷ޙʹ

    View Slide

  82. ɹProduct Growth
    εϐʔυײΛେࣄʹ͢Δ
    ● ര஄Λආ͚ͳ͕Βલʹ૸Γଓ͚Δͱ͍͏͜ͱ

    ● ര஄ʹࣗ෼͔ΒಥͬࠐΉ͜ͱͰ͸ͳ͍ → ෛই͢Δ΄Ͳ஗͘ͳΔ
    ΤϯδχΞ͔ͩΒͦ͜ؾ෇͚Δ͜ͱ
    ● ʮ͜͜͸যͬͯ͸μϝͩʂʯʮര஄ͩʂஸೡʹਐΉͧʂʯͱ͍͏৔໘

    ● खΛಈཱ͔͢৔ʢ͔ͭͯखΛಈ͔ͨ͠ܦݧऀʣͰͳ͍ͱ෼͔Βͳ͍

    ● ٸ੒௕ϓϩμΫτͰ͸ͦͷ৔໘͕ͻͨ͢Βଓ͘

    IUUQTXXXQFYFMTDPNQIPUPDBSFGSFFDIJMEDIJMEIPPEDPVOUSZTJEF

    View Slide

  83. ɹٯઆͷΤϯδχΞϦϯά
    ϕετϓϥΫςΟε͸൓௚ײత

    ● ΫΦϦςΟΛߴΊΔͨΊʹɺଈ࣌ରԠΛݮΒ͢
    ● ΞδϦςΟΛߴΊΔͨΊʹɺखΛࢭΊͯ࿩͠߹͏
    ߟ͑Δͱ౰ͨΓલͷ͜ͱ
    ● যͬͨ··࢓ࣄΛଓ্͚ͯख͘ߦ͘Θ͚͕ͳ͍
    ɹɹ৸ෆ଍ͷૢॎ͕࢜୲౰͢Δඈߦػʹ৐Γ͍͔ͨʁɹύχοΫঢ়ଶͷ֎Պҩʹखज़͞Ε͍͔ͨʁ

    ɹɹάϩʔεϑΣʔζ͔ͩΒͱ͍ͬͯѱ॥؀Λ์ஔ͍͍ͯ͠ཧ༝ʹ͸ͳΒͳ͍

    ● νʔϜʹ͸ಁ໌ੑͱݕࠪͱదԠ͕ඞཁ

    IUUQTXXXQFYFMTDPNQIPUPBEVMUBEWFOUVSFCBDLQBDLEBZMJHIU

    View Slide

  84. ʮ͜Ε͓͔ͬͯ͘͠ͳ͍Ͱ͔͢ʁʯ

    ୭͔͕੠Λ্͛Δ͜ͱ͕ɺվળͷୈҰา
    ʮ͜ΕͬͯͲ͏ͳ͍ͬͯ·͔͢ʁʯ

    ୭͔ʹ੠Λֻ͚Δ͜ͱ͕ɺಁ໌ੑͷୈҰา
    νʔϜͷҰһͷ໾ׂͰ͢

    ࠓ͜͜ʹ͍Δࢲͨͪࣗ਎ͷ໾ׂͰ͢

    View Slide

  85. νʔϜͱͯ͠ϓϩηεΛվળ͠Α͏

    νʔϜͱͯ͠γεςϜΛվྑ͠Α͏

    νʔϜͱͯ͠ϓϩμΫτΛ੒௕ͤ͞Α͏

    View Slide

  86. νʔϜͷ҆ఆͷ্ʹͦ͜
    ܧଓతͳސ٬Ձ஋ͷఏڙ͕

    ʢͦͷ݁Ռͱͯ͠Ϗδωεͷ੒௕͕ʣ

    ࣮ݱͰ͖Δͷͩͱࢥ͍ͬͯ·͢

    View Slide

  87. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    presented by @yuzutas0

    IUUQTXXXQFYFMTDPNQIPUPDPMMFBHVFTDPPQFSBUJPOpTUCVNQpTUT

    View Slide

  88. - ࢼߦࡨޡɾࣦഊࣄྫ
    - ࢀߟࢿྉ
    - Special Thanks

    ɹAppendix

    View Slide

  89. ɹվળ໾͕࠷΋ίʔυΛॻ͍ͯ͠·ͬͨ
    ໷தʹ1ਓͰίʔσΟϯά͢ΔӋ໨ʹͳͬͨ
    ● ࠷ॳͷࠒ͸ϝϯόʔ͸ࣗ਎ͷ୲౰ൣғ͔͠෼͔Βͳ͔ͬͨ

    ● αϒγεςϜԣஅͰઃܭɾ࣮૷Ͱ͖Δਓࡐ͕͍ͳ͍ঢ়ଶ

    എதΛݟͤΔ͜ͱͷޫͱӄ

    ● ண೚ૣʑʹ೉қ౓ͷߴ͍ઃܭɾ࣮૷Λ΍ͬͯͷ͚͔ͨΒͦ͜ɺϝϯόʔͷ৴པΛಘͨଆ໘΋͋Δ

    ● վળʹྗΛׂ͚ͣɺਓ͸ҭͨͣɺνʔϜ͕ػೳ͠ͳ͍ʢϓϨΠϯάϚωʔδϟʔͷΞϯνύλʔϯʣ
    ࣗ૸Λଅͯ͠ঃʑʹ݈શԽ
    ● एखࣾһͷҾ͖ൈ͖ ʴ ձ࿩ͷ׆ੑԽ ʴ ܧଓతͳ࡞ۀ಺༰ͷϑΟʔυόοΫʢि࣍ϨϏϡʔʣ

    View Slide

  90. ɹBizDevOpsͷଅਐ - ૣ͗ͨ͢ࢪࡦ
    1. νʔϜϏδϣϯɺΫϨυɺ։ൃKPIͷࡦఆ
    ● Ծઆɿ໨ඪ૾΍ج४͕͋Ε͹վળͷํ޲ੑ͕ݟ͑ͯϝϯόʔ͕ࣗൃతʹಈ͚Δ

    ● ݁ՌɿϚΠφεΛθϩʹ͍ͯ͠Δ్தͳͷͰɺকདྷͷֆۭࣄɾݱ࣮ຯ͕ͳ͍៉ྷࣄ
    2. Ϗδωεߏ଄ɾঢ়گʹ͍ͭͯͷษڧձ
    ● Ծઆɿ୲౰֎ͷۀ຿΍෼໺ͷ࿩Λฉ͘͜ͱͰBiz΁ͷછΈग़͠Λޙԡ͠Ͱ͖Δ

    ● ݁Ռɿ໘നͦ͏͚ͩͲࠓ͸ͦΕͲ͜ΖͰ͸ͳ͍ͷͰϑϥετϨʔγϣϯ
    → ࠷ۙʹͳͬͯ࠶νϟϨϯδ
    ● ʮ2าઌΛݟਾ্͑ͨͰɺ1าઌΛଅ͘͢Β͍͕ͪΐ͏Ͳ͍͍ʯ by ϝϯλʔ

    7JTJPO
    .JTTJPO
    7BMVF

    View Slide

  91. ɹࢀߟࢿྉ
    ॻ੶ɾPDF
    ʰϦʔϯ։ൃͷຊ࣭ - ιϑτ΢ΤΞ։ൃʹ׆͔͢7ͭͷݪଇʱɹʰεΫϥϜΨΠυ - εΫϥϜ׬શΨΠυ: ήʔϜͷϧʔϧʱ

    ʰ૊৫ύλʔϯ - νʔϜͷ੒௕ʹΑΓΞδϟΠϧιϑτ΢ΣΞ։ൃͷมֵΛଅ͢ʱʰΤΫετϦʔϜϓϩάϥϛϯά - Embrace Changeʱ

    ʰ΢ΣϒΦϖϨʔγϣϯ - αΠτӡ༻؅ཧͷ࣮ફςΫχοΫʱʰڧ͍ձࣾ͸͜͏ͯ͠࡞ΒΕΔʂ - ITIL࣮ફͷమଇʱ

    εϥΠυ

    ● ݁ՌతʹεΫϥϜʹͳͬͯΔʂͳͷ͕͍͍ͱࢥ͏ʂɹhttps://speakerdeck.com/bufferings/jie-guo-de-nisukuramuninatuteru-nafalsegaiitosi-u-number-rsgt2017

    ● ޮՌతͳࣗಇԽΛ໨ࢦ͢ʂ Value Stream Mapping ࣮ફϫʔΫγϣοϓ https://docs.com/ushio-tsuyoshi/8263
    ● ৽نࣄۀ͕ରቂ͢Δݱ࣮͔ΒΤϯδχΞϦϯάΛ၆ᛌ͢Δ https://www.slideshare.net/i2key/devsumib

    ● αʔϏεϨϕϧɿઃܭͱӡ༻ͷϓϥΫςΟε http://yuzutas0.hatenablog.com/entry/2017/05/23/073000
    ● ΤεΧϨΛࢧ͑Δٕज़ - ΞδϟΠϧͳใ࿈૬ͱ৘ใྲྀ௨ http://yuzutas0.hatenablog.com/entry/2017/08/10/090000

    ● DevOpsͱυΩϡϝϯτσβΠϯύλʔϯ http://yuzutas0.hatenablog.com/entry/2017/07/06/083000

    ● JupyterͱBigQueryʹΑΔσʔλ෼ੳج൫ͷDevOps http://yuzutas0.hatenablog.com/entry/2017/09/12/203000

    IUUQFDOJLLFJCQDPKQJUFNCPPLT1IUNM

    View Slide

  92. ɹSpecial Thanks
    ൴Βͷ৺ڧ͍ࢧ͕͔͑͋ͬͨΒͦ͜ɺνʔϜཱͯ௚͠ʹઐ೦͢Δ͜ͱ͕Ͱ͖·ͨ͠ɻ

    ຖ೔ͷ ٽ͖ࣄ ૬ஊʹ೪Γڧ͘ରԠ͠ଓ͚ͯͩͬͨ͘͜͞ͱΛײँ͓ͯ͠Γ·͢ɻ

    Satoshi UejimaɹɹࢸΒͳ͔ͬͨ఺ΛཪͰϑΥϩʔ͍͖ͨͩ·ͨ͠ɻʮ΋͏ແཧͬ͢ʯͷ౓ʹɺ

    ɹɹɹɹɹɹɹɹɹ ݟ͍ۤ͠ݴ͍༁ͷ1ͭ1ͭͱஸೡʹ޲͖߹ͬͯ͘Εͨ࠷ߴͷ্࢘Ͱͨ͠ɻ

    Itsuki KurodaɹɹɹνʔϜͷ࣮৘΍จ຺Λ౿·্͑ͨͰɺվળͷଧͪखɾਐΊํʹ͍ͭͯ

    ɹɹɹɹɹɹɹɹɹ ຊ࣭త͔ͭੜ࢈తͳΞυόΠεΛ͍͖ͨͩ·ͨ͠ɻ

    Kenichi Takahashiɹ૊৫໘Ͱͷ੯͠Έͳ͍όοΫΞοϓΛ௨ͯ͠

    ɹɹɹɹɹɹɹɹɹ ج൫੔උ΍Ҋ݅։ൃͷيಓ͕৐ΔΑ͏ʹαϙʔτ͍͖ͨͩ·ͨ͠ɻ

    View Slide