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

攻めのモバイルアプリ開発

 攻めのモバイルアプリ開発

DevLOVE現場甲子園2014 東日本大会 http://devlove.doorkeeper.jp/events/11792 の発表資料です。

FUJI Goro

August 23, 2014
Tweet

More Decks by FUJI Goro

Other Decks in Technology

Transcript

  1. ߈ΊͷϞόΠϧΞϓϦ։ൃ
    Fuji, Goro (@__gfx__)
    #devloveٕ 4ճද ʢඈͼೖΓࢀՃʣ
    2014/08/23

    View Slide

  2. ࣗݾ঺հ
    • ౻ ޗ࿠ (gfx)
    • CookpadͷϞόΠϧΤϯδχΞ(iOS/Android)
    • ϥΠϒϥϦ։ൃ΍։ൃ؀ڥ੔උɾࣗಈԽͳͲ
    • background: C/C++, Perl, JavaScript (LLଟΊ)
    • ߈Ίͷ։ൃ؀ڥɾମ੍ͮ͘ΓΛ͍͖͍ͯͨ͠

    View Slide

  3. – Fuji, Goro (#devloveٕ, 2014)
    “ʮ߈Ίʯͱ͸ɺݱঢ়ҡ࣋ʹྲྀ͞ΕΔؾ࣋
    ͪʹཱͪ޲͔͏ҙࢤͰ͋Δ”

    View Slide

  4. ߈Ίͷ։ൃϫʔΫϑϩʔ

    View Slide

  5. Web։ൃݱ৔ͷ͋Δ1γʔϯ
    • ܧଓతσϦόϦʔ࠷ߴʂCI͋Δ͔Β࠷௿ݶͷ
    ඼࣭͸อূͰ͖Δ͠ɺ໰୊͋ͬͨΒϩʔϧόο
    Ϋ͢Ε͹͍ΑͶʂ
    • ϦʔϯελʔτΞοϓ࠷ߴʂMVP͔Βͷվྑ
    ͰάΠάΠՁ஋Λ͔ͨΊͯ͜㽉㽉

    View Slide

  6. Q. ϞόΠϧΞϓϦ΋ಉ͡ϊϦͰ࡞ΕΔʁ

    View Slide

  7. A. ແཧ

    View Slide

  8. ܧଓσϦόϦʔ͸Ͱ͖ͳ͍
    • ςετ͕WebΞϓϦͱൺֱͯ͠೉͘͠CIͰࣗಈͰς
    ετͰ͖Δൣғ͕ڱ͍
    • Ξοϓσʔτͷڧ੍͕೉͍͠ɻ͋ΒΏΔόʔδϣϯ
    ΋ࢢ৔ʹ࢒Γଓ͚ΔʢϢʔβʔͷυϩοϓΛ֮ޛ͢
    ΔͳΒڧ੍ΞοϓσʔτΛଅ͢͜ͱ΋Ͱ͖Δ͕…ʣ
    • submit͔Β഑৴·Ͱ਺࣌ؒ(Play)͔Β਺िؒ
    (AppStore)͔͔Δ

    View Slide

  9. MVP͔ΒҭͯΔͷ͸೉͍͠
    • ϚʔέςΟϯάతʹϓϥοτϑΥʔϜετΞͷϨϏϡʔ
    ͕ͱͯ΋ॏཁͰɺΫΦϦςΟͷ௿͍όʔδϣϯ͕ΞϓϦ
    ࣗମͷ଍ΛҾͬுΔʢGoogle Playʣ
    • Πϯετʔϧͷϋʔυϧ͕ߴ͍ͨΊɺ࠷ॳͷҹ৅͕ѱ͘
    ͯΞϯΠϯετʔϧ͞ΕΔͱɺ͋ͱ͔Βͦͷҹ৅Λ෴͠
    ͯ࠶Πϯετʔϧͯ͠΋Β͏ͷ͕೉͍͠
    • ࠷ॳͷόʔδϣϯͷΫΦϦςΟ͸͔ͳΓେࣄʢPlayͷβ഑
    ৴΍DeployGateͰ͸Ϧʔϯ։ൃ͢Δʹ͸ෆे෼ʣ

    View Slide

  10. WebͱൺֱʹͳΒͳ͍ଟ༷ੑ
    • ϒϥ΢βͷଟ༷ੑ: platform x software
    • platform: Windows, MacOSX
    • software: IE7/8/9/10, Safari, Chrome
    • IEͰ͑͞ยखͰ਺͑ΒΕΔఔ౓ͷ਺
    • ୺຤ͷଟ༷ੑ: platform x OS ver. x device
    • ୺຤ͷछྨ͕ଟ͗ͯ͢ɺϦϦʔεલʹ͢΂ͯͷ؀ڥͰಈ࡞
    ֬ೝ͢Δͷ͸ෆՄೳ

    View Slide

  11. !
    ໰୊͕͋ͬͨΒ
    ߈Ί͍͔ͯ͘͠ͳ͍

    View Slide

  12. ϞόΠϧ։ൃϑϩʔͷ޻෉
    • ໰୊͸͍͍ͩͨʮߴ඼࣭ͳΞϓϦέʔγϣϯΛϦϦʔε͢Δ೉
    ͠͞ʯʹ͖ͭΔ
    • ܧଓతσϦόϦʔͳ؀ڥͰ͸ଘࡏ͠ͳ͍ɺ໌֬ͳίʔυϑ
    ϦʔζͱQAظؒΛઃ͚ͨ
    • AndroidΞϓϦͷ৔߹͸ݶఆެ։ػೳΛར༻ͯ͠க໋తͳ໰୊
    ͷ͋Δόʔδϣϯͷ഑෍Λ࠷௿ݶʹ͢Δ
    • iOSΞϓϦͷ৔߹͸ϓϩϞίʔυʹΑΔ௚લͷࢼݧͰக໋తͳ
    όʔδϣϯͷ഑෍ͷՄೳੑΛݮΒ͢

    View Slide

  13. ίʔυϑϦʔζ
    • Web։ൃ: github-flow
    • ։ൃϒϥϯν(master)ΛৗʹσϓϩΠՄೳʹอͭ
    • ΞϓϦ։ൃ: git-flow (a successful git branching model)
    • ։ൃϒϥϯν͔Βϒϥϯνϯάͯ͠CFͯ͠ϦϦʔεϒϥϯ
    νΛͭ͘ΓɺϦϦʔεϒϥϯνͰ͸ඞཁෆՄܽͳόάϑΟ
    ΫεҎ֎͸Ұ੾ߦΘͳ͍
    • ͳ͓developϒϥϯν͸ͭ͘Βͳ͍

    View Slide


  14. $PEF
    'SFF[F
    3$

    'FBUVSF
    GPS
    NBTUFS
    GFBUVSF
    SFMFBTF
    JNQPSUBOU
    CVHpY
    OFX
    GFBUVSF
    USJWJBM
    CVHpY

    View Slide

  15. ݶఆެ։
    • Google PlayͷػೳͰɺҰఆͷׂ߹ͷϢʔβʔ
    ʹ͚ͩΞοϓσʔτΛ഑৴Ͱ͖Δ
    • ࠷ॳʹ5%ϦϦʔε͢Δ͜ͱͰ
    • ͪ͜Βʹͱͬͯ͸5%Ͱ΋ʮ౰ͨΓʯΛҾ͍ͨ
    Ϣʔβʹͱͬͯ͸ͦΕ͕શͯͳͷͰɺ࠷ऴόʔ
    δϣϯͷͭ΋ΓͰग़͢ͷ͸લఏ

    View Slide

  16. ϓϩϞίʔυ
    • ΞϓϦͷϨϏϡʔ͕௨ͬͨΒiTune connectͰ
    ϓϩϞίʔυΛ഑෍Ͱ͖Δ
    • ެ։લʹɺެ։൛ͷΞϓϦΛ೚ҙͷ୺຤ʹΠ
    ϯετʔϧͰ͖Δ
    • ࠷ऴνΣοΫͰ໰୊͕͓͖ͨΒ༰ࣻͳ͘ϦϦʔ
    εதࢭ

    View Slide

  17. ߈Ίͷ։ൃ؀ڥ

    View Slide

  18. ߈Ίͷ։ൃ؀ڥͮ͘Γ
    • ΞϓϦ։ൃ͕δϦශʹͳΔύλʔϯ
    • ΞϓϦ։ൃͰ͖Δϝϯόʔ͕গͳ͍
    • ΞϓϦ։ൃνʔϜ͕ɺαʔϏε։ൃΛ͍ͯ͠Δ෦
    ॺ͔ΒҎདྷΛ͏͚ͯΞϓϦΛͭ͘Δडୗ։ൃ૊৫
    ʹͳͬͯ͠·͏
    • ࣗಈԽ͕೉͍͠Օॴ͕ଟ͍
    • ؾ߹Ͱख࡞ۀ͢Δ͜ͱʹ׳Εͯ͠·͏

    View Slide

  19. औΓ૊Έ
    • ϞόΠϧΤϯδχΞΛ૿΍ͦ͏ʂ
    • ։ൃͷϊ΢ϋ΢Λڞ༗͠Α͏ʂ
    • ࣗಈԽ͠Α͏ʂ

    View Slide

  20. ϞόΠϧΤϯδχΞΛ૿΍ͦ͏ʂ
    • τοϓμ΢ϯͷϞόΠϧϑΝʔετએݴ
    • ੵۃతʹϖΞϓϩ͠ͳ͕Βͷ৽ػೳ։ൃ
    • ϞόΠϧ։ൃ͸Web։ൃͱ͔ͳΓҧ͏
    • ࠷ॳͷนΛ௒͑Δ·Ͱ͸ͱ͜ͱΜ෇͖߹͏
    • ͜ͷ൒೥ͰϞόΠϧ։ൃΛܦݧͨ͠ΤϯδχΞ͸
    ͍ͩͿ૿͑ͨ

    View Slide

  21. ։ൃϊ΢ϋ΢Λڞ༗͠Α͏ʂ
    • ڞ௨ϥΠϒϥϦΛ੔උͯ͠ϋΠεΩϧͳΤϯδχΞͷ੒Ռʹ͋
    ͔ͣΔ
    • ࣾ಺ʹmaven repository΍cocoapods repositoryΛઃఆͯ͠
    ϥΠϒϥϦΛ؅ཧ
    • ৘ใൃ৴Λ࢓૊ΈԽ͢Δ
    • potatotipsͱ͍͏ษڧձΛ࣮ࢪ
    • WEB+DB PRESS Vol81ʮAndroidΞϓϦ։ൃ࠷લઢʯΛدߘ

    View Slide

  22. ࣗಈԽ͠Α͏ʂ
    • ϦϦʔεΤϯδχΞϦϯά͸࡞ۀྔ͕ଟ͍
    • ଐਓԽ͸μϝɺઈର
    • ϦϦʔεϏϧυ͸JenkinsͰߦ͏
    • Google Play Developer APIʢ·ͩಋೖͯ͠ͳ͍ʣ
    • apkΛplayʹΞοϓϩʔυ͢Δ
    • ΞϓϦͷઆ໌จ΍εΫγϣΛgit؅ཧ͢Δ

    View Slide

  23. Q & A (1)
    • Q. ࣗಈςετ͸Ͳ͏ͯ͠Δʁ
    • A. ϞσϧͱϢʔςΟϦςΟ͸ଟগɻUIͷࣗಈς
    ετ͸͍ͯ͠ͳ͍͕ɺCIͰओཁͳը໘ͷεΫγϣ
    ΛࡱΔͷ͸΍Γ࢝Ί͍ͯΔ
    • Q. ϦϦʔεαΠΫϧ͸ʁ
    • A. iOS/Androidͱ΋ʹ2िؒʹҰ౓ͷϦϦʔε

    View Slide

  24. Q & A (2)
    • Q. ίϛϡχέʔγϣϯͲ͏ͯ͠Δʁ
    • A. HipChat + github issuesɻgithub webhookͰrepo
    ΁ͷมߋΛHipChatʹ௨஌͢Δʢ಺ॹͰforce push͸Ͱ
    ͖ͳ͍ʂʣ
    • Q. CI͸ʁ
    • A. JenkinsΛ࢖ͬͯίϛοτ͝ͱʹjobΛ૸Βͤɺ੒Ռ෺Λ
    DeployGate/TestFlightͰ։ൃ൛Λ഑෍͍ͯ͠Δ

    View Slide

  25. Q & A (3)
    • Q. υοάϑʔσΟϯάͲ͏ͯ͠Δʁ
    • A. Ͱ͖͍ͯͳ͍ɻ͍͍ํ๏͕͋ͬͨΒڭ͑ͯ΄
    ͍͠
    • Q. ͦΕͰɺࣾ಺डୗମ੍͸ղফͰ͖ͨͷ͔
    • A. ·ͩ׬શʹ͸ղফͰ͖͍ͯͳ͍ɻ͍͍ํ๏͕
    ͋ͬͨΒڭ͑ͯ΄͍͠

    View Slide

  26. ؔ࿈ࢿྉ
    • Mobile First Development at COOKPAD 

    (2014/5/29)
    • rebuild.fm/45 (podcast)

    (2014/5/30)
    • AndroidΞϓϦͷϦϦʔεͯ͠·͔͢ 

    (2014/8/20)

    View Slide