Mobile First Development at COOKPAD #deploygate

Mobile First Development at COOKPAD #deploygate

Bakusoku Iterations Tokyo at mixi (2014/5/29) の発表資料です

http://deploygate.doorkeeper.jp/events/11579

9278c3a06b8d8752fb913dea93f959c1?s=128

FUJI Goro

May 29, 2014
Tweet

Transcript

  1. Mobile First Development at COOKPAD Bakusoku Iterations Tokyo #Deploygate 2014/5/29

    by FUJI Goro
  2. ࣗݾ঺հ - FUJI Goro (gfx) • Software Engineer at COOKPAD

    • iOS/Android྆ํ΍Δ • ϞόΠϧΞϓϦͷ։ൃޮ཰Λ্͛Δͷ͕ओͳ࢓ࣄ • ௚ۙͩͱϥΠϒϥϦͷ։ൃ͕ϝΠϯ • ੜ࢈ੑ͋͛ͯ͜ˢˢ
  3. None
  4. COOKPADͷϞόΠϧΞϓϦ

  5. None
  6. ͦͷଞ • μΠΤοτࢧԉΞϓϦ͕͍͔ͭ͘ • μΠΤοτ 80 / μΠΤοτͻͱΓͿΜ • ݕࡧʹಛԽͨ͠ΞϓϦ͕͍͔ͭ͘

    • ುύου / Ωϟϕπύου • ͞Βʹଟ͘ͷΞϓϦΛϦϦʔε༧ఆ
  7. Mobile First Development

  8. ϢʔβʔϑΝʔετͳ։ൃ • ϢʔβʔʹͱͬͯͷՁ஋Λ࠷େʹ͍ͨ͠ • ΞϓϦͷվળΛߴ଎ʹਐΊΔ • ػೳΛ࢖͑ͳ͍࣌ؒΛݮΒ͢ • ҆ఆͨ͠։ൃαΠΫϧͷཱ͕֬ෆՄܽ

  9. ։ൃମ੍

  10. ։ൃମ੍ɿશମߏ੒ • COOKPADΞϓϦ • iOS: 3ਓ • Android: 4~6ਓ •

    ͦͷଞͷΞϓϦ • جຊ1ਓʴඞཁʹԠͯ͡αϙʔτ
  11. ։ൃମ੍ɿνʔϜମ੍ • ϞόΠϧϑΝʔετࣨɿίΞνʔϜ਺ਓ • ֤αʔϏεͷ෦ॺͰ৽ػೳͷ࣮૷ɿ1ਓ~ • e.g. ϓϨϛΞϜαʔϏε, ಛച৘ใ •

    ҰͭͷΞϓϦΛෳ਺ͷ෦ॺͰڠௐͯ͠։ൃ
  12. ։ൃ؀ڥ • Android • Android Studio & Gradle • iOS

    • Xcode • AppCode (3.0 supports Storyboard!)
  13. Mobile Apps vs. Web Apps • cookpad.com͸΢ΣϒΞϓϦ • Ұ೔ʹ਺ճσϓϩΠΛߦ͏ •

    සൟʹσϓϩΠ͠໰୊͕͋Ε͹ϩʔϧόοΫ͢Δ • master͸ৗʹdeployՄೳͳঢ়ଶʹ͓ͯ͘͠ • ҰํMobile App͸ؾܰʹϩʔϧόοΫͰ͖ͳ͍
  14. Mobile AppsͷϦϦʔεαΠΫϧ • ϩʔϧόοΫͰ͖ͳ͍ͷͰ৻ॏʹ͍ͯ͠Δ • ϦϦʔε͝ͱͷ։ൃظؒ͸໿2~3िؒ • ৽ػೳ͸Ϛʔδલʹಈ࡞֬ೝ͢Δ • QAظؒ͸3೔ؒ

  15. VCSͱͷ෇͖߹͍ํ

  16. VCSͱͷ෇͖߹͍ํ • GitHub EnterpriseΛར༻ • masterʹೖΕΔίʔυ͸ඞͣPull RequestΛ ͠ɺνʔϜϝϯόʔʹΑΔϨϏϡʔΛඞਢʹ ͍ͯ͠Δ •

    UIʹؔΘΔมߋ͸σβΠφʔʹΑΔϨϏϡʔ ΋ඞਢʹ͍ͯ͠Δ
  17. gitͷϒϥϯνϯάϞσϧ • ࠷ॳ͸webͱಉ͡ελΠϧͰӡ༻͍ͯͨ͠ • ͍ΘΏΔgithub flow • P-RΛϚʔδ͢Δ·͑ʹݕূΛ͢·ͤΔ • ඞཁͳػೳΛ࣮૷͓͑ͨ͠ΒϦϦʔε

  18. ೔ࠒ͔Β։ൃ൛Λ࢖͍ͬͯΔ͠ɺϚʔδલ ʹݕূ͸͍ͯ͠Δ͔Β͜ΕͰେৎ෉…ʂ

  19. ʊਓਓਓਓਓਓਓʊ ʼɹಥવͷো֐ɹʻ ʉY^Y^Y^Y^Y^Yʉ

  20. ͦͯ࣌͠͸ྲྀΕ…

  21. ݱࡏͷϒϥϯνϯάεϞσϧ • ίʔυϑϦʔζˍQAظؒΛઃ͚ͨ • “A successful git branching model” (git-flow)

    ʹ͍ۙϒϥϯνϯάϞσϧʹͳͬͨ • ͨͩ͠git-flowͱҟͳΓdevelop͸࢖Θͳ͍
  22.  $PEF 'SFF[F 3$  'FBUVSF GPS NBTUFS GFBUVSF SFMFBTF

  23. ݱࡏͷworkflow • ඞཁͳػೳΛ࣮૷͓͑ͨ͠ΒίʔυϑϦʔζʢCFʣͱ͢Δ • CFͨ͠ΒϦϦʔεީิʢRCʣϒϥϯνΛͭ͘Δ • RC͕ผΕͨΒmaster͸ߋʹ࣍ͷόʔδϣϯͷͨΊͷम ਖ਼͕Ϛʔδ͞Ε͏Δ • RCϒϥϯνʹ͸ඞཁͳόάमਖ਼ΛೖΕΔ

    • ϦϦʔεͨ͠ΒRCϒϥϯνΛmasterʹϚʔδ͢Δ
  24. ՝୊ • iOS/AndroidνʔϜ֎ͱͷڠௐ͕೉͍͠ • ϒϥϯνϯάϞσϧͷڞ༗΋ෆे෼

  25. ։ൃ൛ΞϓϦͷ഑෍ TestFlight

  26. جຊతʹJenkinsͰࣗಈԽ

  27. TestFlight for iOS • AutoFlight ʹΑΔࣗಈ഑෇Λߦ͍ͬͯΔ • GitHub͔ΒͷWebHook௨஌ΛAutoFlightProxy͕ड͚ Δ •

    AutoFlightProxy͕JenkinsΛΩοΫ • Jenkins͕Ϗϧυͯ͠TestFlightʹΞοϓϩʔυ • ϒϥϯνʹΑͬͯ഑෇ઌͷνʔϜΛࣗಈతʹબͿ
  28. deploygate for Android • masterʹίϛοτ͕͋ͬͨΒJenkinsΛΩοΫ • Ϗϧυˍςετ • ςετ͸GenyMotionͰߦ͍ͬͯΔ •

    deploygateʹ഑৴͢Δ • deploygateΞΧ΢ϯτ͸GoogleεϓϨουγʔ
  29. -PDBM.BDIJOF QVTI LJDL UFTU CVJME VQMPBE

  30. iOS/Androidڞ௨ • masterʹ͋ΔίϛοτΛࣗಈ഑৴ • ։ൃ൛ΞΠίϯΛϦϦʔε൛ͱม͑ͯΘ͔Γ΍͘͢ • ։ൃ൛͸ID(bundle id / package

    name)Λม͑ͯϦ Ϧʔε൛ͱڞଘͰ͖ΔΑ͏ʹ • ഑৴͞ΕΔ։ൃ൛͸production serverʹͭͳ͕Δ ͷͰνʔϜϝϯόʔҎ֎΋ීஈ࢖͍Ͱ͖Δ
  31. ՝୊ • υοάϑʔσΟϯά͸Ή͔͍ͣ͠ • ։ൃ൛Λ࠷৽ʹอͭͷ͸໘౗͍͘͞ • ։ൃ൛ݻ༗ͷ໰୊͕Ͳ͏ͯ͠΋ଘࡏ͢Δ • ContentProvider/AccountManager·ΘΓͰτϥϒ ϧ͕͓͖͕ͪʢAndroidʣ

    • Push௨஌͕࢖͑ͳ͍ʢiOSʣ
  32. ՝୊ • ։ൃ൛ͷϑΟʔυόοΫ͕೉͍͠ • εΫϦʔϯΩϟϓνϟΛࣾ಺νϟοτͳͲʹ؆୯ ʹΞοϓϩʔυ͢Δ࢓૊Έͱ͔ʁ • ࣮ݧతػೳΛϢʔβʔʹ࢖ͬͯ΋Β͍͍ͨ • PlayͷβػೳͰ഑෇͢Δʁ

    • Chrome CanaryΈ͍ͨʹผΞϓϦʹ͢Δʁ
  33. ࠓ೔࿩ͨ͜͠ͱ ! • ։ൃମ੍ • git workflowͷ࿩ • ։ൃ൛Λࣾ಺Ͱ഑෇͢Δ࢓૊Έ

  34. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠