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
認証・認可の基本を学ぼう後編
kouyuume
0
250
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
160
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
460
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
130
Basic Architectures
denyspoltorak
0
130
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
420
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
300
SwiftUIで本格音ゲー実装してみた
hypebeans
0
510
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
170
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.2k
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.1k
AIコーディングエージェント(Manus)
kondai24
0
220
Featured
See All Featured
Everyday Curiosity
cassininazir
0
110
Optimising Largest Contentful Paint
csswizardry
37
3.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
210
Code Reviewing Like a Champion
maltzj
527
40k
GitHub's CSS Performance
jonrohan
1032
470k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
The Curious Case for Waylosing
cassininazir
0
190
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
0
290
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
94
Automating Front-end Workflow
addyosmani
1371
200k
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͕ελϯμʔυ ʹͳΔϙςϯγϟϧଟ͍ʹ͋Δͱࢥ͍ͬͯΔ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ