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
11k
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
3k
AssemblyScriptでライブラリコードの高速化をしてみる
gfx
5
3.2k
実践TypeScriptトークバトル
gfx
1
1.2k
歴史的経緯の説明 as code
gfx
7
2.9k
Elasticsearchによる 全文検索の実装 in Rails
gfx
6
9.6k
すばらしきGraphQLのSEKAIへようこそ
gfx
20
9.5k
マルチテナント・ウェブアプリケーションの実践
gfx
14
9.6k
How to choose the ORM on Android
gfx
1
4.3k
How Do We Get Along With Static Types
gfx
5
3.4k
Other Decks in Programming
See All in Programming
品質ワークショップをやってみた
nealle
0
640
alien-signals と自作 OSS で実現する フレームワーク非依存な ロジック共通化の探求 / Exploring Framework-Agnostic Logic Sharing with alien-signals and Custom OSS
aoseyuu
2
660
Claude Agent SDK を使ってみよう
hyshu
0
1.4k
ドメイン駆動設計のエッセンス
masuda220
PRO
2
200
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
2
1.6k
contribution to astral-sh/uv
shunsock
0
540
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
100
NIKKEI Tech Talk#38
cipepser
0
240
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
240
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
2.5k
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
260
モテるデスク環境
mozumasu
3
1.3k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
640
We Have a Design System, Now What?
morganepeng
53
7.8k
Writing Fast Ruby
sferik
630
62k
Bash Introduction
62gerente
615
210k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Thoughts on Productivity
jonyablonski
70
4.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Cult of Friendly URLs
andyhume
79
6.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Scaling GitHub
holman
463
140k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
930
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ͷ • ։ൃ൛ΛࣾͰ͢ΔΈ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠