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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shun Hosaka
December 19, 2017
Programming
1.6k
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
150
RxDownloader
reyurnible
0
130
Other Decks in Programming
See All in Programming
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
380
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
200
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
370
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
500
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
280
Go 1.27 における memory allocation の高速化
andpad
0
310
「人を評価する AI」の設計と実装
ryoyanara
0
240
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
340
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1k
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
490
初めての模倣学習とVLA
natsutan
0
220
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
550
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
500
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Designing for humans not robots
tammielis
254
26k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
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