Slide 1

Slide 1 text

ࢲʹKotlin͕෣͍߱Γͨ -AndroidͰͷKotlinҠߦΛݟ͖ͯͨࢹ఺͔ΒͷKotlin- in ΦλΫ͕KotlinΛ௥͏ϥΠτχϯάτʔΫΠϕϯτ @kirimin

Slide 2

Slide 2 text

ࣗݾ঺հ • @kirimin • AndroidΤϯδχΞ • ݱࡏ͸KotlinͰAndroid։ൃ • Kotlinྺ5೥͘Β͍ • ۀ຿ͰJava͔ΒKotlinҠߦܦݧ͋Γ

Slide 3

Slide 3 text

͖ΓΈΜͪΌΜ • όʔνϟϧ༮ঁϓϩάϥϚʔ͖ΓΈΜͪΌ ΜͷϚωʔδϟʔͰ͢ɻ • ͍ΘΏΔVTuberɻ • ϓϩάϥϛϯά΍ΤϯδχΞʹ͍ͭͯͷಈ ըΛ౤ߘͨ͠ΓϥΠϒίʔσΟϯά഑৴Λ ͨ͠Γͯ͠·͢ɻ • νϟϯωϧొ࿥ΑΖ͘͠Ͷʂ

Slide 4

Slide 4 text

ٕज़ॻయͰຊΛग़͠·͢(એ఻) • ϑϦʔϥϯεͷ஌ݟΛ ·ͱΊͨຊͱɺ͖ΓΈ ΜͪΌΜͷϑΝϯϒο Ϋ • ٕज़ॻయ6͸4/14ʂ • ങ͍ʹ͖͍ͯͩ͘͞ʂ

Slide 5

Slide 5 text

Kotlinͱࢲ • ·ͩKotlinͷ஌໊ ౓͕΄ͱΜͲͳ͔ͬ ͨ2015೥ॳ಄͔ ΒKotlinਪ͠ • ΅͕͘ॳΊͯ Kotlinʹग़ձͬͨ ೔ͷπΠʔτ

Slide 6

Slide 6 text

Kotlinͱࢲ • झຯͷΞϓϦΛKotlinʹϑϧॻ͖׵͑͢Δ (2015೥) • ࢓ࣄͰ΋KotlinҠߦΛܦݧ(2017೥) • ࠓ͸ϑϧKotlinͷϓϩδΣΫτͰ։ൃ(2018)

Slide 7

Slide 7 text

Javaͱൺֱͨ͠Kotlinͷར఺

Slide 8

Slide 8 text

Kotlinͷجૅ(ͬ͘͟Γ) • JVMͰಈ͘Java׬શޓ׵ݴޠ • ੜ࢈ੑͱཧղ͠΍͢͞ɺಋೖͷ͠΍͢͞Λҙࣝͨ͠ݱ࣮ࢤ޲ͷݴޠ • ؔ਺ܕͷΤοηϯε΍Ϟμϯͳݴޠ࢓༷Λ࠾༻ͨ͠Alt Java • Nullڐ༰ܕͱNullඇڐ༰ܕ • valʹΑΔఆ਺એݴ • JavaΑΓ΋ؾܰʹ͔ͭ͑ΔศརͳϦετૢ࡞ؔ਺

Slide 9

Slide 9 text

JVMͰಈ͘Java׬શޓ׵ݴޠ • Kotlinͷιʔείʔυ͸JavaόΠτίʔυʹม׵͞ΕΔ • ͭ·Γ࠷ऴతʹJavaʹͳΔ • JavaͷΫϥε΍ϥΠϒϥϦ͕ී௨ʹ࢖͑Δ • JavaϓϩδΣΫτ಺ͰڞଘՄೳ • ٯʹKotlinͰॻ͍ͨίʔυΛJava͔Βݺͼग़͢ޓ׵ੑ΋༻ҙ ͞Ε͍ͯΔ

Slide 10

Slide 10 text

ੜ࢈ੑͱཧղ͠΍͢͞ɺಋೖͷɹɹ ͠΍͢͞Λҙࣝͨ͠ݱ࣮ࢤ޲ͷݴޠ • Kotlin͸ಋೖͷ͠΍͢͞΍ֶशίετͷ௿͕͞ڧΈ • Ϟμϯ͚ͩͲγϯϓϧͳݴޠ࢓༷ • ࠷৽ͷJavaܦݧऀ΍SwiftܦݧऀͳΒΩϟονΞοϓ͸೉͘͠ͳ͍ • Scala΍ClojureͳͲʹର͢Δେ͖ͳڧΈ • GradleʹΑΔϏϧυγεςϜ • IntelliJͷެࣜαϙʔτ

Slide 11

Slide 11 text

ؔ਺ܕͷΤοηϯε΍Ϟμϯͳ ݴޠ࢓༷Λ࠾༻ͨ͠Alt Java • ߴ֊ؔ਺(ؔ਺Λड͚औΔؔ਺)΍Πϛϡʔλϒϧ ͳͲؔ਺ݴޠతͳΤοηϯεΛऔΓೖΕ͍ͯΔ • Java΋࠷ۙ͸ϥϜμࣜ΍StreamɺOptionalɺϥ ϜμࣜͳͲؔ਺ܕతͳϞμϯͳݴޠ࢓༷ΛऔΓ ೖΕ͍ͯΔ͕ɺKotlin͸ݴޠϨϕϧͰαϙʔτ͞ Ε͓ͯΓɺΑΓચ࿅͞Ε͍ͯΔ

Slide 12

Slide 12 text

Nullڐ༰ܕͱNullඇڐ༰ܕ • KotlinͰ͸ม਺͸جຊnullΛڐ༰͠ͳ͍ɻ • nullΛڐ༰͢Δ৔߹͸໌ࣔతʹ?Λ෇͚ܕએݴ ͢Δඞཁ͕͋Δ • JavaͷOptionalͱಉ͡ߟ͑ํ͕ͩɺͪ͜Β͸ ݴޠ࢓༷ͱͯ͠αϙʔτ

Slide 13

Slide 13 text

Nullڐ༰ܕͱNullඇڐ༰ܕ var hoge: String = null // ίϯύΠϧΤϥʔ var hoge: String = "hoge" hoge = null // ίϯύΠϧΤϥʔ -------------------------------------------- var fuga: String? = null // OK var fuga: String? = "fuga" fuga = null // OK

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

valએݴͱvarએݴ • valͰએݴͨ͠ม਺͸ෆม(ఆ਺)ʹͳΔ • var͸Մม • KotlinͰ͸ग़དྷΔ͚ͩvalΛ࢖͏จԽ

Slide 16

Slide 16 text

valએݴͱvarએݴ val hoge: String = "hoge" hoge = "fuga" // ίϯύΠϧΤϥʔ -------------------------------------------- var hoge: String = "hoge" hoge = "fuga" // OK

Slide 17

Slide 17 text

JavaΑΓ΋ؾܰʹ͔ͭ͑Δศརͳ Ϧετૢ࡞ؔ਺ • KotlinͷCollectionΠϯλʔϑΣʔεʹ͸map ΍filterͱ͍ͬͨͨ͘͞Μͷؔ਺ܕతͳศརϝ ιου͕ఆٛ͞Ε͍ͯΔ • JavaͷStreamͷΑ͏ͳ΋ͷ͕ͩɺΑΓؾܰʹ forจͳͲͷ୅ΘΓʹ࢖͑Δ

Slide 18

Slide 18 text

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" }

Slide 19

Slide 19 text

Java͔ΒKotlin΁ͷҠߦ

Slide 20

Slide 20 text

Java͔ΒKotlin΁ͷҠߦ • KotlinͱJava͸ڞੜͰ͖Δ • 1Ϋϥε͔ΒҠߦΛ࢝ΊΒΕΔ • (࠶)JavaͷϥΠϒϥϦ΍ϑϨʔϜϫʔΫ͸جຊKotlin Ͱ΋࢖͑Δ • IntelliJʹϑΝΠϧΛJava͔ΒKotlinʹࣗಈม׵ͯ͠ ͘ΕΔػೳ͕͋Δ

Slide 21

Slide 21 text

Java͔ΒKotlin΁Ҡߦͯ͠ਏ͔ͬ ͨ࿩ • AndroidͰ͸΄ͱΜͲฉ͍ͨ͜ͱ͕ͳ͍ • ֶशίετ͸௿͘Javaͱൺ΂ϋʔυϧ͕ߴ͍ͱ͍͏ ͜ͱ͸͋·Γͳ͍ • KotlinͱJava͕ڞଘ͍ͯ͠ΔϓϩδΣΫτ΋ͨ͘͞ Μ͋Δ • Ή͠ΖҰ౓Kotlinʹ׳ΕΔͱJavaʹ͸໭Εͳ͘ͳΔ

Slide 22

Slide 22 text

·ͱΊ • Kotlin͸ݱ࣮ࢤ޲ָ͔͍ͭ͠ݴޠ • AndroidͷੈքͰKotlinҠߦ͸΋ͷ͍͢͝੎͍ ͰਐΜͰ͍Δ • όοΫΤϯυͷੈքͰ΋Kotlin͕ελϯμʔυ ʹͳΔϙςϯγϟϧ͸ଟ͍ʹ͋Δͱࢥ͍ͬͯΔ

Slide 23

Slide 23 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ