長期間に渡ってプロダクトを開発・運用していると、しばしば細かいバグや改善点が出てきますが、新機能や新施策への取り組みとのバランスに悩むケースが少なくないと思います。ここでは主にプロダクトの既存機能の改善に関して、みてねにおける事例を紹介します。
ΈͯͶͷϓϩμΫτΛվળ͢ΔΤϯδχΞϦϯά2018-11-13 ΈͯͶͷMeetup #3 ˒4.7ͷՁΛ࣮ݱ͢Δ։ൃϓϩηε ΈͯͶࣄۀ෦ ΤϯδχΞ দੴߒี
View Slide
ࣗݾհ• দੴ ߒี (@_sobataro)• 2016 ϛΫγΟ৽ଔೖࣾ• 1: ΈͯͶ ΞϓϦɾαʔόΤϯδχΞ• 2ʙ: ΈͯͶ ίϯςϯπ։ൃΤϯδχΞ
طଘͷϓϩμΫτΛվળ͢Δ
ΈͯͶ: 2015-04-13ϦϦʔε (ͦΖͦΖ4प)
ظؒϓϩμΫτΛ։ൃɾӡ༻͍ͯ͠Δͱ…• ίʔυӡ༻ͷଐਓԽ• Ϣʔβ૿ɺDB ͷϨίʔυ૿ʹΑΔੑೳྼԽ• ҙਤͤ͵ڍಈͷมߋ৽͍͠ɾOSͷग़ݱʹΑΔࡉ͔͍ෆ۩߹ͷൃੜ• ݹ͍ϥΠϒϥϦͷ deprecation, ੬ऑੑͷൃੜ• ্هΖΖʹΑΔCS ରԠͷίετ૿Ճ
ͲΜͲΜ৽ػೳΛ࡞Γ͍͚ͨͲطଘػೳվળ͍ͨ͠
طଘػೳΛվળ͢ΔͨΊͷ3ͭͷऔΈ
3ͭͷऔΈ ͦͷ1ݟڞ༗ձ
ݟڞ༗ձ• ଐਓԽΛ͙ݟͷڞ༗• ෛՙɾΤϥʔɾΫϥογϡͳͲͷࢹ• server: NewRelic, slow_log• iOS/Android: Crashlytics• ݹ͍ϥΠϒϥϦͷࢹ• server: bundle-outdated• iOS: pod-outdated, carthage-outdated• Android: Gradle ͷ Checkstyle pluginNewRelicCrashlytics(ը૾։ൃڥͷαϯϓϧͰ͢)
3ͭͷऔΈ ͦͷ2CS ୲൪ΤϯδχΞ
Ҏલͷ CS ରԠ• CS issue खΛڍ͛ͨ or ϥϯμϜʹׂΓৼΒΕͨΤϯδχΞ͕ରԠ• ݟͷ͋Γͦ͏ͳΤϯδχΞʹ૬ஊ✘ ଐਓԽ✘ ෛ୲ײ͕େ͖͍ (ΞαΠϯ͞ΕΔͨͼʹ࠷େ͘Β͍ख͕ࢭ·Δ)✘ CS ରԠʹ͔͔Δ։ൃνʔϜͷϦιʔε͕ෆಁ໌
CS ୲൪ΤϯδχΞ• िସΓͰ CS ୲ΤϯδχΞΛ͓͘ (αʔόɾΞϓϦ֤1໊)• CS ୲ΤϯδχΞجຊతʹͯ͢ͷ CS issue ΛରԠ͢Δ✘ CS ୲൪ΤϯδχΞͷෛ୲େ͖͍✔ ଐਓੑΛഉআͰ͖Δ (ڧ੍తʹݟ͕ڞ༗͞ΕΔ)✔ CS ରԠʹ͔͔Δ։ൃνʔϜͷϦιʔεΛͬ͘͟ΓѲͰ͖Δ
3ͭͷऔΈ ͦͷ3ࣗಈԽ
ࣗಈԽݟڞ༗ձͰ֬ೝ͢Δ߲ͷࣗಈԽ• εϩʔΫΤϦग़͢܅• ϥΠϒϥϦࢹ܅CS ୲൪ͷෛՙΛԼ͛ΔऔΓΈ• ఆܗରԠͷπʔϧԽ (CS νʔϜͰ݁Ͱ͖ΔΑ͏ʹ)• ػೳϨϕϧͰͷमਖ਼ (͍ͦͦ߹Θ͕ͤൃੜ͠ͳ͍Α͏ʹ)
طଘػೳΛվળ͢ΔͨΊͷ 3ͭͷऔΈ• ݟڞ༗ձ• CS ୲൪ΤϯδχΞ• ࣗಈԽ
3ͭͷऔΈΛࢧ͑ΔΈ
୭͕Ҋ݅ΛఏҊͰ͖ΔΈΈͯͶࣄۀ෦ͷ୭͕Γ͍ͨҊ݅ΛఏҊͰ͖Δ• ϓϩμΫτΦʔφʔ• ΤϯδχΞ• CS νʔϜ• ϓϩϞνʔϜ• ͦͷଞ୭ͰʂऔΓΈํ• Pivotal ͷ icebox ʹ suggest ϥϕϧΛ͚ͭͯՃ• ϦϑΝΠϯϝϯτͳͲͰഎܠΛڞ༗͠ɺόοΫϩάԽɾݟੵΓɾ༏ઌॱҐ͚
ϓϩμΫτΦʔφʔͷཧղ• Ҋ݅ (όοΫϩά) ͷ༏ઌ͚ͮ = ϓϩμΫτΦʔφʔͷࣄ• എܠͷࣄΛཧղͯ͠Β͑Δ͜ͱେ͖͍• ۓٸɺӨڹൣғɺӨڹͷେ͖͞• ͪΖΜཧղͯ͠Β͏ͨΊͷྗඞཁ
·ͱΊ
·ͱΊ• ΈͯͶ = ͦΖͦΖ4पɻࡉ͔͍վળϙΠϯτ͕ͨ͘͞Μग़͖͍ͯͯΔ• طଘػೳΛվળ͢ΔͨΊͷ3ͭͷऔΓΈ• ݟڞ༗ձ• CS ୲൪ΤϯδχΞ• ࣗಈԽ• ͜ΕΒͷऔΓΈ ୭͕Ҋ݅ΛఏҊͰ͖ΔΈ ͱ ϓϩμΫτΦʔφʔͷཧղ ʹࢧ͑ΒΕ͍ͯΔ