開発文化を育て広げる愉しみ @ Cybozu Tech Conference 2017
https://cybozutech2017.qloba.com/
։ൃจԽΛҭͯ͛Δ༇͠ΈCybozu Tech Conference 2017 @yokotaso
View Slide
νʔϜͷ։ൃମ੍• ϢʔβʔཧػೳΛ୲• ։ൃຊɺࢼݧຊ + ্ւ ͷ 2ڌ• ࠷ॳ 1-SprintͰ։ൃ ~ ࢼݧઃܭͰ Done ։ൃ ~ ࢼݧྃ·ͰҰݸྲྀ͠࠷ۙͰ͖ΔΑ͏ʹ• Ҏલ։ൃFixޙʹɺࢼݧ։࢝
ͳͥKanbanͳͷ͔ʁ• ϚϧνϓϩδΣΫτ୲ϝϯόʔ͕ଟ͍• Өͷࣄͷଘࡏ λεΫΛґཔ͠ʹ͍͘ ୭͕ԿΛ͍ͬͯΔͷ͔Θ͔Βͳ͍• ։ൃ ~ ࢼݧྃͷࣄͷྲྀΕΛ͍ͨ͘͠
։ൃจԽͷྺ࢙
ΦϯϓϨϛεظͱ։ൃจԽ• ୯Ґͷ։ൃɾࢼݧεέδϡʔϧ• Unit Test͕ͳ͍ϓϩμΫτ• ։ൃFixલʹσΠϦʔϏϧυΛಈ͔͢• ☠☠։ൃจԽ☠☠
Ϋϥυੈهͱ։ൃจԽ• ϦϦʔεͷ૿Ճ• ෆ҆ఆͳ࣭ͱ։ൃͷരൃ• CI/CDΛར༻࣭ͨ͠ͷ҆ఆԽ• ։ൃޮͷ্ʹੵۃࢿ• ։ൃࢧԉͨΊͷ։ൃจԽ
Ϋϥυશظͷ։ൃจԽ• Ϋϥυੈهͷ։ൃจԽ͕ϕʔεʹվળ ։ൃͷϘτϧωοΫ͕গͳ͘ͳΔ• ։ൃ͔Βࢼݧఔ·ͰΛؚΊͨશମ࠷దԽ• Scrum / Kanban ܕͷ։ൃελΠϧ• ՁΛૉૣ͘ಧ͚ΔͨΊͷ։ൃจԽ
։ൃจԽϏδωεΛࢧ͑ΔॏཁͳϑΝΫλʔ
ٙ
ᷚͷϤαήͳ։ൃจԽ͏ͪʹೃછ·ͳ͍ͷͳΜͰͩΖ͏ʁ
ಋೖ͚ͨ͠Ͳɺଓ͔ͣʹഇΕͯ͠·ͬͨɻ
αΠϘζ͞Μ͔ͩΒͳΜͰ͏·͍͘͘ΜͰ͠ΐ?͏ͪʹͪΐͬͱ…
αΠϘζͰࣦഊ͠ͳ͕Βલਐ͍ͯ͠Δͷ͕ݱ࣮ͳͷͰ͢
ຊ&্ւͰKanbanΛಋೖͨ͠ͷͱաڈͷࣦഊΛωλʹ…
։ൃจԽΛҭͯΔPracticeຊʂ
จԽͷϘτϧωοΫ
ͦΕϘτϧωοΫͳ͘ͳΔͷʁ• ○○จԽΛແཧʹ࡞Ζ͏ͱͯ͠·ͤΜ͔• ಋೖͨ͠ΒϘτϧωοΫ͕ͳ͘ͳΔͷ͔ʁ• ϘτϧωοΫ͕ղফ͠ͳ͍จԽഇΕΔ• ίʔυ৫ͷঢ়گʹΑͬͯ։ൃจԽଟ༷
% UnitTestΛΊΑ͏ͱͨ͠• UnitTest͕ͨΓલͷ։ൃମ੍ʹ͔ͨͬͨ͠• ࣌ͷঢ়گͰUnitTest·ͩૣ͔ͬͨ• UnitTestϘτϧωοΫͰͳ͔ͬͨ ΄͔ʹେ͖ͳ͕͋ͬͨ
&σΠϦʔϏϧυΛࣗಈԽ• ΦϯϓϨɾΫϥυͷΞʔΧΠϒͷ ϏϧυεΫϦϓτΛඋͨ͠͠• JenkinsͰ࣮ߦͰ͖Δ͓खܰײ• ΦϯϓϨͱΫϥυͷಉ࣌ࢼݧ͕Մೳʹ େ͖ͳϘτϧωοΫͩͬͨ
։ൃจԽͷ࢝·ΓΛ͡ΊΑ͏• ϘτϧωοΫΛղফͰ͖Εେࣄʹ͞ΕΔ• ΈΜͳ͕େʹ͢Δͷ ։ൃจԽͷܧଓʹඞཁෆՄܽ• ։ൃจԽͷ֎ʹ৽͍͠։ൃจԽ͕͏·ΕΔ όʔϜΫʔϔϯߏ
ؒΛ૿ͦ͏
& શһࢀՃܕͷษڧձΛ։͜͏• ࣝͷϕʔεϥΠϯΛἧ͑Α͏• ษڧձͷࡐΛͬͯҙࣝͷڞ༗• γϯϓϧͳݪཧɾݪଇͷཧղ > ࡉ͔ͳࣝ• શһࢀՃ͍͢͠ษڧձΛ ଥڠͰ͖Δͷੵۃతʹଥڠ͢Δ
&্ւ ຊ Χϯόϯษڧձ• ࡉ͔͍ࣝΑΓɺΧϯόϯͷཧղΛపఈ WIPɺࣄͷྲྀྔ੍ݶ ࣄͷՄࢹԽ ࣄΛৼΓฦͬͯKanbanͰվળ͢Δʁ
&্ւ ຊ Χϯόϯษڧձ• ӳޠͰফͨ͘͠ͳ͔ͬͨͷͰ༁ॻΛར༻
&্ւ ຊ Χϯόϯษڧձ• Χϯόϯࣄज़ͷʹήʔϜ͕͋Δ• KanbanͷݪཧݪଇΛମײͰ͖Δ ඦฉҰݟʹ͔ͣ͠• ։ൃจԽʹ͍ͯͨ͘͠Ίʹʮͳͥʓʓʁʯ ͷڞײ͕ඞཁෆՄܽ
% ༗ࣝऀษڧձΛ։͘• ϧαϯνϚϯ͕ཷ·Γ͕ͪ• ࢀՃऀ=ҙ͕ࣝ͋ΔਓͳͷͰޮՌ͕ബ͍• ϝϯόʔͰ͕ࣝࠩग़ͯ͠·͏• ཧ͕ڞ༗Ͱ͖ͳ͍
Small Start
Ͱ͖Δ͜ͱΛ͙͢ʹ࢝ΊΑ͏• ޮՌ͕͋Γͦ͏ͩͬͨΒͬͦ࢝͘͞ΊΑ͏• Ͱ͖Δ͚ͩγϯϓϧʹ1िؒͬͯΈΑ͏• ϓϥΫςΟεͷҰ෦ͰOK• ࣗͨͪͰ࡞ͬͯӡ༻ͯ͠ΈΔͷ͕େ
& KanbanΛ͙͢ʹ࡞ͬͨ• ॳճษڧձͷޙʹϗϫΠτϘʔυΛߪೖ• ্ւɺຊͰ؆୯ͳKanban࡞ͬͯΈͨ• ษڧձͷςʔϚΛKanbanʹద༻ վͨ͠Γࢼߦࡨޡ• ݟ͍͑ͯͳ͔ͬͨͷൃݟɺ৽ͨͳؾ͖ͮ
% ࣝΛҰ௨Γ͚͔ͭͯΒ࣮ફ• ϕετɾϓϥΫςΟεͳͷʹ ։ൃϓϩηεʹͦͷ··ద༻Ͱ͖ͳ͍• ݱঢ়ͱཧͷҧ͍ʹർฐ• ϓϥΫςΟεͷվɺऔࣺબ͕ඞཁͩͬͨ
ޮՌతͳৼΓฦΓ
& ޮՌతͳৼΓฦΓΛ͠Α͏• ։ൃจԽͱͯ͠ఆணͤ͞ΔͨΊͷৼΓฦΓ• ݪཧɾݪଇΛҙࣝͯ͠ৼΓฦΓΛͯ͠ΈΑ͏• ݪཧɾݪଇΛҙࣝͯ͠KAIZENΛߟ͑Α͏• ͕ࣝఆண͍ͯ͠Δ͔ͷࢼۚੴ
& ๙ΊΔϙΠϯτ͕໌֬ʹ•A͞ΜͷWIP͕ᷓΕͯͨͷͰλεΫΛ Ҿ͖ड͚·ͨ͠•WIP͕ߴ͍ͷͰToDoλεΫΑΓ ϨϏϡʔλεΫΛऴΘΒͤΔ͜ͱʹྗͨ͠•োରԠͳͲ͕ՄࢹԽ͞ΕͨͷͰɺ ϨϏϡʔґཔͷ૬खΛͰ͖ͨ
& ݪଇ͔ΒΈ͑ͨProblem• AλεΫΛ͍ͬͯΔ࣌ʹWIP͕૿Ճͨ͠• ্ւͷWIP͕ߴ͍ͷͳΜͰͩΖ͏ʁ• ϚϧνϓϩδΣΫτͷࣄΛ͢Δͱ͖ WIPΛͲ͏ѻ͏͖ʁ
% ;ΜΘΓͨ͠ৼΓฦΓ• ᘭͳProblem Λղܾ͢ΔՁ͋Δ͔ʁ ෳࡶͳղܾࡦΛ࠾༻ͯ͠ͳ͍ʁ• ։ൃϓϩηεͷϘτϧωοΫΛղফͰ͖Δ Problemͷൃݟɺௐࠪɺղܾʹྗ͠Α͏
KAIZENͱकഁ
& ৼΓฦΓ͔ΒKAIZEN͢Δ• ҰൠతͳPracticeʹతʹैΘͣ ৫Χϧνϟʔʹ͋Θͤͯऔࣺબ վ͠Α͏• ࣗͨͪʹ߹ΘͤͯɺPracticeΛ มߋ͍ͯ͘͜͠ͱ͕େ
& कɾഁɾʂ• (Problem) ։ൃ։࢝࣌ɺWIP͕͍ͷʹ ϨϏϡʔͷΓͱΓ͕࢝·ΔͱWIP͕ߴ·Δ• (Try) Reviewͪͷ࣌ʹToDoͷࣄΛ࣋ͪࠐΉͷ͕ ݪҼͩͬͨɻKanbanΛվͩʂ
BeforeToDo Doing Done
BeforeToDo Doing DoneWIPͷ੍ݶ͕ͳ͍ͷͰToDoͷࣄ͕։࢝͞Εͯ͠·͏
BeforeToDo Doing DoneϨϏϡʔΛґཔͨ͠ΒՋʹͳΔͷͰ ToDoʹணख͢Δ࣮࣮
BeforeToDo Doing DoneϨϏϡʔ͕ؼͬͯ͘ΔͱDoingͷྻͷWIP͕ ૿Ճͯ͠͠·͏ϨϏϡʔϨϏϡʔϨϏϡʔ࣮࣮
BeforeToDo Doing DoneWIP͕ߴ͍ঢ়ଶࣄͷΛམͯ͠͠·͏ͷͰKanbanͰݏΘΕΔϨϏϡʔϨϏϡʔϨϏϡʔ࣮࣮
AfterToDo Doing Review Done ΞόλʔΛಋೖͨ͠1ਓ͋ͨΓ3ͭ ࣄ͕Ͱ͖Δ
AfterToDo Doing Review DoneReviewྻΛ৽ઃ ϨϏϡʔૣ͘ ऴΘΒ͍ͤͨͷͰɺ ؔऀͷΞόλʔΛ શ͓ͯ͘
AfterToDo Doing Review DoneϨϏϡʔ༏ઌ͕ ߴ͘ͳΔToDoΛDoingʹ ҠಈͰ͖ͳ͍
& ৫ʹ͋Θͤͨ։ൃจԽ• ৫ͷঢ়گʹ͋Θͤͨ։ൃจԽ• ૉͷPracticeͷద༻͔Β։ൃจԽ• KAIZEN͔ΒPracticeΛվ͢Δ༐ؾ• ։ൃจԽνʔϜͰҭͯ·͠ΐ͏
& ւ֎ڌͲ͏ͨ͠ͷ͔ʁ• ্ւͷKanban্ւͷΧϧνϟʔΛଚॏ• ࠷ॳͷKanbanΛ࡞Δͷ͚͓ͩख͍ ࠔΓ͝ͱ૬ஊҙשى͙Β͍• ڕΛ༩͑ΔΑΓڕͷΓํΛڭ͑Α
& ւ֎ڌͲ͏ͨ͠ͷ͔ʁ• جຊkintoneͰλεΫॲཧ• ֤ڌͷKanbanͷը૾Λఆ࣌ʹΞοϓϩʔυ ଞڌͷλεΫͪʹؾͮ͘ ଞڌͷWIPΛ૿͗͢͠ͳ͍Α͏ʹ• ཧίετ͕͔͔Βͳ͍ӡ༻Λҙࣝ
ෳརͱ࠶ࢿ
• ෳར(༨࣌ؒ)Λ։ൃจԽʹ࠶ࢿ͍ͯ͘͠• ఆணͨ͠։ൃจԽΛϕʔεʹ৽͍͠ઓ UnitTest CI/CD Scrum/Kanban …• ઓΛ͢ΔͨΊʹ։ൃจԽΛKAIZEN͍ͯ͘͠։ൃจԽΛਐԽͤ͞Α͏
ςετΤϯδχΞʂ ࡶͳࢼݧखॱͷࣗಈԽ͍ͨ͠
վमޙɺଈϦϦʔε͍ͨ͠ʂ։ൃϓϩηεͷਐԽ·ͩ·ͩඞཁʂ
ΑΓΞδϟΠϧͳ։ൃจԽ• ։ൃจԽΛ࡞Γม͖͑ͯͨࣄ࣮͕ ৫ͷେ͖ͳࡒ࢈ɺ৫ͷجૅମྗʹͳΔ• ΞδϟΠϧͳ։ൃϓϥΫςΟεͰͳ͘ ΞδϟΠϧͳ৫ɺ։ൃจԽΛࢦ͢• ͋Δ͕ɺมΘ͍͚͍͍ͬͯ
։ൃจԽΛਐԽͤ͞Δ औΓΈଓ͘
ͦͯ͠ɺເͷ֎
৫Λ͑ͯ։ൃจԽ͕͕Δ• ڌ ৫Λ͑ͯ։ൃจԽΛҭͯΔऔΓΈ• ։ൃจԽΛҭͯ͛ΔίπΛ͓͠·ͨ͠• 100৫͋ͬͨΒ100௨Γͷ։ൃจԽ• ϘτϧωοΫΛղফ͢Δ։ൃจԽͰ͋Ε
ΦϯϓϨϛε࣌ͱִੈײ• ։ൃจԽ͕ત·͔ͬͨ࣌͠• ։ൃจԽ͕͋Δ৫ʹಌΕ͍ͯͨ• ಌΕ͔Β։ൃจԽͷ͋Δ৫ʹͳΕͨ• ͦͯ͠ɺເͷ֎ ͜Ε͔Β։ൃจԽΛҭ͍͖͍ͯͯͨ
ΤϯδχΞͷ ʰָ͍͠ʱΛ ͛Α͏
։ൃจԽΛҭͯ͛Δ༇͠ΈThank you!