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
Watashi ni Kotlin ga maiorita
Search
きりみん
March 19, 2019
Programming
0
580
Watashi ni Kotlin ga maiorita
きりみん
March 19, 2019
Tweet
Share
More Decks by きりみん
See All by きりみん
AndroidエンジニアがRailsにチャレンジしてる理由
kirimin
1
1.6k
What are AtCoder and competitive programming
kirimin
0
10k
バーチャル男声幼女プログラマーとして活動した1年間の振り返り
kirimin
0
1.1k
アプリエンジニアでも神絵師になりたい!
kirimin
4
5.5k
NEMのAPIとモザイクであそぼう
kirimin
0
400
はじめようきれいなコード
kirimin
8
3.1k
Material Components for Android触ってみる
kirimin
7
2k
[社内LT]あたらしいMaterial Design
kirimin
1
1.8k
Hello-kirimin-chan
kirimin
0
170
Other Decks in Programming
See All in Programming
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
920
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
250
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
130
開発に寄りそう自動テストの実現
goyoki
2
1.6k
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
150
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
960
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
150
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
130
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
430
これならできる!個人開発のすゝめ
tinykitten
PRO
0
140
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
170
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
590
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
680
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
860
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Abbi's Birthday
coloredviolet
0
4k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
48
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
We Are The Robots
honzajavorek
0
130
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
33
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
95
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
79
Transcript
ࢲʹKotlin͕͍߱Γͨ -AndroidͰͷKotlinҠߦΛݟ͖ͯͨࢹ͔ΒͷKotlin- in ΦλΫ͕KotlinΛ͏ϥΠτχϯάτʔΫΠϕϯτ @kirimin
ࣗݾհ • @kirimin • AndroidΤϯδχΞ • ݱࡏKotlinͰAndroid։ൃ • Kotlinྺ5͘Β͍ •
ۀͰJava͔ΒKotlinҠߦܦݧ͋Γ
͖ΓΈΜͪΌΜ • όʔνϟϧ༮ঁϓϩάϥϚʔ͖ΓΈΜͪΌ ΜͷϚωʔδϟʔͰ͢ɻ • ͍ΘΏΔVTuberɻ • ϓϩάϥϛϯάΤϯδχΞʹ͍ͭͯͷಈ ըΛߘͨ͠ΓϥΠϒίʔσΟϯά৴Λ ͨ͠Γͯ͠·͢ɻ
• νϟϯωϧొΑΖ͘͠Ͷʂ
ٕज़ॻయͰຊΛग़͠·͢(એ) • ϑϦʔϥϯεͷݟΛ ·ͱΊͨຊͱɺ͖ΓΈ ΜͪΌΜͷϑΝϯϒο Ϋ • ٕज़ॻయ64/14ʂ • ങ͍ʹ͖͍ͯͩ͘͞ʂ
Kotlinͱࢲ • ·ͩKotlinͷ໊ ͕΄ͱΜͲͳ͔ͬ ͨ2015ॳ಄͔ ΒKotlinਪ͠ • ΅͕͘ॳΊͯ Kotlinʹग़ձͬͨ ͷπΠʔτ
Kotlinͱࢲ • झຯͷΞϓϦΛKotlinʹϑϧॻ͖͑͢Δ (2015) • ࣄͰKotlinҠߦΛܦݧ(2017) • ࠓϑϧKotlinͷϓϩδΣΫτͰ։ൃ(2018)
Javaͱൺֱͨ͠Kotlinͷར
Kotlinͷجૅ(ͬ͘͟Γ) • JVMͰಈ͘Javaશޓݴޠ • ੜ࢈ੑͱཧղ͢͠͞ɺಋೖͷ͢͠͞Λҙࣝͨ͠ݱ࣮ࢤͷݴޠ • ؔܕͷΤοηϯεϞμϯͳݴޠ༷Λ࠾༻ͨ͠Alt Java • Nullڐ༰ܕͱNullඇڐ༰ܕ
• valʹΑΔఆએݴ • JavaΑΓؾܰʹ͔ͭ͑ΔศརͳϦετૢ࡞ؔ
JVMͰಈ͘Javaશޓݴޠ • KotlinͷιʔείʔυJavaόΠτίʔυʹม͞ΕΔ • ͭ·Γ࠷ऴతʹJavaʹͳΔ • JavaͷΫϥεϥΠϒϥϦ͕ී௨ʹ͑Δ • JavaϓϩδΣΫτͰڞଘՄೳ •
ٯʹKotlinͰॻ͍ͨίʔυΛJava͔Βݺͼग़͢ޓੑ༻ҙ ͞Ε͍ͯΔ
ੜ࢈ੑͱཧղ͢͠͞ɺಋೖͷɹɹ ͢͠͞Λҙࣝͨ͠ݱ࣮ࢤͷݴޠ • Kotlinಋೖͷֶ͢͠͞शίετͷ͕͞ڧΈ • Ϟμϯ͚ͩͲγϯϓϧͳݴޠ༷ • ࠷৽ͷJavaܦݧऀSwiftܦݧऀͳΒΩϟονΞοϓ͘͠ͳ͍ • ScalaClojureͳͲʹର͢Δେ͖ͳڧΈ
• GradleʹΑΔϏϧυγεςϜ • IntelliJͷެࣜαϙʔτ
ؔܕͷΤοηϯεϞμϯͳ ݴޠ༷Λ࠾༻ͨ͠Alt Java • ߴ֊ؔ(ؔΛड͚औΔؔ)Πϛϡʔλϒϧ ͳͲؔݴޠతͳΤοηϯεΛऔΓೖΕ͍ͯΔ • Java࠷ۙϥϜμࣜStreamɺOptionalɺϥ ϜμࣜͳͲؔܕతͳϞμϯͳݴޠ༷ΛऔΓ ೖΕ͍ͯΔ͕ɺKotlinݴޠϨϕϧͰαϙʔτ͞
Ε͓ͯΓɺΑΓચ࿅͞Ε͍ͯΔ
Nullڐ༰ܕͱNullඇڐ༰ܕ • KotlinͰมجຊnullΛڐ༰͠ͳ͍ɻ • nullΛڐ༰͢Δ߹໌ࣔతʹ?Λ͚ܕએݴ ͢Δඞཁ͕͋Δ • JavaͷOptionalͱಉ͡ߟ͑ํ͕ͩɺͪ͜Β ݴޠ༷ͱͯ͠αϙʔτ
Nullڐ༰ܕͱNullඇڐ༰ܕ var hoge: String = null // ίϯύΠϧΤϥʔ var hoge:
String = "hoge" hoge = null // ίϯύΠϧΤϥʔ -------------------------------------------- var fuga: String? = null // OK var fuga: String? = "fuga" fuga = null // OK
NullΛѻ͏ͨΊͷศརͳؔ var hoge: String? = "hoge" hoge.size // ίϯύΠϧΤϥʔ hoge?.size
// hoge͕nullͳΒ࣮ߦ͞Εͳ͍ hoge?.size ?: return // hoge͕nullͳΒreturn val size = hoge?.size ?: 0 // hoge͕nullͳΒ0Λೖ hoge?.let { // hoge͕nullͳΒ࣮ߦ͞Εͳ͍ println(it.size) } hoge.isNullOrEmpty() // nullۭ͘͠จࣈͳΒtrue
valએݴͱvarએݴ • valͰએݴͨ͠มෆม(ఆ)ʹͳΔ • varՄม • KotlinͰग़དྷΔ͚ͩvalΛ͏จԽ
valએݴͱvarએݴ val hoge: String = "hoge" hoge = "fuga" //
ίϯύΠϧΤϥʔ -------------------------------------------- var hoge: String = "hoge" hoge = "fuga" // OK
JavaΑΓؾܰʹ͔ͭ͑Δศརͳ Ϧετૢ࡞ؔ • KotlinͷCollectionΠϯλʔϑΣʔεʹmap filterͱ͍ͬͨͨ͘͞Μͷؔܕతͳศརϝ ιου͕ఆٛ͞Ε͍ͯΔ • JavaͷStreamͷΑ͏ͳͷ͕ͩɺΑΓؾܰʹ forจͳͲͷΘΓʹ͑Δ
JavaΑΓؾܰʹ͔ͭ͑Δศརͳ Ϧετૢ࡞ؔ val list = listof("a", "bb", "ccc") val sizeList
= list.map { str -> str.size } // sizeList = { 1, 2, 3 } val filteredList = list.filter { str -> str != "bb" } // filteredList = { "a", "ccc" }
Java͔ΒKotlinͷҠߦ
Java͔ΒKotlinͷҠߦ • KotlinͱJavaڞੜͰ͖Δ • 1Ϋϥε͔ΒҠߦΛ࢝ΊΒΕΔ • (࠶)JavaͷϥΠϒϥϦϑϨʔϜϫʔΫجຊKotlin Ͱ͑Δ • IntelliJʹϑΝΠϧΛJava͔ΒKotlinʹࣗಈมͯ͠
͘ΕΔػೳ͕͋Δ
Java͔ΒKotlinҠߦͯ͠ਏ͔ͬ ͨ • AndroidͰ΄ͱΜͲฉ͍ͨ͜ͱ͕ͳ͍ • ֶशίετ͘Javaͱൺϋʔυϧ͕ߴ͍ͱ͍͏ ͜ͱ͋·Γͳ͍ • KotlinͱJava͕ڞଘ͍ͯ͠ΔϓϩδΣΫτͨ͘͞ Μ͋Δ
• Ή͠ΖҰKotlinʹ׳ΕΔͱJavaʹΕͳ͘ͳΔ
·ͱΊ • Kotlinݱ࣮ࢤָ͔͍ͭ͠ݴޠ • AndroidͷੈքͰKotlinҠߦͷ͍͍͢͝ ͰਐΜͰ͍Δ • όοΫΤϯυͷੈքͰKotlin͕ελϯμʔυ ʹͳΔϙςϯγϟϧଟ͍ʹ͋Δͱࢥ͍ͬͯΔ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ