Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
the-art-of-develop-culture-at-cybozu
Search
tomoya yokota
December 02, 2017
0
3.3k
the-art-of-develop-culture-at-cybozu
開発文化を育て広げる愉しみ @ Cybozu Tech Conference 2017
https://cybozutech2017.qloba.com/
tomoya yokota
December 02, 2017
Tweet
Share
More Decks by tomoya yokota
See All by tomoya yokota
レガシーソフトウェアを再現性高く置き換える手法 〜「射撃しつつ前進」を支える技術〜
yokotaso
0
52
レガシーSolrの Elasticseach移行 Cybozu Tech Meetup #14
yokotaso
0
420
introduction-to-modern-gc
yokotaso
10
3.1k
product-sutainability
yokotaso
0
330
Go-To-Java9
yokotaso
0
220
障害にすてるところなし
yokotaso
8
4.1k
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
Agile that works and the tools we love
rasmusluckow
331
21k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Context Engineering - Making Every Token Count
addyosmani
9
400
Typedesign – Prime Four
hannesfritz
42
2.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
A better future with KSS
kneath
239
18k
The Language of Interfaces
destraynor
162
25k
How to Ace a Technical Interview
jacobian
280
24k
Transcript
։ൃจԽΛҭͯ ͛Δ༇͠Έ Cybozu Tech Conference 2017 @yokotaso
νʔϜͷ։ൃମ੍ • ϢʔβʔཧػೳΛ୲ • ։ൃຊɺࢼݧຊ + ্ւ ͷ 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Λվͩʂ
Before ToDo Doing Done
Before ToDo Doing Done WIPͷ੍ݶ͕ͳ͍ͷͰ ToDoͷࣄ͕։࢝͞Εͯ ͠·͏
Before ToDo Doing Done ϨϏϡʔΛґཔͨ͠Β ՋʹͳΔͷͰ ToDoʹணख͢Δ ࣮ ࣮
Before ToDo Doing Done ϨϏϡʔ͕ؼͬͯ͘Δͱ DoingͷྻͷWIP͕ ૿Ճͯ͠͠·͏ ϨϏϡʔ ϨϏϡʔ ϨϏϡʔ
࣮ ࣮
Before ToDo Doing Done WIP͕ߴ͍ঢ়ଶ ࣄͷΛམͯ͠͠·͏ ͷͰKanbanͰݏΘΕΔ ϨϏϡʔ ϨϏϡʔ ϨϏϡʔ
࣮ ࣮
After ToDo Doing Review Done ΞόλʔΛಋೖͨ͠ 1ਓ͋ͨΓ3ͭ ࣄ͕Ͱ͖Δ
After ToDo Doing Review Done ReviewྻΛ৽ઃ ϨϏϡʔૣ͘ ऴΘΒ͍ͤͨͷͰɺ ؔऀͷΞόλʔΛ શ͓ͯ͘
After ToDo Doing Review Done ϨϏϡʔ༏ઌ͕ ߴ͘ͳΔ ToDoΛDoingʹ ҠಈͰ͖ͳ͍
& ৫ʹ͋Θͤͨ։ൃจԽ • ৫ͷঢ়گʹ͋Θͤͨ։ൃจԽ • ૉͷPracticeͷద༻͔Β։ൃจԽ • KAIZEN͔ΒPracticeΛվ͢Δ༐ؾ • ։ൃจԽνʔϜͰҭͯ·͠ΐ͏
& ւ֎ڌͲ͏ͨ͠ͷ͔ʁ • ্ւͷKanban্ւͷΧϧνϟʔΛଚॏ • ࠷ॳͷKanbanΛ࡞Δͷ͚͓ͩख͍ ࠔΓ͝ͱ૬ஊҙשى͙Β͍ • ڕΛ༩͑ΔΑΓڕͷΓํΛڭ͑Α
& ւ֎ڌͲ͏ͨ͠ͷ͔ʁ • جຊkintoneͰλεΫॲཧ • ֤ڌͷKanbanͷը૾Λఆ࣌ʹΞοϓϩʔυ ଞڌͷλεΫͪʹؾͮ͘ ଞڌͷWIPΛ૿͗͢͠ͳ͍Α͏ʹ • ཧίετ͕͔͔Βͳ͍ӡ༻Λҙࣝ
ෳརͱ࠶ࢿ
• ෳར(༨࣌ؒ)Λ։ൃจԽʹ࠶ࢿ͍ͯ͘͠ • ఆணͨ͠։ൃจԽΛϕʔεʹ৽͍͠ઓ UnitTest CI/CD Scrum/Kanban
… • ઓΛ͢ΔͨΊʹ։ൃจԽΛKAIZEN͍ͯ͘͠ ։ൃจԽΛਐԽͤ͞Α͏
ςετΤϯδχΞʂ ࡶͳࢼݧखॱͷࣗಈԽ͍ͨ͠
վमޙɺଈϦϦʔε͍ͨ͠ʂ ։ൃϓϩηεͷਐԽ ·ͩ·ͩඞཁʂ
ΑΓΞδϟΠϧͳ։ൃจԽ • ։ൃจԽΛ࡞Γม͖͑ͯͨࣄ࣮͕ ৫ͷେ͖ͳࡒ࢈ɺ৫ͷجૅମྗʹͳΔ • ΞδϟΠϧͳ։ൃϓϥΫςΟεͰͳ͘ ΞδϟΠϧͳ৫ɺ։ൃจԽΛࢦ͢ • ͋Δ͕ɺมΘ͍͚͍͍ͬͯ
։ൃจԽΛ ਐԽͤ͞Δ औΓΈଓ͘
ͦͯ͠ɺເͷ֎
৫Λ͑ͯ։ൃจԽ͕͕Δ • ڌ ৫Λ͑ͯ։ൃจԽΛҭͯΔऔΓΈ • ։ൃจԽΛҭͯ͛ΔίπΛ͓͠·ͨ͠ • 100৫͋ͬͨΒ100௨Γͷ։ൃจԽ • ϘτϧωοΫΛղফ͢Δ։ൃจԽͰ͋Ε
ΦϯϓϨϛε࣌ͱִੈײ • ։ൃจԽ͕ત·͔ͬͨ࣌͠ • ։ൃจԽ͕͋Δ৫ʹಌΕ͍ͯͨ • ಌΕ͔Β։ൃจԽͷ͋Δ৫ʹͳΕͨ • ͦͯ͠ɺເͷ֎ ͜Ε͔Β։ൃจԽΛҭ͍͖͍ͯͯͨ
ΤϯδχΞͷ ʰָ͍͠ʱΛ ͛Α͏
։ൃจԽΛҭͯ ͛Δ༇͠Έ Thank you!