Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mobile First Development at COOKPAD #deploygate
Search
FUJI Goro
May 29, 2014
Programming
27
10k
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
Share
More Decks by FUJI Goro
See All by FUJI Goro
How to Boost Your Code with WebAssembly
gfx
2
2.9k
AssemblyScriptでライブラリコードの高速化をしてみる
gfx
5
3.1k
実践TypeScriptトークバトル
gfx
1
1.1k
歴史的経緯の説明 as code
gfx
7
2.8k
Elasticsearchによる 全文検索の実装 in Rails
gfx
6
9.5k
すばらしきGraphQLのSEKAIへようこそ
gfx
20
9.4k
マルチテナント・ウェブアプリケーションの実践
gfx
14
9.5k
How to choose the ORM on Android
gfx
1
4.2k
How Do We Get Along With Static Types
gfx
5
3.4k
Other Decks in Programming
See All in Programming
The Nature of Complexity in John Ousterhout’s Philosophy of Software Design
philipschwarz
PRO
0
130
[NG India] Event-Based State Management with NgRx SignalStore
markostanimirovic
1
170
RubyKaigi Dev Meeting 2025
tenderlove
1
380
Vibe Codingをせずに Clineを使っている
watany
17
6.3k
小田原でみんなで一句詠みたいな #phpcon_odawara
stefafafan
0
350
generative-ai-use-cases(GenU)の推しポイント ~2025年4月版~
hideg
1
290
Sharing features among Android applications: experience feedback
jbvincey
0
110
Cursor/Devin全社導入の理想と現実
saitoryc
23
17k
生成AIを使ったQAアプリケーションの作成 - ハンズオン補足資料
oracle4engineer
PRO
3
250
SwiftUI API Design Lessons
niw
1
300
エンジニアが挑む、限界までの越境
nealle
1
270
Amazon CloudWatchの地味だけど強力な機能紹介!
itotsum
0
180
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
BBQ
matthewcrist
88
9.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.2k
Visualization
eitanlees
146
16k
Adopting Sorbet at Scale
ufuk
76
9.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
135
33k
Producing Creativity
orderedlist
PRO
344
40k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Code Reviewing Like a Champion
maltzj
522
40k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Transcript
Mobile First Development at COOKPAD Bakusoku Iterations Tokyo #Deploygate 2014/5/29
by FUJI Goro
ࣗݾհ - FUJI Goro (gfx) • Software Engineer at COOKPAD
• iOS/Android྆ํΔ • ϞόΠϧΞϓϦͷ։ൃޮΛ্͛Δͷ͕ओͳࣄ • ۙͩͱϥΠϒϥϦͷ։ൃ͕ϝΠϯ • ੜ࢈ੑ͋͛ͯ͜ˢˢ
None
COOKPADͷϞόΠϧΞϓϦ
None
ͦͷଞ • μΠΤοτࢧԉΞϓϦ͕͍͔ͭ͘ • μΠΤοτ 80 / μΠΤοτͻͱΓͿΜ • ݕࡧʹಛԽͨ͠ΞϓϦ͕͍͔ͭ͘
• ುύου / Ωϟϕπύου • ͞Βʹଟ͘ͷΞϓϦΛϦϦʔε༧ఆ
Mobile First Development
ϢʔβʔϑΝʔετͳ։ൃ • ϢʔβʔʹͱͬͯͷՁΛ࠷େʹ͍ͨ͠ • ΞϓϦͷվળΛߴʹਐΊΔ • ػೳΛ͑ͳ͍࣌ؒΛݮΒ͢ • ҆ఆͨ͠։ൃαΠΫϧͷཱ͕֬ෆՄܽ
։ൃମ੍
։ൃମ੍ɿશମߏ • COOKPADΞϓϦ • iOS: 3ਓ • Android: 4~6ਓ •
ͦͷଞͷΞϓϦ • جຊ1ਓʴඞཁʹԠͯ͡αϙʔτ
։ൃମ੍ɿνʔϜମ੍ • ϞόΠϧϑΝʔετࣨɿίΞνʔϜਓ • ֤αʔϏεͷ෦ॺͰ৽ػೳͷ࣮ɿ1ਓ~ • e.g. ϓϨϛΞϜαʔϏε, ಛചใ •
ҰͭͷΞϓϦΛෳͷ෦ॺͰڠௐͯ͠։ൃ
։ൃڥ • Android • Android Studio & Gradle • iOS
• Xcode • AppCode (3.0 supports Storyboard!)
Mobile Apps vs. Web Apps • cookpad.comΣϒΞϓϦ • ҰʹճσϓϩΠΛߦ͏ •
සൟʹσϓϩΠ͕͋͠ΕϩʔϧόοΫ͢Δ • masterৗʹdeployՄೳͳঢ়ଶʹ͓ͯ͘͠ • ҰํMobile AppؾܰʹϩʔϧόοΫͰ͖ͳ͍
Mobile AppsͷϦϦʔεαΠΫϧ • ϩʔϧόοΫͰ͖ͳ͍ͷͰ৻ॏʹ͍ͯ͠Δ • ϦϦʔε͝ͱͷ։ൃظؒ2~3िؒ • ৽ػೳϚʔδલʹಈ࡞֬ೝ͢Δ • QAظؒ3ؒ
VCSͱͷ͖߹͍ํ
VCSͱͷ͖߹͍ํ • GitHub EnterpriseΛར༻ • masterʹೖΕΔίʔυඞͣPull RequestΛ ͠ɺνʔϜϝϯόʔʹΑΔϨϏϡʔΛඞਢʹ ͍ͯ͠Δ •
UIʹؔΘΔมߋσβΠφʔʹΑΔϨϏϡʔ ඞਢʹ͍ͯ͠Δ
gitͷϒϥϯνϯάϞσϧ • ࠷ॳwebͱಉ͡ελΠϧͰӡ༻͍ͯͨ͠ • ͍ΘΏΔgithub flow • P-RΛϚʔδ͢Δ·͑ʹݕূΛ͢·ͤΔ • ඞཁͳػೳΛ࣮͓͑ͨ͠ΒϦϦʔε
ࠒ͔Β։ൃ൛Λ͍ͬͯΔ͠ɺϚʔδલ ʹݕূ͍ͯ͠Δ͔Β͜ΕͰେৎ…ʂ
ʊਓਓਓਓਓਓਓʊ ʼɹಥવͷোɹʻ ʉY^Y^Y^Y^Y^Yʉ
ͦͯ࣌͠ྲྀΕ…
ݱࡏͷϒϥϯνϯάεϞσϧ • ίʔυϑϦʔζˍQAظؒΛઃ͚ͨ • “A successful git branching model” (git-flow)
ʹ͍ۙϒϥϯνϯάϞσϧʹͳͬͨ • ͨͩ͠git-flowͱҟͳΓdevelopΘͳ͍
$PEF 'SFF[F 3$ 'FBUVSF GPS NBTUFS GFBUVSF SFMFBTF
ݱࡏͷworkflow • ඞཁͳػೳΛ࣮͓͑ͨ͠ΒίʔυϑϦʔζʢCFʣͱ͢Δ • CFͨ͠ΒϦϦʔεީิʢRCʣϒϥϯνΛͭ͘Δ • RC͕ผΕͨΒmasterߋʹ࣍ͷόʔδϣϯͷͨΊͷम ਖ਼͕Ϛʔδ͞Ε͏Δ • RCϒϥϯνʹඞཁͳόάमਖ਼ΛೖΕΔ
• ϦϦʔεͨ͠ΒRCϒϥϯνΛmasterʹϚʔδ͢Δ
՝ • iOS/AndroidνʔϜ֎ͱͷڠௐ͕͍͠ • ϒϥϯνϯάϞσϧͷڞ༗ෆे
։ൃ൛ΞϓϦͷ TestFlight
جຊతʹJenkinsͰࣗಈԽ
TestFlight for iOS • AutoFlight ʹΑΔࣗಈΛߦ͍ͬͯΔ • GitHub͔ΒͷWebHook௨ΛAutoFlightProxy͕ड͚ Δ •
AutoFlightProxy͕JenkinsΛΩοΫ • Jenkins͕Ϗϧυͯ͠TestFlightʹΞοϓϩʔυ • ϒϥϯνʹΑͬͯઌͷνʔϜΛࣗಈతʹબͿ
deploygate for Android • masterʹίϛοτ͕͋ͬͨΒJenkinsΛΩοΫ • Ϗϧυˍςετ • ςετGenyMotionͰߦ͍ͬͯΔ •
deploygateʹ৴͢Δ • deploygateΞΧϯτGoogleεϓϨουγʔ
-PDBM.BDIJOF QVTI LJDL UFTU CVJME VQMPBE
iOS/Androidڞ௨ • masterʹ͋ΔίϛοτΛࣗಈ৴ • ։ൃ൛ΞΠίϯΛϦϦʔε൛ͱม͑ͯΘ͔Γ͘͢ • ։ൃ൛ID(bundle id / package
name)Λม͑ͯϦ Ϧʔε൛ͱڞଘͰ͖ΔΑ͏ʹ • ৴͞ΕΔ։ൃ൛production serverʹͭͳ͕Δ ͷͰνʔϜϝϯόʔҎ֎ීஈ͍Ͱ͖Δ
՝ • υοάϑʔσΟϯάΉ͔͍ͣ͠ • ։ൃ൛Λ࠷৽ʹอͭͷ໘͍͘͞ • ։ൃ൛ݻ༗ͷ͕Ͳ͏ͯ͠ଘࡏ͢Δ • ContentProvider/AccountManager·ΘΓͰτϥϒ ϧ͕͓͖͕ͪʢAndroidʣ
• Push௨͕͑ͳ͍ʢiOSʣ
՝ • ։ൃ൛ͷϑΟʔυόοΫ͕͍͠ • εΫϦʔϯΩϟϓνϟΛࣾνϟοτͳͲʹ؆୯ ʹΞοϓϩʔυ͢ΔΈͱ͔ʁ • ࣮ݧతػೳΛϢʔβʔʹͬͯΒ͍͍ͨ • PlayͷβػೳͰ͢Δʁ
• Chrome CanaryΈ͍ͨʹผΞϓϦʹ͢Δʁ
ࠓͨ͜͠ͱ ! • ։ൃମ੍ • git workflowͷ • ։ൃ൛ΛࣾͰ͢ΔΈ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠