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.8k
Elasticsearchによる 全文検索の実装 in Rails
gfx
6
9.6k
すばらしきGraphQLのSEKAIへようこそ
gfx
20
9.4k
マルチテナント・ウェブアプリケーションの実践
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
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
0
150
バイブコーディングの正体——AIエージェントはソフトウェア開発を変えるか?
stakaya
5
560
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
1
400
コーディングエージェント概観(2025/07)
itsuki_t88
1
470
AIのメモリー
watany
12
1.2k
QA x AIエコシステム段階構築作戦
osu
0
220
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
10
2.6k
Go製CLIツールをnpmで配布するには
syumai
2
1k
Flutterと Vibe Coding で個人開発!
hyshu
1
190
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
1.7k
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
15
9.1k
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
700
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
The Cult of Friendly URLs
andyhume
79
6.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Building an army of robots
kneath
306
45k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
730
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Automating Front-end Workflow
addyosmani
1370
200k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
How GitHub (no longer) Works
holman
314
140k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
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ͷ • ։ൃ൛ΛࣾͰ͢ΔΈ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠