SPI Japan 2017の発表資料です。 refs. https://yuzutas0.hatenablog.com/entry/2017/10/16/093000
Rebuild Team ٸϓϩμΫτͷDev&OpsͰੜ͡Δѱ॥ͱͦͷղܾࡦ 2017-10-13 (Fri) SPI Japan 2017presented by @yuzutas0IUUQTXXXQFYFMTDPNQIPUPDPMMFBHVFTDPPQFSBUJPOpTUCVNQpTUT
View Slide
90ຕ / 20min ͲΜͲΜ͍͖·͢
ɹSho Yokoyama (@yuzutas0)ɹɹ ● ϦΫϧʔτςΫϊϩδʔζ● ೝఆεΫϥϜϚελʔ● ΤϯδχΞνʔϜͷ্ཱͪ͛ɾཱͯ͠
ɹຊͷ༰“ٸʹ͏௧Έ” Λ1ͭ1ͭղফͯ͠νʔϜΛ҆ఆԽͨ͠ࣄྫΛڞ༗͠·͢
ɹఆ͢ΔରٸϑΣʔζͷϓϩμΫτ։ൃɾӡ༻ʹؔ৺ͷ͋Δ● ιϑτΣΞΤϯδχΞ ● νʔϜϦʔμʔ ● ৫Ϛωʔδϟʔ
1. എܠɾ՝ 2. վળ׆ಈ ᶃαʔϏεϨϕϧ ᶄηϨϞχʔ ᶅόϦϡʔετϦʔϜ ᶆυΩϡϝϯτ 3. ৼΓฦΓɹΞδΣϯμ
ɹ௧ʹۤ͠ΉϓϩμΫτ ձࣾͷ࣍Λ୲͏ࣄۀͱͯ͠ͷظνʔϜཱͯ͠ͷඞཁੑ ϝϯόʔ2ഒ/Q εέʔϧظച্3ഒ/ άϩʔεো2݅/Ӧۀ ةػతঢ়گ
ɹ“0→1” ͕ੜΜͩෛ࠴ώοτ͢Δ͔ෆ֬ఆͰίετΛׂ͚ͳ͔ͬͨ֎ʹؙ͛γεςϜ࣭γεςϜͷݶքϐʔΫ࣌ؒଳͷԠ͕20secࢢ֦େϢʔβʔ૿Ճ
ɹ“1→10” ʹඋ͑ͨ࠶ߏஙϐʔΫ࣌ؒଳͷϨεϙϯελΠϜΛ0.05secʹ400ഒͷվળɹɹɹɹɹɹɹɹɹɹɹɹΦϯϓϨϨϯμϦϯάHTMLͱ jQueryͷଟॏಡࠐ → VirtualDOMɾSPA ʢඇಉظϕʔεͷ௨৴ʣ֤αʔόͷεέʔϧΞοϓˍεέʔϧΞτDBΩϟογϡ → KVSҠϚϧνϚελߏʹWriteࢄඇਖ਼نԽ&Ϛελςʔϒϧഇࢭ ʹJoinεΩϟϯΛݮϙʔϦϯά࠷దԽΤϯυϙΠϯτΛࢄ ϩδοΫશॻ͖͠JPA؆қੜΫΤϦ→ ࣗલSQLͰ࠷దԽ
ɹ“1→10” ʹඋ͑ͨԽαϒγεAͷ࠶ߏஙՔಇதγεςϜͷ อकӡ༻αϒγεAͷ ड͚͠ʴαϒγεAͷ ػೳՃΛ࠶։ʴαϒγεBͷ ػೳՃΛ࠶։αϒγεBͷ࠶ߏங αϒγεCͷ࠶ߏஙαϒγεBͷ ड͚͠γεςϜ࠶ߏஙνʔϜ։ൃˍӡ༻νʔϜ ػೳՃΛҰ࣌ఀࢭ͢Δܭը͕ͩͬͨࣄۀ෦ͷཁٻͰ࣮ࢪ γεςϜ෦ͷϚωδϝϯτ͕ະհࡏͷ··Γ࢝Ίͨ֎Λഇࢭ
ɹDev&OpsͰੜͨ͡௧Έػೳෆશͷѱ॥ϓϨογϟʔ → “୲ऀͷ” ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Εޓ͍ͷࣄΛΒͳ͍ αϙʔτɾϨϏϡʔͰ͖ͳ͍ ୲ऀ͚ͩͰࣗݾ݁ఆ֎ͷ༷ ߟྀෆͷ։ൃ ͦͷ྇͗ͷӡ༻γεςϜোͷଟൃ ػೳՃͷԆ ਂରԠɾٳग़ࣾͷৗଶԽ “0→1” ͷ࣌ݶര ࣝܧঝͳ͖νʔϜ֦େ͞ΒͳΔ࣭ѱԽͷݒ೦τϥϒϧർฐہॴ࠷ద࣭ྼԽ
ɹϛογϣϯ● ։ൃɾӡ༻νʔϜΛཱͯ͢͜ͱ● ͞ΒͳΔͷΛߏங͢Δ͜ͱ
γεςϜো͕Ӧۀ͋ͨΓ2݅ൃੜ͢Δঢ়گ͕1ϲ݄ଓ͍ͨ → શνʔϜͷ͋ΒΏΔ։ൃΛࢭΊͯ੩Խঃʑʹऩଋ͕ͨ͠● ߃ٱରԠਃ͠ૹΓ ● िʹԿճ͔࣌ݶര͕രൃ ● ϦϦʔεͷʹ৽ͨͳো͕ൃੜɹͳʹͱ͋ΕՐΛফ͢https://www.pexels.com/photo/water-outside-fire-hose-69934/
ɹѱ॥Λଧ։͢Δվળ׆ಈվળαΠΫϧΛͻͨ͢Βճ͠ଓ͚ͨݱঢ়ͷՄࢹԽ ಁ໌ੑϘτϧωοΫͷಛఆ ݕࠪϓϥΫςΟεͷద༻ దԠ
ɹ˞ٕज़؍ίπίπվળ͠ͳ͕Βίʔυ࣭ͷ୲อ ϒϥϯνઓུͷಋೖQAࢧԉɾςετڧԽ ϦϦʔε࡞ۀͷࣗಈԽཁ݅ϑΥʔϚοτඋςετ͚ࢿཧIUUQTPOJDTPGUTPMVUJPOTJORVBMJUZBTTVSBODFBOEUFTUJOHIUNMɹɹɹIUUQOWJFDPNQPTUTBTVDDFTTGVMHJUCSBODIJOHNPEFM
݁Ռతʹʮݱ͚ͩͰແཧʹղܾ͠ͳ͍ʯʮ૬ஊ͢ΕղܾͰ͖Δ͜ͱ͋Δʯͷϝοηʔδʹͳͬͨɹ˞֎෦ϦιʔεͰෆΛิ͍ͳ͕ΒࢿɿϗϫΠτϘʔυϞχλʔ ࣝɿಛఆͷઐՈαϙʔτ
ɹϘτϧωοΫػೳෆશͷѱ॥ϓϨογϟʔ → “୲ऀͷ” ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Εޓ͍ͷࣄΛΒͳ͍ αϙʔτɾϨϏϡʔͰ͖ͳ͍ ୲ऀ͚ͩͰࣗݾ݁ఆ֎ͷ༷ ߟྀෆͷ։ൃ ͦͷ྇͗ͷӡ༻γεςϜোͷଟൃ ػೳՃͷԆ ਂରԠɾٳग़ࣾͷৗଶԽ “0→1” ͷ࣌ݶര ࣝܧঝͳ͖νʔϜ֦େ͞ΒͳΔ࣭ѱԽͷݒ೦τϥϒϧർฐہॴ࠷ద࣭ྼԽγεςϜোͷଟൃ ػೳՃͷԆ ਂରԠɾٳग़ࣾͷৗଶԽ “0→1” ͷ࣌ݶരτϥϒϧମྗɾϝϯλϧʹܸ͗Α͏͕ͳ͍
ɹࠞཚͨ͠··োʹରቂ͢Δ
● ܰඍͳෆ۩߹ͰͷΦϯίʔϧۀରԠ͕ൃੜ͍ͯͨ͠ ● ෆదͳରԠʹΑΔೋ࣍ࡂ͕গͳ͔Βͣൃੜ͍ͯͨ͠ɹোͷੳ͔Βணख
● ࣭ɾোରԠʹ͓͚Δؔऀͷઢ߹Θͤ● ఆٛͦͷͷ < “ఆظతͳձ” Λ௨ͨ͡ڞ௨ೝࣝͷৢɹαʔϏεϨϕϧΛఆٛ
ɹͲͷ͘Β͍ ”͍” Ϩϕϧ͔SLAػೳηΩϡϦςΟɾ๏ίΞػೳαϒػೳඇػೳ৴པੑɾՄ༻ੑੑೳɾΩϟύγςΟOLAʴ Өڹൣғར༻ऀɾγΣΞ࣌ؒଳαϙʔτڥʹ ରԠଈ࣌ରԠ - ϕετΤϑΥʔτ༏ઌରԠʢʼػೳՃʣ௨ৗରԠʢʹػೳՃʣӡ༻ఆظతͳධՁ → ࠶ൃࢭ + ࣄલ༧ αʔϏεϨϕϧఆٛࣗମͷݟ͠ࢀরʰαʔϏεϨϕϧɿઃܭͱӡ༻ͷϓϥΫςΟεʱ http://yuzutas0.hatenablog.com/entry/2017/05/23/073000
ಋೖ࣌ʹաڈࣄྫΛ౿·͑ͨγϛϡϨʔγϣϯͰઆ໌ ྫྷ੩ʹ͢ͱʮ͜ͷϨϕϧͷෆ۩߹Ͱʯʮ௨͠ͷରԠΛͯ͠ʯ ʮೋ࣍ࡂ͕ى͖ͨ͜ͱʯͷ೦͕͞ු͖ூΓʹͳΔʢஅج४ͷඞཁੑʣɹʮ͜ΕΛܾΊͯԿͷҙຯ͕͋Δͷʁʯ͜ͷτϥϒϧͩͱ ͜ͷରԠʹͳΔ͜ͷτϥϒϧͩͱ ͜ͷରԠʹͳΔ͜ͷτϥϒϧͩͱ ͜ͷରԠʹͳΔ
αʔϏεϨϕϧΛஅͷدΔลͱͯ͠গͣͭ͠ఆணͤ͞Δ ɹײযΓͰҙࢥܾఆ͕ͳ͞Ε͕ͪɹʮαʔϏεϨϕϧఆٛͩͱ ɹɹ͜ͷΑ͏ʹஅͰ͖·͢Ͷʯҙࢥܾఆͷʹډ߹ΘͤΔ γεςϜ෦ͷ৬ऀΛঌש͢Δτϥϒϧൃੜ࣌ ϝϯόʔʹΛֻ͚ͯΒ͏৺ཧత҆શੑ ʮ૬ஊ͢ΕؒରԠͤͣʹࡁΉʯϝϯόʔ͕ҰํతʹෆརӹΛ ඃΒͳ͍Α͏ʹίϛϡχέʔγϣϯ
ܗ֚ԽɾߗԽΛ͙ͨΊͷӡ༻ઃܭ ● ݄࣍ͷৼΓฦΓͰఆٛࣗମΛՃචɾमਖ਼ ● աେɾաগͳΦϖϨʔγϣϯϨϕϧͰରԠ → ͔࣍ΒదͳϨϕϧͱ͢Δձ● Ξοϓσʔτ͍͢͠Α͏ʹίϥϘϨʔγϣϯπʔϧʢConfluenceʣʹهࡌɹॳߟྀ֎ͩͬͨ৽؍͕ग़Δ
ɹదͳϨϕϧͰ࣭ʹରቂ͢Δ
ɹϘτϧωοΫػೳෆશͷѱ॥ϓϨογϟʔ → “୲ऀͷ” ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Εޓ͍ͷࣄΛΒͳ͍ αϙʔτɾϨϏϡʔͰ͖ͳ͍ ୲ऀ͚ͩͰࣗݾ݁ఆ֎ͷ༷ ߟྀෆͷ։ൃ ͦͷ྇͗ͷӡ༻γεςϜোͷଟൃ ػೳՃͷԆ ਂରԠɾٳग़ࣾͷৗଶԽ “0→1” ͷ࣌ݶര ࣝܧঝͳ͖νʔϜ֦େ͞ΒͳΔ࣭ѱԽͷݒ೦τϥϒϧർฐہॴ࠷ద࣭ྼԽϓϨογϟʔ → “୲ऀͷ” ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Εർฐ”୲ऀ”ͷ๊͑Δ ՝ΛΓ։͘
ɹ“୲ऀ”͚͕ͩ՝ʹରቂ͢Δ
ɹ1on1ʹͯώΞϦϯάIUUQTXXXQFYFMTDPNQIPUPBEVMUCFBSECFWFSBHFCMVS
ɹɹɹɹɹ ● ϝϯόʔ͝ͱʹҟͳΔ՝ҙࣝΛ๊͍͑ͯΔɹɹɹɹɹ ● ͦͷ “” Λ͓ޓ͍ʹൃ৴͍͋͑ͯ͠ͳ͍ ɹɹɹɹɹ ● νʔϜͱͯ͠ “” ͷݕɾղܾ͕Ͱ͖͍ͯͳ͍ɹܧଓతͳ՝ͷݕ͕Ͱ͖͍ͯͳ͍[email protected]
●ʮߴ͍༏ઌʯͩΒ͚ͷܭը●ʮߴ͍༏ઌʯͩΒ͚ͷׂΓࠐΈ࡞ۀ ● “୲ऀ” ͕ՔಇΛ૿͢͜ͱͰܭըʹ࣮ଶΛ߹ΘͤΑ͏ͱͨ͠ɹ༏ઌॱҐʹԠͯ͡࡞ۀͰ͖͍ͯͳ͍
νʔϜ෦ͷձΛ׆ੑԽ → ಁ໌ੑΛอͭ → ݕࠪɾదԠͷαΠΫϧΛճ͢ɹεϓϦϯτηϨϞχʔΛ։࠵WhatԿΛ͢Δ͔HowͲ͏ͬͯ͢Δ͔ि࣍ϨϏϡʔ࡞ۀ݁ՌϑΟʔυόοΫσΠϦʔMTG࡞ۀͷ࠶ܭըि࣍ϓϥϯχϯάҊ݅ͷ࠶ܭըϨτϩεϖΫςΟϒϓϩηεͷ࠶ܭըWhatԿΛ͢Δ͔HowͲ͏ͬͯ͢Δ͔
ɹηϨϞχʔʹ͏ΞΠςϜͷඋɹϓϩμΫτόοΫϩά ɹݶΒΕͨਓһͰ༏ઌॱҐʹԠͯ͡࡞ۀ͢ΔΩϡʔɹোϦετ ɹϨτϩεϖΫςΟϒͰՄࢹԽ͞Εͨ՝ɹεϓϦϯτόοΫϩά ɹݱঢ়ͷ࡞ۀਐḿΛՄࢹԽ͢ΔΧϯόϯ
*ྫʮ͋ͷَిͷதͰखॱॻΛ࡞ͬͯϨϏϡʔͰ͖ͨʂೋ࣍ࡂ͕ى͖ͳ͍Α͏ʹಈ͚ͨͷྑ͔ͬͨʂʯɹKPTʹΑΔৼΓฦΓ͔ΒணखKeepݫ͍͠ঢ়گ͔ͩΒͦ͜ൃش͞Εͨ ྑ͍Λ͔ͬ͠Γͱশ͑߹ͬͨ*Problemʢͦͷ্Ͱʣ֤ϝϯόʔ͕ ײ͍ͯ͡Δ՝Λચ͍ग़ͨ͠[email protected]
ɹTryͱͯ͠ϓϥΫςΟεΛঃʑʹಋೖݱ͕ແཧͳ͘ड͚ೖΕΒΕΔॱ൪ͰΞδϟΠϧख๏Λద༻ʢ͍͖ͳΓεΫϥϜͩͱߏ͑ΒΕΔʣ1ʹ͋Ε͜Ε ରԠ͢Δͷແཧͩʂ༏ઌॱҐͷΩϡʔཧ όοΫϩάΛಋೖProblem TryΩϡʔͷݟ͠Λ ͨ͠΄͏͕ྑ͍ͷͰʁݟ͠ػձͱͯ͠ ϓϥϯχϯάձٞΛಋೖProblem TryଞͷҊ݅ΛΒͳ͍ͷͰ αϙʔτͰ͖ͳ͍ʂσΠϦʔMTG ि࣍ϨϏϡʔΛಋೖProblem Try
ɹʮΓํ͕ίϩίϩมΘΔʯϓϥΫςΟεͷద༻͕ٸ͗͢Δͱɺݱͷϝϯόʔ͕뱌Ͱ͖ͳ͍ ● ೲಘͰ͖ΔൣғΛฉ͖ग़͢ → શһ͕ೲಘͰ͖Δ෦͔Βಋೖ● ͜ͷνʔϜʹ·ͩૣ͗ͨ͢ → ʮͬͺΓΊ·͠ΐ͏ʯͰΓ͠● த్ͳద༻Ώ͑ͷProblem͕ڍ͕Δ → TryͰ͞Βʹຊ֨ద༻●ʮࠜຊͷߟ͑ํΛΓ͍ͨʯͱ͍͏ҙݟ → رऀʹରͯ͠ࢀߟਤॻͷҊ
ɹ“ݱͷৼΓฦΓ”Λجʹ্Ґ࿈ܞSlack #kpt ʹߘ ؾ͍͙ͨ͢ڞ༗ߘΛࢀߟʹͯ͠ ϨτϩεϖΫςΟϒTry Λચ͍ग़͢Ϛωδϝϯτձٞ Ͱ ্ҐʹαϚϦʔใࠂͦͷProblem νʔϜͰରॲՄೳ͔ʁYesNoࢀরʰΤεΧϨΛࢧ͑Δٕज़ - ΞδϟΠϧͳใ࿈૬ͱใྲྀ௨ʱ http://yuzutas0.hatenablog.com/entry/2017/08/10/090000Lean Escalation ͷ࠲Έ
ɹνʔϜͱͯ͠՝ͱରቂ͢Δ
ɹϘτϧωοΫػೳෆશͷѱ॥ϓϨογϟʔ → “୲ऀͷ” ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Εޓ͍ͷࣄΛΒͳ͍ αϙʔτɾϨϏϡʔͰ͖ͳ͍ ୲ऀ͚ͩͰࣗݾ݁ఆ֎ͷ༷ ߟྀෆͷ։ൃ ͦͷ྇͗ͷӡ༻γεςϜোͷଟൃ ػೳՃͷԆ ਂରԠɾٳग़ࣾͷৗଶԽ “0→1” ͷ࣌ݶര ࣝܧঝͳ͖νʔϜ֦େ͞ΒͳΔ࣭ѱԽͷݒ೦τϥϒϧർฐہॴ࠷ద࣭ྼԽKPTΛ௨ͯ͠՝͕ු্ʢνʔϜͷॏ՝ͱͯ͠߹ҙܗʣޓ͍ͷࣄΛΒͳ͍ αϙʔτɾϨϏϡʔͰ͖ͳ͍ ୲ऀ͚ͩͰࣗݾ݁ہॴ࠷ద
● શମ૾Λશ͘Βͳ͍● શମ૾ʹΞΫηεͰ͖ͳ͍ɹہॴ࠷దͷ༠Ҽ
͋ΒΏΔ։ൃɾӡ༻ۀͷɺ͋ΒΏΔఔʹ ͋ΒΏΔProblem͕Ϛοϐϯά͞Εͨཁٻཧ ཁ݅ఆٛ ઃܭ ࢼݧ ग़ՙ ӡ༻ProblemProblemProblemProblemProblemProblemProblemProblemProblemProblemProblemProblemProblemɹʮԿͱͳ͘ʯͷ࡞ۀͩΒ͚
Tryͷ༏ઌॱҐܾΊ૬ޓαϙʔτ͕ࠔ● ୲ऀҎ֎ʢ୲ऀࣗͰ͑͞ʣ֤ʑͷۀϑϩʔΛѲͰ͖ͳ͍● ۀ༰ͷͲ͜ʹɺͲͷΑ͏ͳϜμɾϜϥɾϜϦ͕ੜ͡Δ͔ݟ͑ͳ͍ɹશମ૾͕ෆಁ໌
࡞ۀ࣌ؒɾͪ࣌ؒखΓͷ࣮ଶΛચ͍ग़͢ ϜμɾϜϥɾϜϦ͕ੜ͡ΔՕॴΛಛఆɹόϦϡʔετϦʔϜϚοϓʢVSMʣΛ࡞Ҿ༻ݩʮຊͷDevOpsมֵΛଅਐ͢ΔόϦϡʔετϦʔϜϚοϐϯάʯ http://gihyo.jp/dev/column/01/devops/2017/value-stream-mapping
ݟ͑ʹ͍͘෦ʹ͕ͦ͜જΉ ʹ શۀΛՄࢹԽ͢Δ͜ͱ͕େɹ֤ۀ͝ͱʹผͷVSMΛ࡞ΔػೳՃͷ։ൃ γεςϜোରԠΧελϚʔ͔Βͷ ͍߹ΘͤରԠଞ෦ॺ͔Βͷ ࡞ۀґཔରԠγεςϜอकۀ ྫɿEOSLରԠγεςϜӡ༻ۀ ྫɿΩϟύγςΟܭଌhttp://gihyo.jp/dev/column/01/devops/2017/value-stream-mapping
1. ೲಘͯ͠Β͏ ● ҙࣝɾଧͪखΛઆ໌ ● ࣾͰͷVSM׆༻ࣄྫΛհ 2. શһͰVSMΛ࡞ ● ֤୲ऀ͕આ໌͠ͳ͕ΒۀͷྲྀΕΛॻ͘ ● “ϜμɾϜϥɾϜϦ” ”ϝϯόʔؒͷೝࣝͷࠩ” ΛՄࢹԽ ● ·͞ʹਐߦதͩͬͨҊ݅ͷϦεΫΛͦͷͰݕͰ͖ͨʢޭମݧʣɹશһࢀՃܕϫʔΫγϣοϓ͔Β࢝ΊΔ࣮Ԛ͍Ͱ͢ʜʜ
ɹʮ߆ଋ͕࣌ؒ͗͢ΔʯϫʔΫγϣοϓͰ શһ͕ཧղ͍͢͠ ʮػೳՃʯΛରΓ୲ऀʹ ώΞϦϯάVSMΛ࡞ ʹ՝ͷՄࢹԽ͙͢Ͱ͖ΔՕॴ͔Β ۀϑϩʔΛվળվળޮՌ͕ݟ͑Δʹඞཁੑɾೲಘײ
ɹۀͷશମ૾ΛΔ
վળ׆ಈΛ௨ͯ͠ٸܹʹϧʔϧɾϓϩηε͕ܾ·͍͕ͬͯ͘ ҙࢥܾఆͷεϐʔυʹυΩϡϝϯτԽ͕ؒʹ߹Θͳ͍ɹʮͲ͜ΛݟΕ͔Δʁʯ※ຊߘʹ͓͚ΔʮυΩϡϝϯτʯূɾܖతͰͳ͘ɺۀඪ४Խͷʮ࡞ۀखॱॻʯʮΠϯϑϥڥҰཡʯͱ͍ͬͨͷ
● υΩϡϝϯτԽʴߋ৽͠ଓ͚Δ͜ͱͷॏཁੑKPTͰڧௐ● ʑͷίϛϡχέʔγϣϯͰʮͥͻจॻԽ͍ͯͩ͘͠͞ʯʮߋ৽͍ͯͩ͘͠͞ʯ● ଅਐҊΛืΔ → ϝϯόʔओମͰଅਐbotνέοτӡ༻ͷࢼߦࡨޡ ɹʢҊࣗମଓ͔ͳ͔͕ͬͨϝϯόʔ͕ࣗൃతʹจॻԽ͢ΔΑ͏ʹͳͬͨʣɹνʔϜશһʹਪਐऀͱͯ͠ৼͬͯΒ͏
● ϝϯόʔ͕ओମతʹจॻԽ → ผͷॴʹࣅͨυΩϡϝϯτ͕ॏෳɹ࣮ྫ: A͞Μ͕োΛड͚ͯϦϦʔεखॱॻΛߋ৽ → B͞ΜผͷखॱॻͰಉ͡ϛε → C͞Μ● ໎ͬͨͱ͖ʹɺͲ͜ΛݟΕʢʹͲ͜ʹॻ͚ʣྑ͍͔͔Βͳ͍ɹʮͲΕ͕ਖ਼͍͠ʁʯϦϦʔεखॱॻA"͞ΜোൃੜϦϦʔε࡞ۀΛ࣮ࢪ࡞ۀ࿙ΕΛөϦϦʔεखॱॻA ʢөࡁΈʣϦϦʔεखॱॻB ʢະөʣ#͞Μ"͞Μಉ͡ো͕ൃੜϦϦʔε࡞ۀΛ࣮ࢪ࡞ۀ࿙ΕΛөϦϦʔεखॱॻA ʢөࡁΈʣ"͞ΜϦϦʔεखॱॻB ʢөࡁΈʣ#͞ΜϦϦʔεखॱॻC ʢະөʣ$͞Μ·ͨಉ͡ো͕ൃੜϦϦʔε࡞ۀΛ࣮ࢪ
ɹϨΨγʔυΩϡϝϯτमਖ਼͕͍ͭޙճ͠ ԿΛॻ͚͍͍͔໎͏ Ͳ͜ʹॻ͚͍͍͔໎͏Writeݟ͔ͭΒͳ͍ ใ͕ݹ͍ɾޡΓ ࣅͨ༰͕ࢄࡏ͍ͯ͠ΔRead·͞ʹϨΨγʔίʔυͱಉ͡ ର͕ࣗવݴޠʢ͘͠දɾਤʣʹͳ͚ͬͨͩʂ ↓ ઃܭɾमਖ਼ͷΓํϓϩάϥϛϯάͱಉ͡Ͱʁ
ɹMVCΞʔΩςΫνϟͷద༻ ґଘؔʹج͍ͮͨυΩϡϝϯτઃܭViewϦϦʔε࡞ۀखॱॻ ΠϯϑϥڥҰཡJenkinsϩάΠϯใϦϦʔεه_201704XXController Model
܁Γฦ͠ϖʔδҰׅཧɹIteratorύλʔϯ(GoF)ͷద༻ViewϦϦʔε࡞ۀखॱॻ ΠϯϑϥڥҰཡJenkinsϩάΠϯใϦϦʔεه_201704XXController ModelϦϦʔεه_201704XXϦϦʔεه_201705XXϦϦʔεه_201706XX
ɹDocument as Code - υΩϡϝϯτΛιʔείʔυͷΑ͏ʹѻ͏ɹ ● ϘʔΠεΧτݪଇɿ๚Εͨϝϯόʔ͕Ճචɾमਖ਼ ɹɹɹɹɹจॻΛݟΔલΑΓɺݟͨޙͷ΄͏͕៉ྷͳঢ়ଶͱͳ͍ͬͯΔͷ͕·͍͠ ɹ ● ίʔυϨϏϡʔɿߏʹΜͩΒ૬ஊ ɹɹɹɹɹʮ͜͏͍͏ҙਤͰ͜͜ʹॻ͜͏ͱࢥ͏ʂͲ͏ࢥ͏ʁʯΛ૬ஊ͢ΔSlackνϟϯωϧ ʹ ϨϏϡʔ׆ੑԽͲ͜ʹͲͷυΩϡϝϯτ͕͋Δ͖͔Λ ίʔσΟϯάʹྫ͑ͯձ͢Δ ↓ ߟ͑ํ࡞ۀͷਐΊํʹͯ·ΔIUUQTQJYBCBZDPNFOMJCSBSZCPPLTNPOUFTTPSJTIFMG
● Ϣʔεέʔεੳ ● ϦϑΝΫλϦϯά ● ϖΞϓϩάϥϛϯά ● Ϟϒϓϩάϥϛϯά ● όʔδϣϯཧ ɹυΩϡϝϯτΛίʔυͷΑ͏ʹѻ͏16ͷύλʔϯ (Document Design Pattern) ● ΞʔΩςΫτνʔϜ ● ίϯΣΠͷ๏ଇ ମ੍ͷύλʔϯ ● ٕज़తෛ࠴ ● ϙʔτϑΥϦΦ ● ίʔσΟϯάΛଅ͢ ● ίʔυϨϏϡʔ ● ϘʔΠεΧτ ● Rule of ThreeจԽͷύλʔϯ ● MVCϞσϧ ● GoFσβΠϯύλʔϯ ● ܧଓతσϦόϦʔ / ΠςϨʔγϣϯߏͷύλʔϯ ࡞ۀͷύλʔϯ˞ମ੍จԽσβΠϯʢઃܭʣʹӨڹΛ༩͑ΔͷͰσβΠϯύλʔϯʹؚΊ͍ͯ·͢ࢀরʰDevOpsͱυΩϡϝϯτσβΠϯύλʔϯʱ http://yuzutas0.hatenablog.com/entry/2017/07/06/083000
ɹใͷΞΫηγϏϦςΟ
ɹϘτϧωοΫʁػೳෆશͷѱ॥ϓϨογϟʔ → “୲ऀͷ” ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Εޓ͍ͷࣄΛΒͳ͍ αϙʔτɾϨϏϡʔͰ͖ͳ͍ ୲ऀ͚ͩͰࣗݾ݁ఆ֎ͷ༷ ߟྀෆͷ։ൃ ͦͷ྇͗ͷӡ༻γεςϜোͷଟൃ ػೳՃͷԆ ਂରԠɾٳग़ࣾͷৗଶԽ “0→1” ͷ࣌ݶര ࣝܧঝͳ͖νʔϜ֦େ͞ΒͳΔ࣭ѱԽͷݒ೦τϥϒϧർฐہॴ࠷ద࣭ྼԽ݁Ռతʹྑ͘ͳΔ෦ͳͷͰͷΞϓϩʔνͳ͠ఆ֎ͷ༷ ߟྀෆͷ։ൃ ͦͷ྇͗ͷӡ༻࣭ྼԽ
● ։ൃɾӡ༻νʔϜΛཱͯ͢͜ͱ● ͞ΒͳΔͷΛߏங͢Δ͜ͱɹϛογϣϯ
ɹ௧ΈΛ੍͢Δػೳෆશͷѱ॥ϓϨογϟʔ → “୲ऀͷ” ઌͷ࡞ۀΛͲ͏ʹ͔͠ͳ͚Εޓ͍ͷࣄΛΒͳ͍ αϙʔτɾϨϏϡʔͰ͖ͳ͍ ୲ऀ͚ͩͰࣗݾ݁ఆ֎ͷ༷ ߟྀෆͷ։ൃ ͦͷ྇͗ͷӡ༻γεςϜোͷଟൃ ػೳՃͷԆ ਂରԠɾٳग़ࣾͷৗଶԽ “0→1” ͷ࣌ݶര ࣝܧঝͳ͖νʔϜ֦େ͞ΒͳΔ࣭ѱԽͷݒ೦τϥϒϧർฐہॴ࠷ద࣭ྼԽαʔϏεϨϕϧηϨϞχʔόϦϡʔετϦʔϜυΩϡϝϯτ
ɹάϩʔεΛ࣋ଓՄೳʹ͢Δ॥Dev ❤ Ops “0→1” ͷ࣌ݶര νʔϜ֦େͷ४උࣝͷܧঝ γεςϜো: 0.5݅/݄ʹݮগ ܰඍͳෆ۩߹: ਂٳରԠ0ʹ҆ఆԽ ηϨϞχʔʹΑΔݕࠪͱదԠ VSM/υΩϡϝϯτʹΑΔۀܕԽՄࢹԽ ୲֎ϝϯόʔ͕ॿݴɾαϙʔτ ࣄલʹΛݕ→࣭༧શମ࠷దঃʑʹݮΔ
ɹ৽نࢀըऀͷ @KPTͰͷձԿ͔ฉ͍ͨΒશ෦ʮܾ·͍ͬͯͳ͍ʯ ͜ΜͳʹԿܾ·͍ͬͯͳ͍ݱॳΊͯυΩϡϝϯταϙʔτ͕ॆ࣮͍ͯͨ͠ ͜ΜͳʹεϜʔζʹ্ཱ͕ͪΕͨݱॳΊͯ4Q Joinϝϯόʔ 1Q Joinϝϯόʔ
1. ૣ͍ஈ֊Ͱ༏लͳएखࣾһΛԿ໊͔ଞ෦ॺ͔ΒҾ͖ൈ͍ͨ 2. அج४ͱͨ͠ਓࡐཁ݅ = അྗ͕͋Δ͜ͱ ɹ ● ఏىɾվળਪਐͰ͖Δࣗൃੑɹ͜ͷΞαΠϯਪਐΛ૿ͨ͢ΊͷଧͪखͳͷͰ ɹ ● ৬ೳԣஅࢤɹτϥϒϧԣஅՕॴͰى͖ΔͨΊʢྫɿiOSͱWebAPIΛ྆ํݟΔඞཁ͕͋Δʣɹ ● Կ͔͠Β1ͭͷݴޠɾFWͷۀར༻ܦݧɹ1ͭεΩϧͷϕʔε͕͋ΕଞͷεΩϧֶΔͨΊ ɹ ● ιʔείʔυʹ৮Εͣ͘͢Ϳ͍ͬͯΔ͜ͱɹݏͰຖιʔείʔυΛಡΈॻ͖Ͱ͖ΔमཏΛఏڙͰ͖ΔΑʂʮՖܗ෦ॺɾՖܗۀͰͳ͍ʯʮ্͕٧·͍ͬͯΔʯͳͲͷཧ༝Ͱ֘͢Δएखଟ͍ͩΖ͏ͱ͍͏ൃϝϯόʔͷҰһͱͯ͠ ॥ͷγϑτΛܦݧQຖͷମ੍֦େʹ߹Θͤ ͞ΒʹνʔϜΛׂ֤νʔϜϦʔμʔͱͯ͠ ਪਐʹͳͬͯΒ͏ɹεέʔϧʹ͚ͨਪਐ
ɹ॥Λճͨ͢Ίʹඅͨ͠ίετݱϝϯόʔͷίϛϡχέʔγϣϯίετΛେ෯ʹඅͨ͠ ɹ ● ظతʹσϦόϦʔʹϚΠφεӨڹʢʹݟ͑Δɿલఔͷ࣭୲อͰ݁Ռతʹϓϥεʣ ɹ ● ͲͷΈͪѱ॥ΛࢭΊΔͨΊʹඞཁͳίετͩͱ্Ґ৫ɾൃදऀೝ͍ࣝͯ͠Δ εςʔΫϗϧμʔશମͱͷѲΓऑ͔ͬͨɹ ● ঢ়گ͕ঢ়گͳͷͰʮνʔϜͷ՝ΛΓ։͘͜ͱʯʮ্Ґ৫ʹୡ͢Δ͜ͱʯ͕࠷༏ઌ ɹ ● ֎͔Βͷݟ͑ํʮোΛग़ͨ͠ɾ։ൃ͕Ε͍ͯΔͷʹɺखΛࢭΊͯϫʔΫγϣοϓΛ࢝ΊΔνʔϜʯ ɹ ● ݏຯΛݴΘΕͨͷ12Ͱͳ͍ → ͜ͷѹྗ͕ѱ॥ͷਅҼ → कΓखͱͯ͠ͷΤϯδχΞ෦ॺͷҙٛ ্Ґ৫ˍଞ෦ॺϝϯόʹཪͰϑΥϩʔ͍ͨͩ͘ܗͱͳͬͨɹ ● ಛʹʮ։ൃܦݧ͋ΓʯʮϏδωε෦ʹॴଐʯͷϝϯόʔ͕؇িࡐͱͳͬͨͷ͕େ͖͍
ɹ͞ΒͳΔͷͨΊʹԾઆ ऩӹDev&Ops࠷దԽͷ༨ ྫɿνʔϜͷΫϩεϑΝϯΫγϣφϧԽγεςϜ؍Ͱͷߏங ྫɿաͳٕज़తෛ࠴Λ༧͢ΔΈBiz Dev OpsɹBizΛ౿·͑ͨ ɹ શମ࠷దԽ ɹ ● γεςϜ ɹ ● ϓϩηε ɹ ● ࢪࡦɾཁ݅
ɹBizDevOpsʹ͚ͨऔΓΈ“෦ॺɾ৬Λ͑ͨϝτϦΫεͷڞ༗” ͱ “σʔλ׆༻จԽͷண”ࢀরʰJupyterͱBigQueryʹΑΔσʔλੳج൫ͷDevOpsʱ http://yuzutas0.hatenablog.com/entry/2017/09/12/203000σʔλج൫
ɹϏδωεՁʹ͚ͨվળ
࠷ޙʹ
ɹProduct GrowthεϐʔυײΛେࣄʹ͢Δ● രΛආ͚ͳ͕ΒલʹΓଓ͚Δͱ͍͏͜ͱ ● രʹ͔ࣗΒಥͬࠐΉ͜ͱͰͳ͍ → ෛই͢Δ΄Ͳ͘ͳΔΤϯδχΞ͔ͩΒͦ͜ؾ͚Δ͜ͱ● ʮ͜͜যͬͯμϝͩʂʯʮരͩʂஸೡʹਐΉͧʂʯͱ͍͏໘ ● खΛಈཱ͔͢ʢ͔ͭͯखΛಈ͔ͨ͠ܦݧऀʣͰͳ͍ͱ͔Βͳ͍ ● ٸϓϩμΫτͰͦͷ໘͕ͻͨ͢Βଓ͘IUUQTXXXQFYFMTDPNQIPUPDBSFGSFFDIJMEDIJMEIPPEDPVOUSZTJEF
ɹٯઆͷΤϯδχΞϦϯάϕετϓϥΫςΟεײత ● ΫΦϦςΟΛߴΊΔͨΊʹɺଈ࣌ରԠΛݮΒ͢● ΞδϦςΟΛߴΊΔͨΊʹɺखΛࢭΊͯ͠߹͏ߟ͑ΔͱͨΓલͷ͜ͱ● যͬͨ··ࣄΛଓ্͚ͯख͘ߦ͘Θ͚͕ͳ͍ɹɹ৸ෆͷૢॎ͕࢜୲͢ΔඈߦػʹΓ͍͔ͨʁɹύχοΫঢ়ଶͷ֎Պҩʹखज़͞Ε͍͔ͨʁ ɹɹάϩʔεϑΣʔζ͔ͩΒͱ͍ͬͯѱ॥Λ์ஔ͍͍ͯ͠ཧ༝ʹͳΒͳ͍ ● νʔϜʹಁ໌ੑͱݕࠪͱదԠ͕ඞཁIUUQTXXXQFYFMTDPNQIPUPBEVMUBEWFOUVSFCBDLQBDLEBZMJHIU
ʮ͜Ε͓͔ͬͯ͘͠ͳ͍Ͱ͔͢ʁʯ ୭͔͕Λ্͛Δ͜ͱ͕ɺվળͷୈҰาʮ͜ΕͬͯͲ͏ͳ͍ͬͯ·͔͢ʁʯ ୭͔ʹΛֻ͚Δ͜ͱ͕ɺಁ໌ੑͷୈҰาνʔϜͷҰһͷׂͰ͢ ࠓ͜͜ʹ͍ΔࢲͨͪࣗͷׂͰ͢
νʔϜͱͯ͠ϓϩηεΛվળ͠Α͏ νʔϜͱͯ͠γεςϜΛվྑ͠Α͏ νʔϜͱͯ͠ϓϩμΫτΛͤ͞Α͏
νʔϜͷ҆ఆͷ্ʹͦ͜ܧଓతͳސ٬Ձͷఏڙ͕ ʢͦͷ݁Ռͱͯ͠Ϗδωεͷ͕ʣ ࣮ݱͰ͖Δͷͩͱࢥ͍ͬͯ·͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠presented by @yuzutas0IUUQTXXXQFYFMTDPNQIPUPDPMMFBHVFTDPPQFSBUJPOpTUCVNQpTUT
- ࢼߦࡨޡɾࣦഊࣄྫ- ࢀߟࢿྉ- Special ThanksɹAppendix
ɹվળ͕࠷ίʔυΛॻ͍ͯ͠·ͬͨதʹ1ਓͰίʔσΟϯά͢ΔӋʹͳͬͨ● ࠷ॳͷࠒϝϯόʔࣗͷ୲ൣғ͔͔͠Βͳ͔ͬͨ ● αϒγεςϜԣஅͰઃܭɾ࣮Ͱ͖Δਓࡐ͕͍ͳ͍ঢ়ଶ എதΛݟͤΔ͜ͱͷޫͱӄ ● ணૣʑʹқͷߴ͍ઃܭɾ࣮Λͬͯͷ͚͔ͨΒͦ͜ɺϝϯόʔͷ৴པΛಘͨଆ໘͋Δ ● վળʹྗΛׂ͚ͣɺਓҭͨͣɺνʔϜ͕ػೳ͠ͳ͍ʢϓϨΠϯάϚωʔδϟʔͷΞϯνύλʔϯʣࣗΛଅͯ͠ঃʑʹ݈શԽ● एखࣾһͷҾ͖ൈ͖ ʴ ձͷ׆ੑԽ ʴ ܧଓతͳ࡞ۀ༰ͷϑΟʔυόοΫʢि࣍ϨϏϡʔʣ
ɹBizDevOpsͷଅਐ - ૣ͗ͨ͢ࢪࡦ1. νʔϜϏδϣϯɺΫϨυɺ։ൃKPIͷࡦఆ● Ծઆɿඪ૾ج४͕͋Εվળͷํੑ͕ݟ͑ͯϝϯόʔ͕ࣗൃతʹಈ͚Δ ● ݁ՌɿϚΠφεΛθϩʹ͍ͯ͠Δ్தͳͷͰɺকདྷͷֆۭࣄɾݱ࣮ຯ͕ͳ͍៉ྷࣄ2. Ϗδωεߏɾঢ়گʹ͍ͭͯͷษڧձ● Ծઆɿ୲֎ͷۀͷΛฉ͘͜ͱͰBizͷછΈग़͠Λޙԡ͠Ͱ͖Δ ● ݁Ռɿ໘നͦ͏͚ͩͲࠓͦΕͲ͜ΖͰͳ͍ͷͰϑϥετϨʔγϣϯ→ ࠷ۙʹͳͬͯ࠶νϟϨϯδ● ʮ2าઌΛݟਾ্͑ͨͰɺ1าઌΛଅ͘͢Β͍͕ͪΐ͏Ͳ͍͍ʯ by ϝϯλʔ7JTJPO.JTTJPO7BMVF
ɹࢀߟࢿྉॻ੶ɾ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/203000IUUQFDOJLLFJCQDPKQJUFNCPPLT1IUNM
ɹSpecial Thanks൴Βͷ৺ڧ͍ࢧ͕͔͑͋ͬͨΒͦ͜ɺνʔϜཱͯ͠ʹઐ೦͢Δ͜ͱ͕Ͱ͖·ͨ͠ɻ ຖͷ ٽ͖ࣄ ૬ஊʹ೪Γڧ͘ରԠ͠ଓ͚ͯͩͬͨ͘͜͞ͱΛײँ͓ͯ͠Γ·͢ɻ Satoshi UejimaɹɹࢸΒͳ͔ͬͨΛཪͰϑΥϩʔ͍͖ͨͩ·ͨ͠ɻʮ͏ແཧͬ͢ʯͷʹɺ ɹɹɹɹɹɹɹɹɹ ݟ͍ۤ͠ݴ͍༁ͷ1ͭ1ͭͱஸೡʹ͖߹ͬͯ͘Εͨ࠷ߴͷ্࢘Ͱͨ͠ɻ Itsuki KurodaɹɹɹνʔϜͷ࣮จ຺Λ౿·্͑ͨͰɺվળͷଧͪखɾਐΊํʹ͍ͭͯ ɹɹɹɹɹɹɹɹɹ ຊ࣭త͔ͭੜ࢈తͳΞυόΠεΛ͍͖ͨͩ·ͨ͠ɻ Kenichi Takahashiɹ৫໘Ͱͷ੯͠Έͳ͍όοΫΞοϓΛ௨ͯ͠ ɹɹɹɹɹɹɹɹɹ ج൫උҊ݅։ൃͷيಓ͕ΔΑ͏ʹαϙʔτ͍͖ͨͩ·ͨ͠ɻ