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
laprasDrum
September 28, 2017
Technology
2.5k
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.2k
iOS Dev Workflow Automation for note
laprasdrum
0
6.4k
ひとりでできるもん?アプリリニューアル
laprasdrum
2
3.5k
A Faster Task Organization with ZenHub & Ruboty & peekabow
laprasdrum
1
4.4k
iOS and Android Application with React-Native-Layered Domain Model
laprasdrum
1
1.2k
iOS UI Reverse Engineering
laprasdrum
0
1.5k
Other Decks in Technology
See All in Technology
安心して変更できるWebフロントエンドの作り方
pirosikick
5
2.9k
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
33
30k
積み重なった技術負債への挑戦 〜初手としての全社ゴト化〜
techtekt
PRO
0
1.5k
Why Agent Cost Needs Observability
nttcom
0
120
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
250
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
270
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
130
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.5k
AIは推し活である。
kurazuuuuuu
1
940
SREへの勘違いに気づいた後の話
tomodakengo
0
130
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
160
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
520
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
770
Typedesign – Prime Four
hannesfritz
42
3.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Optimising Largest Contentful Paint
csswizardry
37
4k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
How to make the Groovebox
asonas
2
2.4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
250
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 ͕ ֤ΤϯδχΞʹ ࡋྔΛ༩͑ͯ͘Ε͍ͯΔ͔Β
͔ͩΒͦ͜ ϓϩμΫτͷํੑݟਾ্͑ͨͰ ࠓେࣄͳ͜ͱΛ ֤ʑͷஅͰऔΓΈ࣮ݱ͢Δ͜ͱ͕Ͱ͖Δ
͜Ε͔Β രͰ߈Ί͍͖ͯ·͢