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
550
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.4k
NEMのAPIとモザイクであそぼう
kirimin
0
390
はじめようきれいなコード
kirimin
8
3.1k
Material Components for Android触ってみる
kirimin
7
2k
[社内LT]あたらしいMaterial Design
kirimin
1
1.7k
Hello-kirimin-chan
kirimin
0
140
Other Decks in Programming
See All in Programming
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
650
10 Costly Database Performance Mistakes (And How To Fix Them)
andyatkinson
0
300
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
12
4.1k
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
760
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
350
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
290
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
9
4.4k
A2A プロトコルを試してみる
azukiazusa1
2
1.4k
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
680
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
210
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
960
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
610
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Writing Fast Ruby
sferik
628
62k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Bash Introduction
62gerente
613
210k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
YesSQL, Process and Tooling at Scale
rocio
173
14k
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͕ελϯμʔυ ʹͳΔϙςϯγϟϧଟ͍ʹ͋Δͱࢥ͍ͬͯΔ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ