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

クックパッドにおけるAndroidエンジニアの役割とその変遷

800912a73ce4e879003b6c89cf80cfeb?s=47 yagi
February 19, 2016

 クックパッドにおけるAndroidエンジニアの役割とその変遷

少人数1チーム体制時代から多事業部多人数体制時代までAndroidエンジニアの役割が変遷していくなかでチームが直面した課題とそれを解決する為に構築してきた開発プロセスや習慣、仕組みをお話します。すぐに導入できそうなものを中心に紹介します。

800912a73ce4e879003b6c89cf80cfeb?s=128

yagi

February 19, 2016
Tweet

Transcript

  1. ΫοΫύουʹ͓͚Δ "OESPJEΤϯδχΞͷ໾ׂͱ ͦͷมભ %SPJE,BJHJ 300." ϋογϡλάɿ%SPJELBJHJ"

  2. ର৅ऀ wϞόΠϧ։ൃνʔϜΛ཰͍͍ͯΔਓ wࢀՃ͍ͯ͠Δਓ w͜Ε͔Β࡞͍ͬͯ͜͏ͱࢥ͍ͬͯΔਓ

  3. ࿩͢͜ͱ wগਓ਺νʔϜମ੍࣌୅͔Βଟࣄۀ෦ଟਓ਺ ମ੍࣌୅·Ͱ"OESPJEΤϯδχΞͷ໾ׂ͕ มભ͍ͯ͘͠ͳ͔ͰνʔϜ͕௚໘ͨ͠՝୊ͱ ͦΕΛղܾ͢Δҝʹߏங͖ͯͨ͠։ൃϓϩη ε΍श׳ɺ࢓૊Έ w͙͢ʹಋೖͰ͖ͦ͏ͳ΋ͷΛத৺ʹ঺հ w˞ίʔυ͸ग़͖ͯ·ͤΜɻ

  4. ΫοΫύουʹ͓͚Δ "OESPJEΤϯδχΞͷ໾ׂͱ ͦͷมભ %SPJE,BJHJ 300." ϋογϡλάɿESPJELBJHJ" Λࢧ͑ͨ։ൃϓϩηε

  5. ࣗݾ঺հ wീ໦ढ़޿ !TZTZBHJ  ‣ "OESPJE&OHJOFFS ‣ ΫοΫύουגࣜձࣾങ෺৘ใࣄۀ෦ॴଐ ‣ ೥ೖࣾ

    w࠷ۙͷझຯ(JUIVCʹ૲Λੜ΍͠ଓ͚Δ
  6. None
  7. None
  8. ΫοΫύου"OESPJE NPCJMFBQQશମͷ ݄ؒར༻ऀ਺ ."6 ສ ˞೥݄࣌఺

  9. ΫοΫύου"OESPJE NPCJMFBQQશମͷ ݄ؒར༻ऀ਺ ."6 ສ ͷ͘Β͍͕"OESPJE ˞೥݄࣌఺

  10. w೥݄d wϋΠϒϦουΞϓϦOBUJWFΞϓϦԽ wϑϧεΫϥον w"OESPJEΤϯδχΞਓ গਓ਺ମ੍࣌୅

  11. DPPLQBEBQQ NPCJMFHSPVQ EFW গਓ਺ମ੍࣌୅

  12. w 8FCͰఏڙ͍ͯ͠ΔػೳΛOBUJWFʹҠ২͢Δ w ඞཁͳ"1*ͷચ͍ग़͠ɺ࢓༷࡞੒ɺௐ੔ w "OESPJEಛ༗ͷσβΠϯͱମݧΛ࡞Δ w େྔͷJTTVFΛͻͨ͢ΒফԽ ΍͍ͬͯͨ͜ͱ

  13. w(JUIVC&OUFSQSJTFͰJTTVF؅ཧ w1VMM3FRVFTU3FWJFX w$* +FOLJOT ͰͷNBTUFSCSBODIϏϧυ w%FQMPZHBUF΁EFCVH൛Λ഑৴ ਓͷ։ൃελΠϧ

  14. w"OESPJEBQQͷ։ൃྗΛൃش͢Δ "OESPJEΤϯδχΞͱͯ͠ͷ໾ׂ

  15. wແࣄϦϦʔε wେ͖ͳ໰୊͸ͳ͠ w଺ࡏ࣌ؒVQ ೥݄ϦϦʔε

  16. ೥݄ϞόΠϧϑΝʔετࣨઃཱ

  17. DPPLQBEBQQ NPCJMFpSTUUFBN EJWJTJPO SFRVFTU EFW LOPXMBHF ରଟ෦ॺମ੍࣌୅

  18. ౰࣌ͷࢲͷߟ͑ํ ͨͿΜಈ͘ͱࢥ͏͔Β ϦϦʔε͠Α͏ͥ

  19. ͨͿΜಈ͘ͱࢥ͏͔Β ϦϦʔε͠Α͏ͥ wͲΜͲΜػೳΛ։ൃ͠ wCVH͕ݟ͔ͭͬͨΒΨϯΨϯ௚͠ wεϐʔσΟʹϦϦʔε͢Δ wͦΕ͕Ձ஋Λఏڙ͢Δࣄʹܨ͕Δ

  20. ͔͠͠਺ճΞοϓσʔτ͢Δͱʜ  $SBTIMZUJDT

  21. ͔͠͠਺ճΞοϓσʔτ͢Δͱʜ DSBTIEBZ 66ʹӨڹ ܰඍͳCVHͰ΋໋औΓʜ

  22. ԿΛ͍ͭมߋ͚ͨͬ͠ʁ 

  23. ͍ͭͰ͖Δʁ ̋̋ػೳΛೖΕ͍ͨͷͰ༧ఆΛཱ͍ͯͨ ͚Ͳ࣍ͷόʔδϣϯ͸͍ͭͰ·͔͢ʁ Θ͔Γ·ͤΜʜ

  24. ՝୊ w Ξοϓσʔτ͢Δͱ͙͢ʹ਺ेສਓ͕ར༻͠͸͡ΊΔɺܰඍͳCVH ͕େ͖ͳӨڹΛ༩͑ͯ͠·͏ w NPCJMFBQQ͸8FCαʔϏεͱ͸ҟͳΓɺҰճϦϦʔε͢Δͱ औΓফͤͳ͍ɻ඼࣭ʹΑΓγϏΞʹͳΒͳ͚Ε͹ͳΒͳ͍ɻ w ඼࣭VQͷͨΊʹ࡞ۀʹ຅಄͕ͪ͠Ͱόʔδϣϯؒͷࠩ෼ʹ͍ͭͯ ҙ͕ࣝճΒͳ͍ɺࠂ஌΍υΩϡϝϯτ౳ͷίϛϡχέʔγϣϯΛ

    ͢ΔՋ͕ͳ͍ w ϦϦʔεαΠΫϧ͕໌֬Ͱ͸ͳ͍ͷͰ֤෦ॺͰ༧ఆ͕ͨͨͳ͍ w ͋;ΕΔJTTVF
  25. ͨͿΜಈ͘ͱࢥ͏͔Β ϦϦʔε͠Α͏ͥ

  26. w҆ఆతͳϦϦʔεΛߦ͏ΞϓϦέʔγϣ ϯ։ൃϓϩηεΛߏங͠ɺଟਓ਺Ͱͷ։ ൃΛࢧ͑Δ w඼࣭޲্ͷ࢓૊Έ࡞ΓɺφϨοδͷ஝ੵ Λ͢Δ wͰ΋εϐʔυ͸Լ͛ͳ͍ "OESPJEΤϯδχΞͱͯ͠ͷ໾ׂ

  27. )PX

  28. ϦϦʔεຖʹ,15ʹΑΔ ৼΓฦΓΛ։࢝ http://techlife.cookpad.com/entry/2014/10/31/093305

  29. ϦϦʔεຖʹ,15ʹΑΔ ৼΓฦΓΛ։࢝ w ,FFQ w ؆୯ͳࣄͰ΋ग़དྷͨ͜ͱΛ ͲΜͲΜग़͢ w 1SPCMFN w

    ղܾ͢΂͖՝୊Λચ͍ग़͢ w 5SZ w 1SPCMFNΛղܾ͢Δ۩ମ తͳߦಈΛఆٛ͢Δ ܧଓతͳ վળ
  30. ແ๏஍ଳͩͬͨ։ൃϓϩηεΛίϯ τϩʔϧͰ͖ΔϧʔϧΛ࡞Δ

  31. ໨ࢦ͢ํ޲ੑ wΘ͔Γ΍͍͢ w୯७Ͱ͋Δ wޮՌతͰ͋Δ

  32. ϦϦʔεεέδϡʔϧͷఆٛ w ։ൃظؒӦۀ೔ w ςετӦۀ೔ w ϦϦʔεӦۀ೔ w ϦϦʔεӦۀ೔ w

    ϦϦʔεӦۀ೔ w ϦϦʔεӦۀ೔
  33. ϦϦʔεεέδϡʔϧͷఆٛ wϦϦʔεӦۀ೔ wϦϦʔε͔Β࣍ͷ։ൃظ͕ؒ࢝·Δɻ ϦϦʔεͱϦϦʔεͷؒ͸िؒ wස౓͕ଟ͗ͣ͢গͳ͗͢ͳ͍όϥϯε wεέδϡʔϧʹԊͬͯมߋΛߟ͑Δ

  34. ։ൃऴྃ೔໰୊ ։ൃ։࢝ $' ։ൃظؒӦۀ೔

  35. ։ൃऴྃ೔໰୊ ։ൃ։࢝ $' ։ൃظؒӦۀ೔ 1VMM3FRVFTU ?R?

  36. ։ൃ։࢝ $' ։ൃظؒӦۀ೔ 1VMM3FRVFTU ?R? ίʔυϑϦʔζͱ͸ ։ൃऴྃ೔໰୊

  37. w ϨϏϡʔ࣌ؒɺमਖ਼Λߟྀͯ͠13కΊ੾Γ೔ Λ։ൃऴྃӦۀ೔લʹஔ͍ͨ ։ൃ։࢝ 13࠷ऴ೔ $' ։ൃظؒӦۀ೔ 13కΊ੾Γͷಋೖ

  38. ϦϦʔεΧϨϯμʔͷ࡞੒ͱڞ༗

  39. HJUͷϒϥϯνϯάͷํ਑Λఆٛ ։ൃ։࢝ 13࠷ऴ೔ $' 3$CSBODI NBTUFS 2"   

    
  40. HJUͷϒϥϯνϯάͷํ਑Λఆٛ ։ൃ։࢝ 13࠷ऴ೔ $' 3$CSBODI NBTUFS 2"   

     ࠩ෼͕͋Ε͹౎౓NFSHF
  41. HJUͷϒϥϯνϯάͷํ਑Λఆٛ ։ൃ։࢝ 13࠷ऴ೔ $' 3$CSBODI NBTUFS 2"   

     ࠩ෼͕͋Ε͹౎౓NFSHF جຊతʹৗʹNBTUFSΛ޲͍ͯ։ൃ͢Ε͹ྑ͍
  42. มߋͷશͯΛJTTVFʹ͢Δ w HJUIVCʹόʔδϣϯຖͷϚΠϧετʔϯΛ࡞Δ w ෦ॺϥϕϧΛ࡞੒ w ֤όʔδϣϯʹೖΕ͍ͨมߋΛશͯJTTVFԽ͢Δ w 13కΊ੾ΓલͳͲʹਐḿΛ֬ೝ w

    ϚΠϧετʔϯʹೖ͍ͬͯΔJTTVFʹؔ͢Δมߋ Λશͯςετ
  43. ίϯτϩʔϥϒϧͳϦϦʔε w෦ॺؒͰͷεέδϡʔϧௐ੔͕جຊతʹෆ ཁʹͳΔ w௚લͷۦ͚ࠐΈ13౳ͷ๷ࢭɺ࣏҆ҡ࣋ wมߋࠩ෼͕ϚΠϧετʔϯΛݟΕ͹Θ͔Δ w҆ఆͨ͠։ൃ͕Մೳʹͳͬͨ

  44. ඼࣭Λ্͛Δ ӡ༻ίετΛԼ͛Δ

  45. ϦϦʔεલ ϦϦʔεޙ w ϦϦʔεεέδϡʔϧʹ ΑΔࠩ෼ͷೖΔλΠϛϯ άͷ౷੍ w ϨϏϡʔʹΑΔݕग़ w ϚΠϧετʔϯʹΑΔશ

    ࠩ෼ͷՄࢹԽ w ϚΠϧετʔϯࠩ෼Λத ৺ʹ໢ཏతͳςετ ʁ
  46. ϦϦʔεޙͰ͖Δ͚ͩૣ͘ݟ͚͍ͭͨࣄ w ಛఆέʔεͰ͚ͩ࠶ݱ͢ΔΫϥογϡ w "1*ͷ༧ظͤ͵Τϥʔ ‣ σʔλग़޲Λϛεͬͯ ‣ มͳτʔΫϯͰϦΫΤετͯ͠ ϩάΞ΢τ

     wϦϦʔεͨ͠ػೳ΍ͳͨ͘͠ػೳʹର͢Δ੠
  47. ϦϦʔεޙ؂ࢹͱͯ͠·ͱΊͯ΍Δ ϦϦʔεͨ࣌ؒ͠ޙɺேɺ༦ํΛ೔ؒɺ ֤छνΣοΫ݁ՌΛه࿥͢Δ

  48. ༧ظͤ͵ΫϥογϡΛૉૣ͘ݕग़ (PPHMF"OBMZUJDTͷϦΞϧλΠϜαϚϦͱ$SBTIMZUJDTͷঢ়گΛݟΔɻ

  49. ༧ظͤ͵ΫϥογϡΛૉૣ͘ݕग़ ৽όʔδϣϯͷൺ཰ʹରͯ͠Ϋϥογϡ਺͕ଟ͘ͳ͍͔ʁ (PPHMF"OBMZUJDTͷϦΞϧλΠϜαϚϦͱ$SBTIMZUJDTͷঢ়گΛݟΔɻ

  50. ༧ظͤ͵ΤϥʔΛૉૣ͘ݕग़ "1*ͷΤϥʔϩάΛ,JCBOBʹྲྀ͠άϥϑԽɻલόʔ δϣϯͱ͘Β΂ͯΤϥʔ͕௓Ͷ͍ͯͳ͍͔Λ؂ࢹ͢Δ https://www.elastic.co/downloads/kibana

  51. Ϣʔβͷ੠Λฉ͘ ͝ҙݟϑΥʔϜʹૹΒΕͨಛఆόʔδϣϯͷ੠ΛνΣοΫ

  52. ϦϦʔεલ ϦϦʔεޙ w ϦϦʔεεέδϡʔϧʹ ΑΔࠩ෼ͷೖΔλΠϛϯ άͷ౷੍ w ϨϏϡʔʹΑΔݕग़ w ϚΠϧετʔϯʹΑΔશ

    ࠩ෼ͷՄࢹԽ w ϚΠϧετʔϯࠩ෼Λத ৺ʹ໢ཏతͳςετ w $SBTIMZUJDTͷνΣοΫ w ,JCBOBͰͷ"1*Τ ϥʔνΣοΫ w ͝ҙݟͷνΣοΫ
  53. ϦϦʔεલޙͰ΍Δࣄͷ୔ࢁ͋ΔΑͶ໰୊ w ϚΠϧετʔϯʹೖΕΔ JTTVFͷ४උ w όʔδϣϯίʔυͷߋ৽ w JTTVFͷਐḿ֬ೝ w ίʔυϑϦʔζͱ3$

    CSBODI࡞੒ w ࠩ෼ͷϦετΞοϓͱς ετ w ϥΠηϯεͷνΣοΫ w ߋ৽จݴ w ϦϦʔεޙ؂ࢹ w ,15ͷεέδϡʔϧ֬อ w FUDʜ
  54. ϦϦʔεલޙͰ΍ΔࣄͷνΣοΫϦετ ΛJTTVFԽ͢Δ

  55. ϦϦʔεલޙͰ΍Δࣄ͍ͭͩΕ͕΍Δͷ໰୊ ͋ɺ୭͔΍ͬͯΔͱࢥͬͯͨ ͋ʜ

  56. ϦϦʔεϚωʔδϟ ඞཁͳ߲໨Λ νΣοΫϦετԽ͠ɺ ϦϦʔεͷ͍͋ͩʹ ͦΕΛશͯ୲౰͢Δ ໾ׂΛ࡞Γɺ࣋ͪ·ΘΔ http://techlife.cookpad.com/entry/2015/02/25/093000

  57. ඼࣭Λ্͛Δ࢓૊Έ ӡ༻ίετΛԼ͛Δ࢓૊Έ wϦϦʔεલޙͰΤϥʔݕग़Λૉૣ͘ߦ͑ΔΑ ͏ʹͳͬͨ wϦϦʔεલޙʹ΍Δ΂͖ࣄΛνΣοΫϦετ Խ͢ΔࣄͰ࿙Ε͵͚͕ແ͘ͳͬͨ wͦΕΒΛϦϦʔεϚωʔδϟ͕ड͚࣋ͭࣄͰ ։ൃऀ͸։ൃʹूதͰ͖ΔΑ͏ʹͳͬͨ

  58. ೥຤ wϦϦʔεαΠΫϧͷ҆ఆ ճϦϦʔε  wDSBTIEBZ ݮ

  59. ೥݄ϞόΠϧϑΝʔετࣨղࢄ ϞόΠϧج൫νʔϜઃཱ ج൫ ج൫ 6' 6' ւ֎ ւ֎ ւ֎ ձһ

    ങ෺ ങ෺
  60. wࣄۀ෦಺ͰαʔϏεͷ੒௕ʹ੹೚Λ ࣋ͭ ओʹ"OESPJE෦෼  wࣄۀΛՃ଎ͤ͞Δ։ൃج൫ΛڧԽ͠ ͍ͯ͘ "OESPJEΤϯδχΞͱͯ͠ͷ໾ׂ

  61. DPPLQBEBQQ NPCJMFpSTUUFBN EJWJTJPO SFRVFTU EFW LOPXMBHF ରଟ෦ॺମ੍࣌୅ EFW

  62. DPPLQBEBQQ EJWJTJPO EFW EFW NPCJMFGPVOEBUJPOUFBN EFW EFW EFW EFW ଟࣄۀ෦ଟਓ਺ମ੍࣌୅

  63. AD ݕࡧ݁Ռը໘

  64. AD ݕࡧ݁Ռը໘ ձһࣄۀ෦ ങ෺৘ใࣄۀ෦ ݕࡧฤ੒෦ ޿ࠂࣄۀ෦ ౤ߘਪਐ෦

  65. w ίʔυ ߦ͘Β͍ w Ϋϥε਺͘Β͍ w ϝιου਺ ͘Β͍ w ϥΠϒϥϦࠐΈ

    QSPHVBSEࡁ  w ը໘਺͘Β͍ w ίʔυมߋऀϦϦʔεͰਓ ݁ߏͰ͔͍
  66. wࣄۀ෦಺ͰαʔϏεͷ੒௕ʹ੹೚Λ ࣋ͭ ओʹ"OESPJE෦෼  wࣄۀΛՃ଎ͤ͞Δ։ൃج൫ΛڧԽ͠ ͍ͯ͘ wଟࣄۀ෦ଟਓ਺Ͱ΋εϐʔυɺ඼࣭ Λམͱ͞ͳ͍ମ੍࡞Γ "OESPJEΤϯδχΞͱͯ͠ͷ໾ׂ

  67. )PX

  68. ,15 ,15 ,15 http://techlife.cookpad.com/entry/2014/10/31/093305

  69. ՄࢹԽͱίϛϡχέʔγϣϯ

  70. "OESPJEேձ wͦͷόʔδϣϯʹؔΘΔ։ൃऀ͕ϞόΠ ϧج൫Λத৺ʹ෦ॺԣஅతʹू·Γ࿩͢ɻ ෼ఔ౓ɻ wεέδϡʔϧɺ૬ஊɺप஌ͳͲͳͲ

  71. νϟοτͰͷ௨஌ΛڧԽ w (JUIVC্ͷίϝϯτɺ13ɺ NFSHF౳ͷΠϕϯτ௨஌ w ։ൃεέδϡʔϧΛຖ೔௨ ஌ w $*4UBUVTΛ௨஌

  72. 1VMM3FRVFTUޮ཰Խ w 1VMM3FRVFTUग़͢ͱ$*ͰϏϧ υͯ͠%FQMPZHBUFʹ഑৴ w σβΠϯ֬ೝ౳ḿΔ w %PLVNJ IUUQT HJUIVCDPNDPPLQBE

    EPLVNJ Λ࢖ͬͯࣗಈతʹࡉ ͔͍CVH౳Λࢦఠ w pOECVHT BOESPJEMJOU
  73. [BUTVϦϙδτϦ w ϞόΠϧ։ൃͷશൠతͳ՝୊΍ཁ ๬ɺ΍Γ͍ͨ͜ͱɺເͳͲΛࡶʹ ॻ͘ઐ༻ϦϙδτϦ w ϞόΠϧج൫νʔϜ͕Ҿ͖औΔ৔ ߹΋͋Ε͹JTTVFΛॻ͍ͨਓ͕ ΰϦοͱ΍Δ৔߹΋͋Δ w

    ࣾ಺ษڧձͷݕ౼JTTVF΍ҿΈ ʹߦ͘༧ఆΛ٧ΊΔJTTVFͳͲ ΋࡞ΒΕΔ ࡶͳൃ૝Λ׆͔͢νʔϜ࡞Γ:http://techlife.cookpad.com/entry/2015/03/25/202709
  74. ே-JOUʹΑΔมߋϋʔυϧ௿ݮ ேLint׆ಈͰࡉ͔ͳٕज़తෛ࠴Λฦࡁ͢Δ : http://techlife.cookpad.com/entry/2015/09/15/190000 w UZQP΍ϝιουͷߏ଄ͷվળ΍ ίϯύΠϥ͕ు͘ܯࠂͷमਖ਼ͳͲ ༏ઌ౓͕௿͍΋ͷͰ΋ͲΜͲΜम ਖ਼͢Δश׳ w

    খ͞ͳ΋ͷΛͭͿ͍ͯͬͯ͠େ͖ ͳ΋ͷʹͿ͔ͭͬͨ৔߹͸JTTVF Խ w ෦ॺԣஅతͳ׆ಈ w ࠓͰ͸ே-JOUͱ໏ଧͨͳͯ͘΋ ΍ΔΑ͏ʹͳͬͨ
  75. ϥΠϒϥϦಋೖʹΑΔޮ཰Խ ΞʔΩςΫνϟͷվળ w3FUSPMBNCEB 3Y+BWB 3Y5" %BUB #JOEJOH-JCSBSZ &BTZ1BSDFMBCMF LWT TDIFNB

    GSBHNFOUDSFBUPS "OESPJE0SNB  1FSNJTTJPOT%JTQBUDIFS 3PCPMFDUSJD wಋೖ࣌ʹ͸QSPTDPOTΛٞ࿦͢ΔJTTVFΛཱͯͨΓ ษڧձΛ։͍ͨΓ͢Δ wے೑ɺ2"ϑΣʔζʹపఈతʹςετΛ͢Δ Android։ൃͰRxJavaΛνʔϜʹಋೖͨ͠࿩ : http://techlife.cookpad.com/entry/2015/04/17/100000
  76. ಉ͡ધʹ৐Δ w ؔ܎ऀͷ೔ʑͷܧଓతͳձ࿩Ͱҙ͕ࣝζϨͳ͍ w νϟοτͰͷΠϕϯτͷՄࢹԽʹΑΔٞ࿦ͷ׆ੑԽ w ΍Γ͍ͨࣄ΍ཁ๬Λ࿩ͤΔงғؾ w ຊ౰ʹ΍Δ΂͖͔Λਅ݋ʹٞ࿦͋͑͠Δงғؾ w

    ෦ॺԣஅతʹվળΛଓ͚Δงғؾ
  77. ೥຤ wϦϦʔεαΠΫϧͷҡ࣋ ճͷϦϦʔε  wεϐʔυͷҡ࣋ CVHpY ઃܭվળ ৽ػ ೳFUDʜ 

    wDSBTIEBZ ߋʹ඼࣭Ξοϓ
  78. ೥ϕετΞϓϦ

  79. τοϓσϕϩούʔ

  80. d

  81. ·ͩ·ͩ΍Δ͜ͱ͕୔ࢁ

  82. 6TFS'JSTU ͢΂ͯ͸ϢʔβͷͨΊʹ

  83. ຖ೔ͷྉཧΛָ͠Έʹ͢Δ͜ ͱͰɺ৺͔ΒͷসإΛ૿΍͢

  84. 8F`SFIJSJOH -FUTFOKPZ"OESPJEUPHFUIFS

  85. ࣭ٙԠ౴