Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Kohei Arai
February 11, 2018

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

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

Kohei Arai

February 11, 2018
Tweet

More Decks by Kohei Arai

Other Decks in How-to & DIY

Transcript

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

    View Slide

  2. ࣗݾ঺հ
    2
    ৽Ҫ ߁ฏ
    @SpicyCoffee66
    ɾ2017 ೥৽ଔೖࣾ ΤϯδχΞ
    ɾαʔϏε։ൃ෦ ͕͢͞νʔϜ഑ଐ
    ɹ* ݕূͷ૊Έཱ͔ͯΒ࣮૷ɾ෼ੳ·Ͱ
    ɹ* cookpad studio ͷ
    ɹ αʔόʔαΠυϝΠϯΤϯδχΞ
    ɾࠓظ͔Β͸ձһࣄۀ෦഑ଐ
    ɾRails, SQL

    View Slide

  3. ຊ೔ͷओ୊
    ΫοΫύουͰ͸
    ͲͷΑ͏ʹ։ൃαΠΫϧΛճ͍ͯ͠Δ͔
    3

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. ֶͼͷαΠΫϧ ʙݱ࣮ʙ
    10
    BML ϧʔϓ
    Measure
    Learn
    product
    idea
    data
    Build
    ͍͍ͩͨ
    ͲͷϑΣʔζͰ΋
    ࣦഊ͢Δ

    View Slide

  11. Case: 1
    11

    View Slide

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

    View Slide

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

    Push ௨஌ʹը૾

    View Slide

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

    View Slide

  15. ֶͼͷαΠΫϧࣦഊྫ
    15
    Push ௨஌ͷޮՌ͕஌Γ͍ͨ
    Push ௨஌ͷ࣮૷
    <<< Push ௨஌ʹը૾
    Ϧίϝϯυػೳ
    ͡Ό͋ઐ༻ͷ LP ΋࡞Γ·͠ΐ͏ʂʂʂ
    ઐ༻ LP
    !ʁʁʁ

    View Slide

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

    View Slide

  17. Case: 2
    17

    View Slide

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

    View Slide

  19. ֶͼͷαΠΫϧࣦഊྫ
    19
    Measure ͷࣦഊ
    ɾ͍͟ܭଌ͠Α͏ͱ͢Δͱϩά͕ຒ·͍ͬͯͳ͍
    ɾෳ਺ͷ A/B ςετ͕িಥͯ͠ܭଌ݁ՌʹӨڹ͕ग़Δ
    ɾूܭ SQL ʹؒҧ͍͕͋Γɺ࠷ѱͷ৔߹ͦΕʹؾ͕͔ͭͳ͍

    View Slide

  20. Case: 3
    20

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ
    27
    લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍
    Measure
    product
    Build
    idea
    data
    ɾϩά͕଍Γͳ͍
    ɾͲ͏͍͏਺஋Λ
    ɹܭଌ͢Δͷ͔ෆ໌ྎ
    ख໭Γͷ๷ࢭ

    View Slide

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

    View Slide

  29. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ
    29
    લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍
    Measure
    product
    Build
    Learn
    data
    idea
    ԾઆΛཱͯΔஈ֊Ͱ
    αΠΫϧͷઌʹؔ͢Δ͜ͱ΋
    ܾΊΕΔ΋ͷ͸ܾΊͯ͠·͏
    ख໭Γͷ๷ࢭ
    Measure
    product
    Build
    Learn
    data

    View Slide

  30. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτ
    30
    αʔϏεʹର͢Δཧղ ݱ࣮
    ֶͼ
    લ͔Βॱ൪ʹ΍Ζ͏ͱ͠ͳ͍ ޮ཰తͳֶͼ

    View Slide

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

    View Slide

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

    View Slide

  33. ֤ϑΣʔζͷઃܭ
    34

    View Slide

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

    View Slide

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

    View Slide

  36. ֤ϑΣʔζͷઃܭ ʙLearnʙ
    37
    Learn ʹ͍ͭͯલ΋ͬͯ΍͓ͬͯ͘͜ͱ
    ɾࢦඪղऍͷ੔ཧ
    ɹ* ͜ͷ਺஋͕ߴͯ͘͜ͷ਺஋͕௿͍ͱ͖͸ͲΜͳͱ͖ͩΖ͏͔
    ɾ݁Ռͷ૝ఆ
    ɹ* ଌఆࢦඪ͕Ͳͷ͘Β͍ͷ਺ࣈʹͳͬͨΒͲ͏͢Δ͔
    ɹ*ʮͳΜͱͳ͘GO ʯΛආ͚Δʢ࡞ͬͨ΋ͷ͸ग़ͨ͘͠ͳΔʣ
    ɾʮ੒ޭͷΠϝʔδʯΛڞ༗͢Δ

    View Slide

  37. ֶͼͷαΠΫϧͷӡ༻ϙΠϯτʙ࣮ྫʙ
    38
    ࢪࡦલʹ͓͜ͳ͏ٞ࿦ͷྫ

    View Slide

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

    View Slide

  39. Build
    40

    View Slide

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

    View Slide

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

    View Slide

  42. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Build ʙ
    43
    Chanko
    ɾϓϩτλΠϓ։ൃΛαϙʔτ͢Δ Rails ϓϥάΠϯ
    ɾϢʔβʔηάϝϯτ͝ͱͷϩδοΫద༻
    ɾΤϥʔൃੜ࣌ͷϑΥʔϧόοΫ
    ɾhttps://github.com/cookpad/chanko
    EazyAb
    ɾA/B ςετ༻ Chanko ֦ு

    View Slide

  43. Measure
    44

    View Slide

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

    View Slide

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

    View Slide

  46. Learn
    47

    View Slide

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

    View Slide

  48. ࣾ಺ϑϨʔϜϫʔΫͷ঺հ ʙ Learn ʙ
    49
    Report.md
    1. ࢪࡦͷ෼ੳϨϙʔτΛ Markdown Ͱ࡞੒͠ɺPR Λఏग़

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. ·ͱΊ
    53

    View Slide

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

    View Slide