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.4k
すばらしきGraphQLのSEKAIへようこそ
gfx
20
9.3k
マルチテナント・ウェブアプリケーションの実践
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.3k
Other Decks in Programming
See All in Programming
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
40
16k
たのしいSocketのしくみ / Socket Under a Microscope
coe401_
8
1.2k
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
210
Datadog DBMでなにができる? JDDUG Meetup#7
nealle
0
140
.NET Frameworkでも汎用ホストが使いたい!
tomokusaba
0
200
Serverless Rust: Your Low-Risk Entry Point to Rust in Production (and the benefits are huge)
lmammino
1
150
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
220
パスキーのすべて ── 導入・UX設計・実装の紹介 / 20250213 パスキー開発者の集い
kuralab
3
880
Rubyと自由とAIと
yotii23
6
1.6k
GAEログのコスト削減
mot_techtalk
0
140
CSS Linter による Baseline サポートの仕組み
ryo_manba
1
150
Jakarta EE meets AI
ivargrimstad
0
320
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Designing for Performance
lara
604
68k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Documentation Writing (for coders)
carmenintech
67
4.6k
The Invisible Side of Design
smashingmag
299
50k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Statistics for Hackers
jakevdp
797
220k
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ͷ • ։ൃ൛ΛࣾͰ͢ΔΈ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠