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.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
140
Other Decks in Programming
See All in Programming
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
140
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.7k
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
210
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
210
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
140
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
460
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
340
信頼性の目標を誰も求めてない
shubox
0
490
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
6
2.5k
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
470
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Music & Morning Musume
bryan
47
7.4k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
560
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
200
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Skip the Path - Find Your Career Trail
mkilby
1
220
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
What's in a price? How to price your products and services
michaelherold
247
13k
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