Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Aggressive freee Mobile Team
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
laprasDrum
September 28, 2017
Technology
2.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Aggressive freee Mobile Team
2017/9/28 大阪ベンチャーモバイル最前線NIGHT vol1 の登壇資料
laprasDrum
September 28, 2017
More Decks by laprasDrum
See All by laprasDrum
Swift Testingのconfirmationを コードリーディング/Dive into Swift Testing confirmation
laprasdrum
2
2.3k
iOS Dev Workflow Automation for note
laprasdrum
0
6.5k
ひとりでできるもん?アプリリニューアル
laprasdrum
2
3.6k
A Faster Task Organization with ZenHub & Ruboty & peekabow
laprasdrum
1
4.5k
iOS and Android Application with React-Native-Layered Domain Model
laprasdrum
1
1.3k
iOS UI Reverse Engineering
laprasdrum
0
1.7k
Other Decks in Technology
See All in Technology
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
230
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
4
930
しろおびから始める!ログ活用の第一歩
shumei_ito
0
930
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
5
3.8k
メルペイ 会計システム概要と歴史
mewuto
1
220
FOSS4Gを活用した自治体業務DXの試み
470715
0
150
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
210
go-sqletch
moznion
0
140
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
1
720
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
260
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
600
Featured
See All Featured
Code Review Best Practice
trishagee
74
20k
Side Projects
sachag
456
43k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
What's in a price? How to price your products and services
michaelherold
247
13k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
700
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Documentation Writing (for coders)
carmenintech
77
5.6k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Automating Front-end Workflow
addyosmani
1369
210k
Transcript
গਓͰ ߈Ίଓ͚Δ freee ͷϞόΠϧνʔϜ laprasDrum
@laprasDrum ΒΒ iOS/Android Lead Engineer 2015/4~ freee
ձܭ freee ͷ Web / iOS / Android Λ ։ൃͯ͠·͢
ैۀһ͚ΞϓϦ freee for νʔϜͷ iOS / Android Λ ։ൃͯ͠·͢
εϞʔϧϏδωεʹܞΘΔͯ͢ͷਓ͕ తͳ׆ಈʹϑΥʔΧεͰ͖ΔΑ͏
2013/3 2014/2 2014/4 2014/5 2015/9 ϓϩμΫτͷาΈ
2013/3 2014/1 νʔϜൃ 2014/2 2014/4 2014/5 2014/7 νʔϜղࢄ 2015/9 2015/4
2016/6 2016/7 2016/12 2017/5 νʔϜͷาΈ
2013/3 2014/1 νʔϜൃ 2014/2 2014/4 2014/5 2014/7 νʔϜղࢄ 2015/9 2015/4
2016/6 2016/7 2016/12 2017/5 େ෦͕2ਓӡ༻ ۀҕୗͷํ1ਓʹ ظ͓ؒख͍͍ͯͯ͠·ͨ͠
2ਓͩͱ • େ͖ͳػೳΛͻͱΓ͕࡞Δͱ͏ͻͱΓϨϏϡʔͰσο υϩοΫ͞ΕΔ • વ Web ΞϓϦͷਐԽʹैͰ͖Δ͕ෆ • ͱ͍͑ࢢͷதͰΞϓϦΛҭ͍ͯͯͨ͘ΊʹͲΜͲ
ΜՁΛੜΈग़͍͔ͯ͠ͳ͍͚ͯ͘ͳ͍ • ͲΜͲΜճΓ͕Θͳ͘ͳͬͯ͘Δ
͕ͩ߈ΊΔ
ձܭ freeeʢ2014/2~ʣ • ։ൃظؒ1ϲ݄ • Rx (ReactiveCocoa & RxJava) &
MVVM Λॳظ࠾༻ ViewModel User Interactions Web API Utils Web API External Actions Internal Actions ඇಉظॲཧ Gesture ൃՐҎ֎ͷ ෦ॲཧ ViewController Activity/Fragment Rx Rx Models
freee for νʔϜʢ2015/9~ʣ • ։ൃظؒ1ϲ݄ • Full Swift ʹରͯ͠ Full
Kotlin Λॳظ࠾༻ • ࣌ͷ Kotlin ͷόʔδϣϯ M9 • flux ΞʔΩςΫνϟͷॳظ࠾༻ • Fat ViewModel Խ͖ͯͨ͠ձܭ freee ʹର͢ΔԾઆݕূ • ViewModel ≒ Action + Store
ViewModel User Interactions Web API Utils Web API External Actions
Internal Actions ඇಉظॲཧ Gesture ൃՐҎ֎ͷ ෦ॲཧ ViewController Activity/Fragment Models
Actions User Interactions Dispatcher Web API Utils EmitChange (DataBinding) Web
API External Actions Internal Actions NotificationCenter ExecutorService ViewModel ඇಉظॲཧ Gesture ൃՐҎ֎ͷ ෦ॲཧ ViewController Activity/Fragment Store Models
߈ΊΔͨΊͷ ٕज़ɾΞʔΩςΫνϟ બఆج४
·͖͜Έ͘͢ શྗࢿͭͭ͠ӡ༻
·͖͜Έ͘͢ • αʔόʔαΠυϑϩϯτΤϯυִ͚ͯͳ͘։ൃ͢Δ͜ͱ͕ଟ͍ • ॳظϞόΠϧઐͷਓগͳ͔ͬͨ • iOS / Android ͱʹΞʔΩςΫνϟΛ౷Ұ
• MVVM flux ͷڞ௨Խ • ͲͪΒ͔ͷίʔυʹ৮ΕΕଞํཧղ͍͢͠Α͏ʹ • Kotlin ͷૣظ࠾༻ Swift ͱͷੑʹدͤͨ݁Ռ • Java ίʔυͷࢿ࢈Λ࠶ར༻Մೳɾ͍ͭͰ Java ʹఫୀͤ͠Δ҆৺ײ͕ ܾΊखͱͯ͠ڧ͍
શྗࢿͭͭ͠ӡ༻ • ٕज़ɾΞʔΩςΫνϟಋೖΞϓϦͷӡ༻อकͱฒߦͰΓ͖ͬͯΔ • ͨΓલ͕࣭ͩվળͷखΛࢭΊ͍͚ͯͳ͍ • ઃܭࢥͱ iOS / Android
Ͱͷ࣮ͷམͱ͠ॴΛԿʹૉૣ͘ਐΊΔ͔ • ࣦഊ͋Γ͖Ͱ߈ΊΔ • ৽͍͠ߟ͑ํɾٕज़ࡲΓΕΔ·Ͱ͍͞ͳ͍ͱݟ͑ͯ͜ͳ͍ ͷ͕͋Δ • Web ϑϩϯτΤϯυʹݶΒͣ XAML ͷྺ࢙ͳͲࢀߟʹͭͭ͠ • ϞόΠϧಛ༗ͷը໘ͷϥΠϑαΠΫϧͱরΒ͠߹Θͤͳ͕Β
࣌ܦͪ ϞόΠϧઐ͕4ਓ
2013/3 2014/1 νʔϜൃ 2014/2 2014/4 2014/5 2014/7 νʔϜղࢄ 2015/9 2015/4
2016/6 2016/7 2016/12 2017/5 ະͷ4ਓ࣌
૾Ҏ্ͷ։ൃ • QA λεΫ͕3~4ഒʢࣾൺʣ • ϦϦʔε͕ελοΫ͢Δࣄଶ • ࠓ·Ͱख͕ճ͍ͬͯͳ͔ͬͨࣗಈԽɾճΓඋ͕ॏཁʹ • ϏϧυόΠφϦੜɾετΞͷࣗಈΞοϓϩʔυΛ
Bitrise ʹ • ఆৗతͳਓྗνΣοΫ E2E ςετ
૾Ҏ্ͷ։ൃ • QA λεΫ͕3~4ഒʢࣾൺʣ • ϦϦʔε͕ελοΫ͢Δࣄଶ • ࠓ·Ͱख͕ճ͍ͬͯͳ͔ͬͨࣗಈԽɾճΓඋ͕ॏཁʹ • ϏϧυόΠφϦੜɾετΞͷࣗಈΞοϓϩʔυΛ
Bitrise ʹ • ఆৗతͳਓྗνΣοΫ E2E ςετ
None
ࣗಈԽɾࣗಈԽɾࣗಈԽ • BuildVersion versionName ͷखಈΞοϓσʔτແବ… • lane λεΫԽ •
iOS: branch ໊ͷόʔδϣϯͰ increment_version_number • Android: branch ໊ͷόʔδϣϯͰ increment_version_name master 10.2.3 Bitrise ͕ Webhook ͯ͠ lane λεΫΛ࣮ߦ
ࣗಈԽɾࣗಈԽɾࣗಈԽ • ϦϦʔεࣗಈԽ͍ͨ͠ͳ… • Android apk Λ Developer Console
ͷ α ൛ʹࣗಈΞοϓϩʔυ͢ΔΑ͏ʹ lane Խ • ͋ͱஈ֊తϦϦʔεͰΫϥογϡϨϙʔτΛݟकΓͭͭԽ • ਖ਼ࣾһ͕૿͑·ͨ͠ʂདྷि͔ΒΠϯλʔϯੜདྷ·͢ʂ • iOS ͩͱূ໌ॻͷॳظઃఆͱ͔େม… • fastlane match ͰηοτΞοϓΛࣗಈԽ ✌
ࡶࣗಈԽ
͓ΘΓʹ
͜͜·Ͱ߈ΊΒΕΔͷ freee ͕ ֤ΤϯδχΞʹ ࡋྔΛ༩͑ͯ͘Ε͍ͯΔ͔Β
͔ͩΒͦ͜ ϓϩμΫτͷํੑݟਾ্͑ͨͰ ࠓେࣄͳ͜ͱΛ ֤ʑͷஅͰऔΓΈ࣮ݱ͢Δ͜ͱ͕Ͱ͖Δ
͜Ε͔Β രͰ߈Ί͍͖ͯ·͢