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
独自設計のAndroidアプリを設計ごとKotlinizeした話
Search
Shun Hosaka
December 19, 2017
Programming
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
独自設計のAndroidアプリを設計ごとKotlinizeした話
R.kt #2の時の登壇資料です。
Shun Hosaka
December 19, 2017
More Decks by Shun Hosaka
See All by Shun Hosaka
Android Goodbye `shape`
reyurnible
0
450
Kotlin + Kodein Test Data Mocking
reyurnible
1
680
なぜ変更を検知できるDBが必要なのか
reyurnible
1
140
RxDownloader
reyurnible
0
130
Other Decks in Programming
See All in Programming
Claude Team Plan導入・ガイド
tk3fftk
0
240
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.7k
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
230
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
180
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
380
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
360
5分で問診!Composer セキュリティ健康診断
codmoninc
0
600
What's New in Android 2026
veronikapj
0
200
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
440
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Navigating Team Friction
lara
192
16k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
380
A better future with KSS
kneath
240
18k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
380
Believing is Seeing
oripsolob
1
170
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
HDC tutorial
michielstock
2
750
Paper Plane
katiecoart
PRO
2
52k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Transcript
ಠࣗઃܭͷ AndroidΞϓϦΛ ઃܭ͝ͱKotlinizeͨ͠ ϦΫϧʔτϚʔέςΟϯάύʔτφʔζ อࡔॣ 4IVO)PTBLB 1
͡Ίʹ w อࡔॣ ΄͔͞͠ΎΜ w ৽ଔ̍ w (JU)VC 2JJUBͳͲ3FZVSOJCMF
w ΩοζϦʔͱ͍͏ϓϩμΫτͷ10݉ΤϯδχΞ ʢอҭԂ͚ͷαʔϏεʣ 2
ࠓͷ༰ w ೖ͔ࣾͯ͠Βͪΐͪ͘ΐ͖ͬͯͨ͘ɺ ࣗϓϩμΫτͷ,PUMJOԽΛҾ͖ܧ͍ͩ w ,PUMJOಛ༗ͷΑΓɺॻ͖͑ͷ͕ଟΊ w ॻ͖͑ҰؾʹͬͯͬͨʂͰͳ͘ɺ ظεύϯͰɺͲ͏Ҿ͖ܧ͍͔ͩͷ 3
ܦҢ w ࠷ॳɺ֎Ͱ։ൃͨ͠ϓϩμΫτ w ʹר͖औͬͯɺҰ෦,PUMJOʹϦϥΠτ͠ ͔ͯΒͷϦϦʔε w Խͯ͠ɺࠓͷ݄ʹ"OESPJEͷ୲ ऀ͕ʹ 4
ݱঢ় w ,PUMJOɺ͘Β͍ɻ w ओཁͳը໘େମϦϥΠτ͕ऴΘͬͯɺΓ ઃܭը໘ͳͲ͕ଟ͍ɻ 5
ॻ͖͑લ w +BWBͷίʔυ w ಠࣗઃܭɾൿͷλϨతͳίʔυ͕ࢁ͋Δ 6
ॻ͖͑ޙ w ,PUMJOͷίʔυ w .71 %%%Ͱ%BUB#JOEJOHͳͲ࣌ͷτϨϯυ 7
ϦϥΠτͷਐΊํ w ը໘͝ͱʹϦϥΠτ ɾϝϦοτɿ࡞ۀ୯Ґ͕͚͍͢ɾ୲͍͢͠ ɾσϝϦοτɿϥΠϒϥϦΛണ͕ͨ͠Γ͢Δͷʹಓ͕͍ w ͝ͱʹϦϥΠτ ɾϝϦοτɿઃܭΛม͍͑͢ ɾσϝϦοτɿมߋ͕େ͖͘ͳΓ͕ͪɺҰ෦ϦϦʔε͕͠ʹ͍͘ w
ϦϑΝΫλϦϯάϦϥΠτ ɾϝϦοτɿεςοϓΛ౿ΜͰ៉ྷʹͰ͖Δ ɾσϝϦοτɿ͕͔͞Ή 8
ϦϥΠτͷਐΊํ 9 w ̋ը໘͝ͱʹϦϥΠτ w ͝ͱʹϦϥΠτ w ϦϑΝΫλϦϯάϦϥΠτ w ཧ༝ɿ
w ҰؾʹϦϥΠτ͢ΔͷͰͳ͘ɺظతͳϦϥΠτΛఆͨ͠ w طଘίʔυʹςετ͕ͳ͘ɺͦͦϦϑΝΫλϦϯάʹة ݥ͕͋ͬͨ
ϦϥΠτͷํ w ࡞Γͷѱ͍ͱ͜Ζ͔ΒϦϥΠτ w ϦϥΠτޙඞͣςετΛॻ͘ w ϦϥΠτ͕ऴΘΔ·ͰɺϦϥΠτͨ͠ଆͷϥΠϒϥϦೖΕସ ͑ͻ͔͑Δ w 6*ܥೖΕସ͑ͨΓͯ͠Δ
w ϦιʔεͳͲطଘͷͷΛ༻͠ͳ͍Ͱɺ৽͍͠ͷΛෳͳͲ ͯ͠༻͢Δ w OFX@ͳͲͷQSFpYΛ͚ͯΔ 10
ࣦഊஊͱڭ܇ w ϢʔβʔʹɺKBWB͔LPUMJOԽେͯؔ͠ͳ͍ ɾۀ߹ͳͲͰɺ͕࣌ؒࠩ͠ഭͬͯΔ࣌ʹΒͳ͍ w ༷ͷมߋͱϦϥΠτಉ࣌ʹΒͳ͍ ɾϦϥΠτ͔ͯ͠Βվम͢Δ͔ɺมߋ͔ͯ͠ΒϦϥΠτ w ةͳ͍ͳΒແཧΓ,PUMJOͰॻ͔ͳ͍ ɾϏοτྻͷॲཧͳͲ,PUMJOͰஔ͖͑ʹ͍͘ͷ
͋Δ ɾҰ୴+BWBͷΫϥεͷ··ݺͼग़͢ɺͨͩ͠,PUMJOϑΥ ϧμʹೖΕ͓ͯ͘ 11
ࠔΔ͜ͱ w ͕࣌ؒܦͭʹͭΕɺ,PUMJOԽͨ͠ͷͷதͰ ϦϥΠτ͍ͨ͠ͷ͕ग़ͯ͘Δ w ϦϥΠτ͢Δͱ13ͷίʔυ͕ࠩଟ͘ͳͬͯɺ ϨϏϡʔͮ͠Β͍ 12
νοϓε w Ϧιʔεͷ༻Χϯτɿ "OESPJE3FTPVSDF6TBHF$PVOU IUUQTHJUIVCDPNOJPSHBJ"OESPJE3FTPVSDF6TBHF$PVOU w ফ͍ͨ͠Ϋϥεͷ্Ͱɺ $PNNBOE ΫϦοΫ
ͰґଘϑΝΠϧͷҰཡΛ֬ೝ͢Δ 13
,PUMJOԽͯ͠ ม͑ͨॻ͖ํ 14
"DUJWJUZͳͲͷϏϧμʔύλʔϯ 15 ը໘͝ͱͷextensionΛ࡞ͬͨɻ ը໘໊.ktͰτοϓϨϕϧͷextensionΛॻ͍͍ͯΔ // file privateͳͷͰଞ͔Βࢀর͞ΕΔ͜ͱͳ͍ private object Keys
{ const val hoge = "Sample.hoge" } fun SampleActivity.Companion.createIntent(context: Context, hoge: String): Intent = Intent(context, SampleActivity::class.java).apply { put(Keys.hoge, hoge) } fun SampleFragment.Companion.newInstance(hoge: String): SampleFragment = SampleFragment().apply { arguments = Bundle().apply { putString(Keys.hoge, hoge) } } fun SampleActivity.createFragment(): SampleFragment = SampleFragment.newInstance(intent.getStringExtra(Keys.hoge)) fun SampleFragment.parseHoge(): String = arguments.getString(Keys.hoge) ※SampleActivityͱSampleFragmentʹɺͦΕͧΕ companion object;ͱ͍͏ܗͷهࡌ͕ඞཁɻ
ίʔϧόοΫ 16
͓ΘΓʹ w ϦϥΠτແͤͣɺظઓΛݟਾ͑ͯΔ w ݴޠڥ͕มΘΔͷͰɺઈରతͳํཱͯ ͳ͍ w ϦϥΠτ͕ϢʔβʔՁΛੜΉͱա৴͠ͳ͍ 17