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.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
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
Creating Composable Callables in Contemporary C++
rollbear
0
150
Oxlintのカスタムルールの現況
syumai
6
1.1k
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.3k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
710
New "Type" system on PicoRuby
pocke
1
980
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
550
Oxcを導入して開発体験が向上した話
yug1224
4
320
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
710
ふつうのFeature Flag実践入門
irof
8
4k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.3k
Being A Developer After 40
akosma
91
590k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Typedesign – Prime Four
hannesfritz
42
3.1k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
440
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.5k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
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