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
2.4k
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
2k
iOS Dev Workflow Automation for note
laprasdrum
0
6.1k
ひとりでできるもん?アプリリニューアル
laprasdrum
2
3.3k
A Faster Task Organization with ZenHub & Ruboty & peekabow
laprasdrum
1
4.2k
iOS and Android Application with React-Native-Layered Domain Model
laprasdrum
1
1k
iOS UI Reverse Engineering
laprasdrum
0
1.4k
Other Decks in Technology
See All in Technology
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
130
わからなくて良いなら、わからなきゃだめなの?
kotaoue
1
280
越境する組織づくり ─ 多様性を前提にしたチームビルディングとリードの実践知
kido_engineer
2
190
オレ達はAWS管理をやりたいんじゃない!開発の生産性を爆アゲしたいんだ!!
wkm2
4
500
身体を持ったパーソナルAIエージェントの 可能性を探る開発
yokomachi
1
110
OCHaCafe S11 #2 コンテナ時代の次の一手:Wasm 最前線
oracle4engineer
PRO
1
120
20260311 技術SWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
300
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
420
AIエージェント時代に備える AWS Organizations とアカウント設計
kossykinto
3
830
[JAWSDAYS2026][D8]その起票、愛が足りてますか?AWSサポートを味方につける、技術的「ラブレター」の書き方
hirosys_
3
160
Scrumは歪む — 組織設計の原理原則
dashi
0
130
情シスのための生成AI実践ガイド2026 / Generative AI Practical Guide for Business Technology 2026
glidenote
0
200
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
New Earth Scene 8
popppiees
1
1.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
70
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
470
Side Projects
sachag
455
43k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
300
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
240
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Being A Developer After 40
akosma
91
590k
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 ͕ ֤ΤϯδχΞʹ ࡋྔΛ༩͑ͯ͘Ε͍ͯΔ͔Β
͔ͩΒͦ͜ ϓϩμΫτͷํੑݟਾ্͑ͨͰ ࠓେࣄͳ͜ͱΛ ֤ʑͷஅͰऔΓΈ࣮ݱ͢Δ͜ͱ͕Ͱ͖Δ
͜Ε͔Β രͰ߈Ί͍͖ͯ·͢