クックパッドの "体系的" サービス開発 / "Systematic" service development at cookpad

5f7a3e3001a6635ada00b09a4c317dce?s=47 Kohei Arai
February 11, 2018

クックパッドの "体系的" サービス開発 / "Systematic" service development at cookpad

Cookpad TechConf 2018 の登壇資料です。
社内での開発サイクルの回し方や、注意しているポイントについてお話しました

5f7a3e3001a6635ada00b09a4c317dce?s=128

Kohei Arai

February 11, 2018
Tweet

Transcript

  1. ৽Ҫ ߁ฏ ձһࣄۀ෦ ΤϯδχΞ ΫοΫύουͷ “ମܥత” αʔϏε։ൃ

  2. ࣗݾ঺հ 2 ৽Ҫ ߁ฏ @SpicyCoffee66 ɾ2017 ೥৽ଔೖࣾ ΤϯδχΞ ɾαʔϏε։ൃ෦ ͕͢͞νʔϜ഑ଐ

    ɹ* ݕূͷ૊Έཱ͔ͯΒ࣮૷ɾ෼ੳ·Ͱ ɹ* cookpad studio ͷ ɹ αʔόʔαΠυϝΠϯΤϯδχΞ ɾࠓظ͔Β͸ձһࣄۀ෦഑ଐ ɾRails, SQL
  3. ຊ೔ͷओ୊ ΫοΫύουͰ͸ ͲͷΑ͏ʹ։ൃαΠΫϧΛճ͍ͯ͠Δ͔ 3

  4. αʔϏε։ൃ͸೉͍͠ 4

  5. αʔϏε։ൃͷ೉͠͞ ɾϢʔβʔͷ࣋ͭཉٻ͸ɺຊਓΛؚΊͯ୭ʹ΋Θ͔Βͳ͍ ɾϢʔβʔͷ࣋ͭཉٻ͸ɺ࣌ؒͱͱ΋ʹมΘ͍ͬͯ͘ 5 ΰʔϧ͕Θ͔Βͳ͍ ࠓ͍Δ৔ॴ͕Θ͔Βͳ͍ ɾ։ൃऀ͸ࣗ෼ͷαʔϏεΛਖ਼͘͠ཧղͰ͖͍ͯͳ͍

  6. αʔϏε։ൃͷ೉͠͞ 6 ΰʔϧ͕نఆͰ͖Δ ੡඼ઃܭ ΰʔϧ͕نఆͰ͖ͳ͍ αʔϏε։ൃ

  7. αʔϏε։ൃͷ೉͠͞ 7 ΰʔϧ͕نఆͰ͖ͳ͍ αʔϏε։ൃ ։ൃαΠΫϧ ֶͼͷαΠΫϧ ԾઆΛཱͯͯ ࣮ߦͯ͠ Ϣʔβʔͷ൓ԠΛݟΔ

  8. ֶͼͷαΠΫϧ 8 BML ϧʔϓ Measure Learn product idea data Build

    Ծઆ͔ΒϓϩμΫτʹ ϓϩμΫτ͔Βσʔλʹ σʔλ͔Β Ծઆʹ
  9. ֶͼͷαΠΫϧ ʙཧ૝ʙ 9 BML ϧʔϓ Measure Learn product idea data

    Build ࠷଎Ͱ࠷খͷ ϓϩμΫτ A/B ςετͰޮՌଌఆ ૊৫಺ʹ ஌ݟڞ༗
  10. ֶͼͷαΠΫϧ ʙݱ࣮ʙ 10 BML ϧʔϓ Measure Learn product idea data

    Build ͍͍ͩͨ ͲͷϑΣʔζͰ΋ ࣦഊ͢Δ
  11. Case: 1 11

  12. ֶͼͷαΠΫϧࣦഊྫ 12 Push ௨஌ͬͯͲͷ͘Β͍ޮՌ͕͋Δͷ͔஌Γ͍ͨ ࣮૷ͯ͠ݕূͯ͠Έ·͠ΐ͏ Push ௨஌ͷޮՌ͕஌Γ͍ͨ Push ௨஌ͷ࣮૷ ʹ

  13. ֶͼͷαΠΫϧࣦഊྫ 13 Ͳ͏ͤͳΒը૾΋͚͍ͭͨͰ͢Ͷ Push ௨஌ͷޮՌ͕஌Γ͍ͨ Push ௨஌ͷ࣮૷ ≦ Push ௨஌ʹը૾

  14. ֶͼͷαΠΫϧࣦഊྫ 14 Ϩγϐ͕Ϧίϝϯυग़དྷΔΑ͏ʹͳΓ·ͨ͠ʂ ͦͷػೳ΋৐ͤ·͠ΐ͏ʂ Push ௨஌ͷޮՌ͕஌Γ͍ͨ Push ௨஌ͷ࣮૷ < Push

    ௨஌ʹը૾ Ϧίϝϯυػೳ
  15. ֶͼͷαΠΫϧࣦഊྫ 15 Push ௨஌ͷޮՌ͕஌Γ͍ͨ Push ௨஌ͷ࣮૷ <<< Push ௨஌ʹը૾ Ϧίϝϯυػೳ

    ͡Ό͋ઐ༻ͷ LP ΋࡞Γ·͠ΐ͏ʂʂʂ ઐ༻ LP !ʁʁʁ
  16. ֶͼͷαΠΫϧࣦഊྫ 16 Build ͷࣦഊ ɾϓϩμΫτ͕ෆඞཁʹେ͖͘ͳ࣮ͬͯ૷ʹ͕͔͔࣌ؒΔ ɾݕূ͍ͨ͠Ծઆͱ׬੒ͨ͠ϓϩμΫτͷػೳ͕טΈ߹͍ͬͯͳ͍ ɾͦ΋ͦ΋Ծઆʹߟྀ࿙Ε͕͋Δ

  17. Case: 2 17

  18. ֶͼͷαΠΫϧࣦഊྫ 18 ػೳͷ࣮૷ ϩάຒ·ͬͯ ͳ͔ͬͨʂʂʂ

  19. ֶͼͷαΠΫϧࣦഊྫ 19 Measure ͷࣦഊ ɾ͍͟ܭଌ͠Α͏ͱ͢Δͱϩά͕ຒ·͍ͬͯͳ͍ ɾෳ਺ͷ A/B ςετ͕িಥͯ͠ܭଌ݁ՌʹӨڹ͕ग़Δ ɾूܭ SQL

    ʹؒҧ͍͕͋Γɺ࠷ѱͷ৔߹ͦΕʹؾ͕͔ͭͳ͍
  20. Case: 3 20

  21. ֶͼͷαΠΫϧࣦഊྫ 21 TOP ͷόφʔΛม͑ͯೖձ͕ ◦◦% ૿͑·ͨ͠ʂ ʂʂʂ ͦΕ͸……ଟ͍ΜͰ͠ΐ͏͔ʁ Ͳ͏ͳΜͰ͠ΐ͏…… ·͊਺ࣈ͸্͕ͬͯΔ͠࠾༻͠·͔͢……

  22. ֶͼͷαΠΫϧࣦഊྫ 22 Learn ͷࣦഊ ɾग़͖ͯͨ਺ࣈΛͲ͏ղऍ͢Ε͹͍͍͔ΠϚΠνΘ͔Βͳ͍ ɾ਺ࣈ͸ಈֶ͍͕ͨͼΛಘΒΕ͔ͨͱݴΘΕΔͱͦ͏Ͱ΋ͳ͍ ɾಘΒΕͨ஌ݟ͕ଐਓతʹͳΔɺ͋Δ͍͸ҋʹফ͑Δ

  23. ͜͏ͳΒͳ͍ͨΊʹ 23

  24. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 24 લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍

  25. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 25 લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ ख໭Γͷ๷ࢭ ޮ཰తͳֶͼ

  26. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 26 લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ ɾஞ࣍తʹ΍Ζ͏ͱ͢Δͱɺ݁ߏେ͖ͳख໭Γʹܨ͕Δ ɾલͷϑΣʔζ͕ऴΘͬͯͳͯ͘΋࣍ͷϑΣʔζͷ͜ͱ͸ߟ͑ΒΕΔ ɾֶͼͷαΠΫϧࣗମΛҰͭͷϓϩδΣΫτͱߟ͑Δͱ ɹΉ͠Ζ࠷ॳʹαΠΫϧશମΛઃܭ͢Δ΂͖ ख໭Γͷ๷ࢭ

  27. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 27 લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ Measure product Build idea data ɾϩά͕଍Γͳ͍ ɾͲ͏͍͏਺஋Λ

    ɹܭଌ͢Δͷ͔ෆ໌ྎ ख໭Γͷ๷ࢭ
  28. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 28 લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ Measure product Build Learn idea data ɾ਺ࣈͷղऍ͕Θ͔Βͳ͍

    ɾͲͷ਺஋ͰࢪࡦΛ ɹධՁ͢Δ͔ܾ·ͬͯͳ͍ ख໭Γͷ๷ࢭ
  29. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 29 લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ Measure product Build Learn data idea ԾઆΛཱͯΔஈ֊Ͱ

    αΠΫϧͷઌʹؔ͢Δ͜ͱ΋ ܾΊΕΔ΋ͷ͸ܾΊͯ͠·͏ ख໭Γͷ๷ࢭ Measure product Build Learn data
  30. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 30 αʔϏεʹର͢Δཧղ ݱ࣮ ֶͼ લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ ޮ཰తͳֶͼ

  31. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 31 αʔϏεʹର͢Δཧղ ݱ࣮ ֶͼ ࢪࡦ݁Ռͷ༧૝ ࢪࡦͷ݁Ռ ࢥͬͨΑΓ ྑ͍ /

    ѱ͍ ͦΕ͸ͳ͔ͥʁ લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ ޮ཰తͳֶͼ
  32. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ 33 αʔϏεʹର͢Δཧղ ݱ࣮ ࢪࡦ݁Ռͷ༧૝ ࢪࡦͷ݁Ռ લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ ޮ཰తͳֶͼ

  33. ֤ϑΣʔζͷઃܭ 34

  34. ֤ϑΣʔζͷઃܭ ʙBuildʙ 35 Build ʹ͍ͭͯલ΋ͬͯ΍͓ͬͯ͘͜ͱ ɾઈରʹݕূ͍ͨ͠Ծઆͷ໌֬Խ ɾݕূഎܠͷ੔ཧ ɾݕূ಺༰ɾ஫ҙ఺౳ͷ੔ཧ

  35. ֤ϑΣʔζͷઃܭ ʙMeasureʙ 36 Measure ʹ͍ͭͯલ΋ͬͯ΍͓ͬͯ͘͜ͱ ɾܭଌख๏ͷબఆ ɾKPI ͷܾఆ ɹ* ଞʹӨڹΛ༩͑Δࢦඪ͕ͳ͍͔֬ೝ͢Δ

    ɾϩάͷ֬ೝɺSQL ͷ࣮ߦ ɹ* ࣮ࡍʹҰ౓ SQL Λୟ͍ͯΈΔ
  36. ֤ϑΣʔζͷઃܭ ʙLearnʙ 37 Learn ʹ͍ͭͯલ΋ͬͯ΍͓ͬͯ͘͜ͱ ɾࢦඪղऍͷ੔ཧ ɹ* ͜ͷ਺஋͕ߴͯ͘͜ͷ਺஋͕௿͍ͱ͖͸ͲΜͳͱ͖ͩΖ͏͔ ɾ݁Ռͷ૝ఆ ɹ*

    ଌఆࢦඪ͕Ͳͷ͘Β͍ͷ਺ࣈʹͳͬͨΒͲ͏͢Δ͔ ɹ*ʮͳΜͱͳ͘GO ʯΛආ͚Δʢ࡞ͬͨ΋ͷ͸ग़ͨ͘͠ͳΔʣ ɾʮ੒ޭͷΠϝʔδʯΛڞ༗͢Δ
  37. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτʙ࣮ྫʙ 38 ࢪࡦલʹ͓͜ͳ͏ٞ࿦ͷྫ

  38. ࣾ಺Ͱར༻͞ΕΔπʔϧ΍ ϑϨʔϜϫʔΫͷ঺հ 39

  39. Build 40

  40. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Build ʙ 41 Ձ஋Ծઆγʔτ

  41. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Build ʙ 42 Ձ஋Ծઆγʔτ

  42. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Build ʙ 43 Chanko ɾϓϩτλΠϓ։ൃΛαϙʔτ͢Δ Rails ϓϥάΠϯ ɾϢʔβʔηάϝϯτ͝ͱͷϩδοΫద༻

    ɾΤϥʔൃੜ࣌ͷϑΥʔϧόοΫ ɾhttps://github.com/cookpad/chanko EazyAb ɾA/B ςετ༻ Chanko ֦ு
  43. Measure 44

  44. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Measure ʙ 45 Hakari2 ɾϩΪϯάɾKPI ؅ཧπʔϧ ɾΩʔϫʔυΛઃఆͯ͠ΠϕϯτΛϩΪϯάͰ͖Δ ɾࣗಈͰ

    dashboard ͕࡞੒͞ΕΔ
  45. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Measure ʙ 46 papa dashboard ɾHakari2 ͷϩάΛ΋ͱʹूܭ݁ՌΛՄࢹԽ ɾ༗ҙ͕ࠩ͋Γͦ͏͔Ͳ͏͔ͷ໨҆

  46. Learn 47

  47. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Learn ʙ 48 Report.md ɾࢪࡦͷ෼ੳϨϙʔτΛ Markdown Ͱ࡞੒ ɾPull

    Request ܗࣜͰӡ༻ ɾνʔϜͷϨϙδτϦʹɺϨϏϡʔͷ௨ͬͨ஌ݟΛϓʔϧ
  48. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Learn ʙ 49 Report.md 1. ࢪࡦͷ෼ੳϨϙʔτΛ Markdown Ͱ࡞੒͠ɺPR

    Λఏग़
  49. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Learn ʙ 50 Report.md 2. νʔϜϝϯόʔΛத৺ʹϨϙʔτΛϨϏϡʔ

  50. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Learn ʙ 51 Report.md 3. ϨϏϡʔ͕௨ͬͨΒϚʔδͯ͠ϨϙʔτΛϓʔϧ

  51. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Learn ʙ 52 Report.md ɾ஌ݟͷϓʔϧՕॴ͕໌֬ʹͳΔ͜ͱͰࢀরੑ্͕͕Δ ɾϨϏϡʔΛ௨͢͜ͱͰɺ஌ݟͷਫ਼౓্͕͕Δ ɾϨϏϡʔࣗମʹΑͬͯɺ઱౓ͷߴ͍ঢ়ଶͰҰ౓஌ݟ͕ڞ༗͞ΕΔ ɾϨϏϡϫʔͷࢪࡦɾαʔϏεʹର͢Δཧղ͕ਂ·Δ

    ɾPR ্ͷٞ࿦͔Βࢪࡦͷ൓ল΍ΞΠσΟΞ͕ੜ·ΕΔ
  52. ·ͱΊ 53

  53. ·ͱΊ 54 ɾαʔϏε։ൃͰ͸ɺԾઆͷ࣮ߦ͔ΒֶͼΛಘΔαΠΫϧ͕࠷΋ॏཁ ɾஞ࣍తʹ࣮ߦͤͣɺ࠷ॳʹαΠΫϧશମΛઃܭ͢Δ ɾ֤ϑΣʔζͰద੾ͳϑϨʔϜϫʔΫΛ࢖͏