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
Aggressive freee Mobile Team
Search
laprasDrum
September 28, 2017
Technology
0
1.2k
Aggressive freee Mobile Team
2017/9/28 大阪ベンチャーモバイル最前線NIGHT vol1 の登壇資料
laprasDrum
September 28, 2017
Tweet
Share
More Decks by laprasDrum
See All by laprasDrum
iOS Dev Workflow Automation for note
laprasdrum
0
4.1k
ひとりでできるもん?アプリリニューアル
laprasdrum
2
2k
A Faster Task Organization with ZenHub & Ruboty & peekabow
laprasdrum
1
2.8k
iOS and Android Application with React-Native-Layered Domain Model
laprasdrum
1
540
iOS UI Reverse Engineering
laprasdrum
0
350
Other Decks in Technology
See All in Technology
LayerXにおけるLLMプロダクト開発の今までとこれから
layerx
PRO
4
1.5k
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
0
1.9k
M&A戦略を支えるデータマネジメント (MIDAS Tech Study #16 GENDA Komiyama)
kommy339
1
170
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
1
1.9k
Microsoft for Startups Founders Hub_20240429 update
daikikanemitsu
1
2.5k
個人のAWSアカウントをマルチ運用してみた
miura55
2
260
AWS学習者向けにAzureの解説スライドを作成した話
handy
3
220
類似ロジック実装をiOS/Android間で合わせる道標No.1
fumiyasac0921
1
170
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
7
1.4k
Azureの基本的な権限管理の勉強会
yhana
1
2.2k
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
530
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
2
420
Featured
See All Featured
Become a Pro
speakerdeck
PRO
13
4.6k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
0
50
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Being A Developer After 40
akosma
67
580k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
12
1k
Clear Off the Table
cherdarchuk
85
310k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
Design by the Numbers
sachag
274
18k
Raft: Consensus for Rubyists
vanstee
133
6.3k
Happy Clients
brianwarren
92
6.4k
What the flash - Photography Introduction
edds
64
11k
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 ͕ ֤ΤϯδχΞʹ ࡋྔΛ༩͑ͯ͘Ε͍ͯΔ͔Β
͔ͩΒͦ͜ ϓϩμΫτͷํੑݟਾ্͑ͨͰ ࠓେࣄͳ͜ͱΛ ֤ʑͷஅͰऔΓΈ࣮ݱ͢Δ͜ͱ͕Ͱ͖Δ
͜Ε͔Β രͰ߈Ί͍͖ͯ·͢