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

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

FUJI Goro

May 29, 2014
Tweet

More Decks by FUJI Goro

Other Decks in Programming

Transcript

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

    View Slide

  2. ࣗݾ঺հ - FUJI Goro (gfx)
    • Software Engineer at COOKPAD
    • iOS/Android྆ํ΍Δ
    • ϞόΠϧΞϓϦͷ։ൃޮ཰Λ্͛Δͷ͕ओͳ࢓ࣄ
    • ௚ۙͩͱϥΠϒϥϦͷ։ൃ͕ϝΠϯ
    • ੜ࢈ੑ͋͛ͯ͜ˢˢ

    View Slide

  3. View Slide

  4. COOKPADͷϞόΠϧΞϓϦ

    View Slide

  5. View Slide

  6. ͦͷଞ
    • μΠΤοτࢧԉΞϓϦ͕͍͔ͭ͘
    • μΠΤοτ 80 / μΠΤοτͻͱΓͿΜ
    • ݕࡧʹಛԽͨ͠ΞϓϦ͕͍͔ͭ͘
    • ುύου / Ωϟϕπύου
    • ͞Βʹଟ͘ͷΞϓϦΛϦϦʔε༧ఆ

    View Slide

  7. Mobile First Development

    View Slide

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

    View Slide

  9. ։ൃମ੍

    View Slide

  10. ։ൃମ੍ɿશମߏ੒
    • COOKPADΞϓϦ
    • iOS: 3ਓ
    • Android: 4~6ਓ
    • ͦͷଞͷΞϓϦ
    • جຊ1ਓʴඞཁʹԠͯ͡αϙʔτ

    View Slide

  11. ։ൃମ੍ɿνʔϜମ੍
    • ϞόΠϧϑΝʔετࣨɿίΞνʔϜ਺ਓ
    • ֤αʔϏεͷ෦ॺͰ৽ػೳͷ࣮૷ɿ1ਓ~
    • e.g. ϓϨϛΞϜαʔϏε, ಛച৘ใ
    • ҰͭͷΞϓϦΛෳ਺ͷ෦ॺͰڠௐͯ͠։ൃ

    View Slide

  12. ։ൃ؀ڥ
    • Android
    • Android Studio & Gradle
    • iOS
    • Xcode
    • AppCode (3.0 supports Storyboard!)

    View Slide

  13. Mobile Apps vs. Web Apps
    • cookpad.com͸΢ΣϒΞϓϦ
    • Ұ೔ʹ਺ճσϓϩΠΛߦ͏
    • සൟʹσϓϩΠ͠໰୊͕͋Ε͹ϩʔϧόοΫ͢Δ
    • master͸ৗʹdeployՄೳͳঢ়ଶʹ͓ͯ͘͠
    • ҰํMobile App͸ؾܰʹϩʔϧόοΫͰ͖ͳ͍

    View Slide

  14. Mobile AppsͷϦϦʔεαΠΫϧ
    • ϩʔϧόοΫͰ͖ͳ͍ͷͰ৻ॏʹ͍ͯ͠Δ
    • ϦϦʔε͝ͱͷ։ൃظؒ͸໿2~3िؒ
    • ৽ػೳ͸Ϛʔδલʹಈ࡞֬ೝ͢Δ
    • QAظؒ͸3೔ؒ

    View Slide

  15. VCSͱͷ෇͖߹͍ํ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. ͦͯ࣌͠͸ྲྀΕ…

    View Slide

  21. ݱࡏͷϒϥϯνϯάεϞσϧ
    • ίʔυϑϦʔζˍQAظؒΛઃ͚ͨ
    • “A successful git branching model” (git-flow)
    ʹ͍ۙϒϥϯνϯάϞσϧʹͳͬͨ
    • ͨͩ͠git-flowͱҟͳΓdevelop͸࢖Θͳ͍

    View Slide


  22. $PEF
    'SFF[F
    3$

    'FBUVSF
    GPS
    NBTUFS
    GFBUVSF
    SFMFBTF

    View Slide

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

    View Slide

  24. ՝୊
    • iOS/AndroidνʔϜ֎ͱͷڠௐ͕೉͍͠
    • ϒϥϯνϯάϞσϧͷڞ༗΋ෆे෼

    View Slide

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

    View Slide

  26. جຊతʹJenkinsͰࣗಈԽ

    View Slide

  27. TestFlight for iOS
    • AutoFlight ʹΑΔࣗಈ഑෇Λߦ͍ͬͯΔ
    • GitHub͔ΒͷWebHook௨஌ΛAutoFlightProxy͕ड͚
    Δ
    • AutoFlightProxy͕JenkinsΛΩοΫ
    • Jenkins͕Ϗϧυͯ͠TestFlightʹΞοϓϩʔυ
    • ϒϥϯνʹΑͬͯ഑෇ઌͷνʔϜΛࣗಈతʹબͿ

    View Slide

  28. deploygate for Android
    • masterʹίϛοτ͕͋ͬͨΒJenkinsΛΩοΫ
    • Ϗϧυˍςετ
    • ςετ͸GenyMotionͰߦ͍ͬͯΔ
    • deploygateʹ഑৴͢Δ
    • deploygateΞΧ΢ϯτ͸GoogleεϓϨουγʔ

    View Slide

  29. -PDBM.BDIJOF
    QVTI
    LJDL
    UFTU
    CVJME
    VQMPBE

    View Slide

  30. iOS/Androidڞ௨
    • masterʹ͋ΔίϛοτΛࣗಈ഑৴
    • ։ൃ൛ΞΠίϯΛϦϦʔε൛ͱม͑ͯΘ͔Γ΍͘͢
    • ։ൃ൛͸ID(bundle id / package name)Λม͑ͯϦ
    Ϧʔε൛ͱڞଘͰ͖ΔΑ͏ʹ
    • ഑৴͞ΕΔ։ൃ൛͸production serverʹͭͳ͕Δ
    ͷͰνʔϜϝϯόʔҎ֎΋ීஈ࢖͍Ͱ͖Δ

    View Slide

  31. ՝୊
    • υοάϑʔσΟϯά͸Ή͔͍ͣ͠
    • ։ൃ൛Λ࠷৽ʹอͭͷ͸໘౗͍͘͞
    • ։ൃ൛ݻ༗ͷ໰୊͕Ͳ͏ͯ͠΋ଘࡏ͢Δ
    • ContentProvider/AccountManager·ΘΓͰτϥϒ
    ϧ͕͓͖͕ͪʢAndroidʣ
    • Push௨஌͕࢖͑ͳ͍ʢiOSʣ

    View Slide

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

    View Slide

  33. ࠓ೔࿩ͨ͜͠ͱ
    !
    • ։ൃମ੍
    • git workflowͷ࿩
    • ։ൃ൛Λࣾ಺Ͱ഑෇͢Δ࢓૊Έ

    View Slide

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

    View Slide