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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
きりみん
March 19, 2019
Programming
600
0
Share
Watashi ni Kotlin ga maiorita
きりみん
March 19, 2019
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
420
はじめようきれいなコード
kirimin
8
3.2k
Material Components for Android触ってみる
kirimin
7
2.1k
[社内LT]あたらしいMaterial Design
kirimin
1
1.8k
Hello-kirimin-chan
kirimin
0
180
Other Decks in Programming
See All in Programming
「話せることがない」を乗り越える 〜日常業務から登壇テーマをつくる思考法〜
shoheimitani
4
900
ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?
ydah
1
230
実践CRDT
tamadeveloper
0
600
GoogleCloudとterraform完全に理解した
terisuke
1
160
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
500
Swift Concurrency Type System
inamiy
1
560
iOS機能開発のAI環境と起きた変化
ryunakayama
0
190
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.7k
Cache-moi si tu peux : patterns et pièges du cache en production - Devoxx France 2026 - Conférence
slecache
0
320
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
1.9k
AIと共に生きる技術選定 2026
sgash708
0
110
The Monolith Strikes Back: Why AI Agents ❤️ Rails Monoliths
serradura
0
360
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
280
Design in an AI World
tapps
1
200
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
230
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
270
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
390
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
180
4 Signs Your Business is Dying
shpigford
187
22k
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͕ελϯμʔυ ʹͳΔϙςϯγϟϧଟ͍ʹ͋Δͱࢥ͍ͬͯΔ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ