Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
2017年に新規アプリを立ち上げた話
Keisuke Kobayashi
December 08, 2017
Programming
2
840
2017年に新規アプリを立ち上げた話
shibuya.apk #20
Keisuke Kobayashi
December 08, 2017
Tweet
Share
More Decks by Keisuke Kobayashi
See All by Keisuke Kobayashi
今日から始める依存性の注入 / First Time Dependency Injection
kobakei
26
6.3k
iOSアプリの技術的負債をどう返済したか / How to repay the technical debt of iOS app
kobakei
2
760
iOSアプリ内で不正なSSL証明書を検知する / SSL Pinning for iOS apps
kobakei
33
8.4k
Kyashアプリ開発の現場
kobakei
4
2.2k
Review of Google I/O 2017 & Prepare for Google I/O 2018
kobakei
0
260
APIクライアントをCodableで置き換えた話
kobakei
0
1.2k
開発者が知っておきたい通知の歴史
kobakei
10
6.5k
mockito-kotlin
kobakei
1
430
Everything of CI/CD in Kyash Android
kobakei
0
1.3k
Other Decks in Programming
See All in Programming
I/O Extended 2022 in Android ~ Whats new in Android development tools
pluu
0
510
Independently together: better developer experience & App performance
bcinarli
0
150
Jakarta EE 10 and Beyond
ivargrimstad
0
1.4k
Git・Git-Flowについて
nerusan_main
0
400
PythonユーザによるRust入門
rmizuta3
9
3k
The strategies behind ddd – AdeoDevSummit 2022
lilobase
PRO
4
210
Cybozu GoogleI/O 2022 LT会 - Input for all screens
jaewgwon
0
150
Seleniumでイキってたらサーバを絞め落としかけてた話
kenfujita
0
350
Springin‘でみんなもクリエイターに!
ueponx
0
120
設計ナイト2022 トランザクションスクリプト
shinpeim
11
2k
Vite でお手軽 Vue.js の環境構築
azuki
1
170
個人開発でReact Native + Expo製アプリを作った話
ryonakae
1
430
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1351
200k
GraphQLの誤解/rethinking-graphql
sonatard
27
6.5k
The Invisible Customer
myddelton
110
11k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
315
19k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
Teambox: Starting and Learning
jrom
123
7.7k
Pencils Down: Stop Designing & Start Developing
hursman
112
9.8k
Faster Mobile Websites
deanohume
294
28k
Product Roadmaps are Hard
iamctodd
34
6.5k
Making the Leap to Tech Lead
cromwellryan
113
7.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
Transcript
2017ʹ৽نΞϓϦ Λ্ཱͪ͛ͨ Keisuke Kobayashi (@kobakei) shibuya.apk #20
About Me • Keisuke Kobayashi • GitHub, Qiita: kobakei •
Twitter: kobakei122 • Kyash, Inc • ݸਓࣄۀओͬͯ·͢
2017ʹ৽͘͠ΞϓϦΛ ্ཱͪ͛ͨΛ͠·͢
Kyash • ݸਓؒૹۚαʔϏε • 20174݄ʹiOS൛ϦϦʔε • 20177݄ʹAndroid൛ϦϦʔε
Kyash • ݸਓؒૹۚαʔϏε • 20174݄ʹiOS൛ϦϦʔε • 20175݄ʹԶೖࣾ • 20177݄ʹAndroid൛ϦϦʔε
2͔݄ͪΐͬͱͰϦϦʔε • AndroidΤϯδχΞ1ਓ • େମ40ը໘ • αʔόʔͷAPI͢Ͱʹ͋Δ • ͍͔ʹͯ͠ϦϦʔε͔ͨ͠
Kotlin • Google I/Oલʹ࠾༻ • Kotlinͷํ͕։ൃૣ͍Β͍͠ͱ͍͏ᷚ • ษڧ͠ͳ͕Βॻ͖͢͢ΊΔ • Better
Javaͱͯ͠ॻ͚ͩ͘ͳΒ͙͢׳ΕΔ
࣮ࡍͲ͏͔ͩͬͨ • λΠϓྔ͕ݮͬͨ • Data class • Delegated property •
NPE͕ݮͬͨ • Nullڐ༰ or ඇڐ༰
ྫ: Delegated property class MainActivity : AppCompatActivity { companion object
{ fun createIntent(context: Context, hoge: String?, fuga: Int): Intent { return Intent(context, MainActivity::class.java).apply { putExtra(MainActivity::hoge.name, hoge) putExtra(MainActivity::fuga.name, fuga) } } } val hoge: String? by ExtraNullable() val fuga: Int by ExtraNonNull() }
ࠔͬͨͱ͜Ζ • είʔϓؔͷ͍ํʹ໎ͬͨ • ࠷ۙͨΖ͏͞Μͷϑϩʔνϟʔτʹै͏ • ParcelizeΛಋೖͨ͠ΒJBͰىಈ͠ͳ͘ͳͬͨ • ͋͘·ͰExperimentalͳͷͰҙ
ઃܭ • MVVM + ϨΠϠʔυΞʔΩςΫνϟ • Data binding • ֤֊ΛRxJavaͰͭͳ͙
• ϥΠϑαΠΫϧʹԠͯ͡dispose͞ΕΔ Έ
None
ϥΠϒϥϦ • ͍͍ͩͨఆ൪Λ͍ͬͯΔ • ϒϩάʹ·ͱΊ·ͨ͠ • Android։ൃʹ͓͚Δఆ൪ϥΠϒϥϦ22બ
ఆ൪Ҏ֎ʹศརͬΆ͍ͷ • DeepLinkDispatch • Airbnb࡞ɻΞϊςʔγϣϯͰσΟʔϓϦϯΫͷίʔυΛࣗಈੜ • debot • ϝϧΧϦͷࠓҪ͞Μ࡞ɻΛৼͬͯσόοάϝχϡʔΛग़͢
• MaterialChipsInput • GmailͷѼઌબUIͬΆ͍ΞϨ
None
Architecture Components • ։ൃ࣌·ͩbetaͩͬͨͷͰΘͳ͔ͬͨ • RxLifecycleͬΆ͍ΈΛࣗ࡞ͨ͠ • ͍͍ײ͡ʹCompositeDisposableʹadd͢Δ Έ •
ORMOrmaΛͬͨ
ࣗ࡞ͨ͠ϥΠϒϥϦ • FabSpeedDial • طଘͷϥΠϒϥϦ͕ඍົͩͬͨͷͰ࡞ͬͨ • ͍͔ͭ͘ͷUIϥΠϒϥϦforkͨ͠ • UIϥΠϒϥϦ์ஔ͞Ε͕ͪ
None
ςετ • ୯ମςετ • Rolectric + mockito-kotlin • Mockito-kotlin͍͍ͧ •
UIςετ • ͪΐͬͱԿݴͬͯΔ͔Θ͔Βͳ͍Ͱ͢
Mockito-kotlin val mock = mock<SomeClass> { on { hoge() }
doReturn "hoge" on { fuga() } doReturn "fuga" }
·ͱΊ • Kyash Android൛ͷ։ൃΛࢧٕ͑ͨज़Λհ͠·ͨ͠ • Kotlin • ઃܭ • ϥΠϒϥϦ
• ςετ
Α͍͓Λʂ