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
Java で書かれた Android アプリを Kotlin で書き直すまでの話 / ...
Search
Ryutaro Miyashita
July 03, 2018
Technology
0
1.7k
Java で書かれた Android アプリを Kotlin で書き直すまでの話 / Talk of rewrite Android app for Java to Kotlin
集まれ Kotlin 好き ! Kotlin 愛好会 vol 2 @ DeNA
Ryutaro Miyashita
July 03, 2018
Tweet
Share
More Decks by Ryutaro Miyashita
See All by Ryutaro Miyashita
開発 4 年目のアプリへの Kotlin 導入
ryugoo
0
430
チーム開発と Android アプリの構成
ryugoo
5
1.2k
開発 4 年目のアプリへの Kotlin 導入
ryugoo
1
2.7k
Either で想定内のエラーと想定外のエラーを別ものにしたい!
ryugoo
2
1.7k
全て S になる -RxJava と LWS を持ち込む楽しさ-
ryugoo
4
750
Transition at RxJava 1.x to 2.x
ryugoo
0
540
Kotlin さんと誕生日が近いだけの男の話
ryugoo
2
520
Android エンジニアになって 2 年の学び
ryugoo
1
2.7k
年末だしお掃除をしよう!
ryugoo
0
800
Other Decks in Technology
See All in Technology
AWS re:Inforce 2025 re:Cap Update Pickup & AWS Control Tower の運用における考慮ポイント
htan
1
200
マルチプロダクト×マルチテナントを支えるモジュラモノリスを中心としたアソビューのアーキテクチャ
disc99
0
150
VLMサービスを用いた請求書データ化検証 / SaaSxML_Session_1
sansan_randd
0
210
AI によるドキュメント処理を加速するためのOCR 結果の永続化と再利用戦略
tomoaki25
0
360
猫でもわかるQ_CLI(CDK開発編)+ちょっとだけKiro
kentapapa
0
3.4k
製造業の課題解決に向けた機械学習の活用と、製造業特化LLM開発への挑戦
knt44kw
0
150
生成AI時代におけるAI・機械学習技術を用いたプロダクト開発の深化と進化 #BetAIDay
layerx
PRO
1
980
AI コードレビューが面倒すぎるのでテスト駆動開発で解決しようとして読んだら、根本的に俺の勘違いだった
mutsumix
0
160
Nx × AI によるモノレポ活用 〜コードジェネレーター編〜
puku0x
0
300
2025-07-31: GitHub Copilot Agent mode at Vibe Coding Cafe (15min)
chomado
2
350
AI人生苦節10年で会得したAIがやること_人間がやること.pdf
shibuiwilliam
1
270
Gemini in Android Studio - Google I/O Bangkok '25
akexorcist
0
180
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
For a Future-Friendly Web
brad_frost
179
9.9k
Adopting Sorbet at Scale
ufuk
77
9.5k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Designing for humans not robots
tammielis
253
25k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Side Projects
sachag
455
43k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
Making Projects Easy
brettharned
117
6.3k
A better future with KSS
kneath
238
17k
Transcript
+BWBͰॻ͔Εͨ"OESPJEΞϓϦΛ ,PUMJOͰॻ͖͢·Ͱͷ ू·Ε,PUMJO͖,PUMJOѪձWPM
ٶԼཽେ $IBU8PSLגࣜձࣾ ΫϥΠΞϯτΞϓϦέʔγϣϯ։ൃ෦ !SZVHPP@ ͖ͳ,PUMJOͷػೳ4NBSU$BTU
$IBU8PSL
$IBU8PSL ‣ Ϗδωε͚ͷνϟοταʔϏε 8FCJ04"OESPJEσεΫτοϓΞϓϦͰఏڙ "OESPJEΞϓϦ͔Β+BWB ‣ ʙ·Ͱ5JUBOJVN +BWB4DSJQU
ͩͬͨ ‣ +BWB൛͔Β։ൃΛ։࢝ ‣ ,PUMJOΛݕ౼͢ΔͨΊʹͷ,PUMJOษڧձʹࢀՃ ‣ ࠾༻ڧԽத J04"OESPJE4DBMB1)143&ͳͲ ৄ͘͠8FCαΠτͰ ‣ IUUQTDPSQDIBUXPSLDPNKBSFDSVJU ‣ ؾʹͳΔ͜ͱ͕͋ͬͨΒ͔͚ͯԼ͍͞
,PUMJO
,PUMJO ‣ (PPHMF*0Ͱ"OESPJEެࣜݴޠԽ ͦΕ·Ͱ,PUMJOͷ։ൃࣄྫଟ͋ͬͨ͘ ެࣜݴޠʹͳΔ͜ͱͰ҆৺ΛखʹೖΕͨ طଘͷΞϓϦͱͷ͖߹͍ํΛͲ͏͢Δ͔ʁ ‣
෦తʹಋೖPSશ໘తʹಋೖ ͜Εͱ͍ͬͨਖ਼ղͳ͍ ৽نϓϩδΣΫτͳΒ,PUMJOͰྑ͍ $IBU8PSLͰશ໘తͳಋೖΛܾఆͨ͠
Ͳ͔͜Β ‣ ಋೖॳશ໘తͳಋೖ༧ఆͳ͔ͬͨ খ͞ͳμΠΞϩά͔ͭΒಋೖΛ։࢝ ‣ (PPHMF*0ͷཌ͔Βελʔτ ࣍ʹطଘͷը໘Λͭॻ͖͑ͯΈͨ
৽͍͠ػೳͷՃΛ,PUMJOͰॻ͍ͯΈͨ ‣ +BWBͱͷͭͳ͗ࠐΈ͕ωοΫʹͳ͍ͬͯͬͨ ͔֬ʹ,PUMJO+BWBͱͷ࿈ܞόονϦͰ͖Δ ͏·͘࿈ܞ͢Δʹಛผͳҙ͚͕ࣝඞཁ ‣ !+WN'JFME!+WN4UBUJD!+WN0WFSMPBET ‣ SFUVSO6OJU*/45"/$& ‣ 1MBUGPSN5ZQFT
!+WNʙΞ ϊςʔγϣϯ ‣ +BWB͔ΒͷΞΫηεΛҙࣝ͢Δඞཁ͕͋Δ class MyFragment : Fragment() { companion
object { @JvmField val TAG: String = MyFragment::class.java.simpleName } @JvmOverloads fun logic(label: String = "") {} } ,PUMJO
SFUVSO6OJU*/45"/$& ‣ ,PUMJOʹlWPJEzଘࡏ͠ͳ͍ class BusinessLogic { fun async(callback: () ->
Unit) { // Some async logic callback(); } } BusinessLogic logic = new BusinessLogic(); logic.async(() -> { return Unit.INSTANCE; }); ,PUMJO +BWB
IUUQTEJTDVTTLPUMJOMBOHPSHUKBWBJOUFSPQVOJUDMPTVSFTSFRVJSFEUPSFUVSOLPUMJOVOJU !+WN7PJEͷఏҊ ʹಉ͡ఏى
1MBUGPSN5ZQFT ‣ /PO/VMM͔/VMMBCMF͔એݴ͞Ε͍ͯͳ͍ܕ ܕใΛݟΔͱlzϚʔΫ͕͍͍ͯΔ ‣ "OESPJE4%,جຊతʹ1MBUGPSN5ZQFT ‣ !/PO/VMM!/VMMBCMF͕͍ͯͨΒϥοΩʔ
1MBUGPSN5ZQFT ‣ "OESPJE4%,Ͱ͋ΕίʔυΛಡΜͰܕΛܾఆ͢Δ val inflater: LayoutInflater = LayoutInflater.from(this) ,PUMJO
,PUMJOͷ͏·ຯΛҾ͖ग़͍ͨ͠ ‣ ,PUMJOΛ෦తʹಋೖ͢Δͱ+BWBʹӨڹ͕ग़Δ ٯʹ+BWBͷ࣮͕,PUMJOʹӨڹ͢Δ ‣ +BWB0QUJPOBMWT,PUMJO/PO/VMM/VMMBCMF5ZQF ࣗୡ͕ॻ͍ͨ+BWBͷίʔυΛݟฦ͢ ‣
!/PO/VMM!/VMMBCMFΞ ϊςʔγϣϯΛ͚͍ͯ͘ʁ ‣ ͍ͬͦͷ͜ͱ,PUMJOʹஔ͖͑ͨํ͕ྑ͍ͷͰͳ͍͔ʁ ‣ ͭͣͭஸೡʹ,PUMJOԽΛਐΊ͍ͯ͘ ਓͷνʔϜͰ,PUMJOͷशख़όϥόϥ ૬ޓʹϨϏϡʔΛ͠ͳ͕ΒཧղΛਂΊ͍ͯ͘ 1VMM3FRVFTUʹ,PUMJOͷݴޠػೳͷઆ໌Λॻ͘
,PUMJOͷ͏·ຯΛҾ͖ग़͢ಓఔ (PPHMF*0b $IBU8PSL"OESPJE 7FSTJPO 'VMM+BWB ߦ $IBU8PSL"OESPJE
7FSTJPO 'VMM,PUMJO ߦ Ի௨ "OESPJE ߦ
,PUMJOͷ͏·ຯΛҾ͖ग़ͨ݁͠Ռ ‣ ϲ݄ͰશͯͷίʔυΛ,PUMJOԽͨ͠ ͦͷؒʹػೳՃϦϑΝΫλϦϯάͰ͖ͨ ,PUMJOԽલޙͰίʔυͷྔʹͳͬͨ ‣ νʔϜͷਁಁͱޮՌ
/VMM1PJOUFS&YDFQUJPOͷ໓ ‣ ΄΅ग़ձ͍ͬͯͳ͍ ‣ 1MBUGPSN5ZQFTͷऔΓѻ͍͕పఈ͞Εͨ ‣ +BWBͷ0QUJPOBMΑΓऔΓѻָ͍͕ ίʔυͷՄಡੑͷ্ ‣ جຊWBMͰڱ͍ൣғͰWBSΛ͏ͳͲͷҙ͚ࣝ
,PUMJOͷ͏·ຯΛҾ͖ग़ͨ͢Ίʹ ‣ ,PUMJOଆͷ࣮ݟͨํ͕ྑ͍ ྫ͑NBQˠUP-JTUͷྲྀΕ ‣ +BWBͷ4USFBNΛͬͯΔͱ͍ͭΓͨ͘ͳΔ ‣ ࣮ࡍNBQͷ࣌Ͱ-JTU3͕ಘΒΕΔ val
results: List<R> = someCollection .map { it.convert() } .toList() ,PUMJO
,PUMJOͷ͏·ຯΛҾ͖ग़ͨ͢Ίʹ ‣ 4IPX,PUMJO#ZUFDPEFˠ%FDPNQJMF͢Δ val source = listOf(1, 2, 3, 4,
5) val results: List<String> = source .map { it.toString(10) } ,PUMJO UP-JTUແ UP-JTU༗
,PUMJOͷ͏·ຯΛҾ͖ग़͠ଛͶͨࣄྫ ‣ ,PUMJOͱ"OESPJE +%, ͷ"1*͕ಉ໊͡લ ‣ ਖ਼ղ൪ԼͷGPS&BDIͰͨ͠ʂ ൪ԼLPUMJODPMMFDUJPOTGPS&BDI ‣
.BQͷ֦ுؔͱͯ͠ఆٛ͞Ε͍ͯΔ ্͔ΒͭΊKBWBVUJM.BQGPS&BDI ‣ "OESPJEͰ͑ΔΑ͏ʹͳͬͨͷ-W͔Β ‣ /P$MBTT%FG'PVOE&SSPS͕ൃੜͨ͠
࠷ޙʹ
࠷ޙʹ ‣ طଘͷΞϓϦஈ֊తʹ,PUMJOԽ͍͚ͯ͠Δ ͨ +BWBͱͷ૬ޓӡ༻ੑͷߴ͞ ‣ த్ʹಋೖ͢Δ͙Β͍ͳΒશͯॻ͖͍͑ͨ
+BWBͱ,PUMJOؒͰͦΕͧΕΛҙࣝ͢Δखؒ ‣ ਓखͰؾΛ͚ͭͳ͍ͱ͍͚ͳ͍Օॴඞͣࣄނ͕ੜ·ΕΔ ‣ ଞνʔϜ͔Βݟͨ৺ཧతোน͕Լ͕ͬͨ ෭࣍తͳޮՌ ‣ J04νʔϜ͕,PUMJOͷίʔυΛಡΜͰ4XJGUʹҠ২ ‣ 4DBMB ؚ4DBMB+4 5ZQF4DSJQU͍༰қʹಡΊΔ
͓͠·͍