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
2017年に新規アプリを立ち上げた話
Search
Keisuke Kobayashi
December 08, 2017
Programming
1.2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2017年に新規アプリを立ち上げた話
shibuya.apk #20
Keisuke Kobayashi
December 08, 2017
More Decks by Keisuke Kobayashi
See All by Keisuke Kobayashi
AI 1st でエンタープライズ SaaS を立ち上げる / AI 1st Enterprise SaaS
kobakei
1
260
プロダクト開発をAI 1stに変革する〜SaaS is dead時代で生き残るために〜 / AI 1st Product Development
kobakei
0
2.8k
今日から始める依存性の注入 / First Time Dependency Injection
kobakei
26
7.8k
iOSアプリの技術的負債をどう返済したか / How to repay the technical debt of iOS app
kobakei
2
1k
iOSアプリ内で不正なSSL証明書を検知する / SSL Pinning for iOS apps
kobakei
34
12k
Kyashアプリ開発の現場
kobakei
4
3k
Review of Google I/O 2017 & Prepare for Google I/O 2018
kobakei
0
350
APIクライアントをCodableで置き換えた話
kobakei
0
1.6k
開発者が知っておきたい通知の歴史
kobakei
9
7.9k
Other Decks in Programming
See All in Programming
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
180
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
180
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
2.9k
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
270
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.8k
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
110
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
140
Vite+ Unified Toolchain for the Web
naokihaba
0
720
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
350
Creating Composable Callables in Contemporary C++
rollbear
0
200
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
380
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
640
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
330
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Product Roadmaps are Hard
iamctodd
55
12k
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 • ઃܭ • ϥΠϒϥϦ
• ςετ
Α͍͓Λʂ