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.8k
Aggressive freee Mobile Team
2017/9/28 大阪ベンチャーモバイル最前線NIGHT vol1 の登壇資料
laprasDrum
September 28, 2017
Tweet
Share
More Decks by laprasDrum
See All by laprasDrum
Swift Testingのconfirmationを コードリーディング/Dive into Swift Testing confirmation
laprasdrum
2
1.3k
iOS Dev Workflow Automation for note
laprasdrum
0
5.4k
ひとりでできるもん?アプリリニューアル
laprasdrum
2
2.8k
A Faster Task Organization with ZenHub & Ruboty & peekabow
laprasdrum
1
3.7k
iOS and Android Application with React-Native-Layered Domain Model
laprasdrum
1
880
iOS UI Reverse Engineering
laprasdrum
0
910
Other Decks in Technology
See All in Technology
Rustから学ぶ 非同期処理の仕組み
skanehira
1
130
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
140
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
230
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
160
DDD集約とサービスコンテキスト境界との関係性
pandayumi
3
280
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
170
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
540
KotlinConf 2025_イベントレポート
sony
1
120
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
3.2k
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
100
AIのグローバルトレンド2025 #scrummikawa / global ai trend
kyonmm
PRO
1
270
人工衛星のファームウェアをRustで書く理由
koba789
14
7.6k
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
KATA
mclloyd
32
14k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Designing for Performance
lara
610
69k
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 ͕ ֤ΤϯδχΞʹ ࡋྔΛ༩͑ͯ͘Ε͍ͯΔ͔Β
͔ͩΒͦ͜ ϓϩμΫτͷํੑݟਾ্͑ͨͰ ࠓେࣄͳ͜ͱΛ ֤ʑͷஅͰऔΓΈ࣮ݱ͢Δ͜ͱ͕Ͱ͖Δ
͜Ε͔Β രͰ߈Ί͍͖ͯ·͢