SwiftΤϯδχΞʹհ͢ΔKotlinͷܕͱJavaͱͷޓੑSwift/Kotlin߹ಉษڧձ #2
View Slide
ࣗݾհ
ΘΓ͔ΜΛݱۚͰਫ਼ࢉ͠ͳͯ͘ޙ͔ΒεϚϗ্Ͱٻͨ͠Γग़དྷΔΞϓϦͩΑʂΘΓ͔Μ(ۉׂ)͡Όͳͯ͑͘ΔΑʂϥϯνͱ͔ʂAndroid൛΄΅KotlinͰ࣮͞Ε͍ͯΔΑʂ
Kotlinʹ͍͓ͭͯ͞Β͍
Swiftͱಉ͘͡Nullڐ༰ܕͱඇڐ༰ܕ͕͋Δ• ѻ͍ํ͍͍ͩͨಉ͡var str1: String = “hallo”str1 = null // ίϯύΠϧΤϥʔvar str2: String? = “konichiwa”str2 = nullstr2.length // ίϯύΠϧΤϥʔstr2?.length
Swiftͱಉ͘͡جຊతʹΠϛϡʔλϒϧͳΛ༻͢Δ• ѻ͍ํ͍͍ͩͨಉ͡var str1 = “konichiwa”str1 = “hallo”val str2 = “konichiwa”str2 = “hallo” // ίϯύΠϧΤϥʔ
ϓϦϛςΟϒܕͱࢀরܕ(ΦϒδΣΫτ)Λ۠ผ͠ͳ͍• JavaʹϓϦϛςΟϒܕͱΦϒδΣΫτͱͯ͠ѻ͏ͨΊͷϥούʔΫϥε͕͕͋ͬͨɺKotlinͰ۠ผ͠ͳ͍• int(Integer) → Int• long(Long) → Long• boolean(Boolean) → Boolean
ίϨΫγϣϯෆมͱՄมʹ͔Ε͍ͯΔ• σϑΥϧτͷίϨΫγϣϯෆม• ૢ࡞͍ͨ͠߹MutableListͳͲΛ͏val list = listOf(“a”, “b”, “c”)list.add(“d”) // ίϯύΠϧΤϥʔʂ(add()remove()ϝιου͑ͳ͍)val mList = mutableListOf(“a”, “b”, “c”)mList.add(“d”)
KotlinͷίϨΫγϣϯ֓ཁ$PMMFDUJPO .VUBCMF$PMMFDUJPO-JTU .VUBCMF-JTU
ͱ͜ΖͰɺKotlinJavaͱશʹޓੑ͕͋Γ·͢
Java͔ΒݟͨNullඇڐ༰ܕ• KotlinͷNullඇڐ༰ܕJavaͰ@NotNullΞϊςʔγϣϯʹͳΔfun getStr(str: String): String {return str}↓@NotNullpublic String getStr(@NotNull String str) {Intrinsics.checkParameterIsNotNull(str, "str");return str;}
Kotlin͔ΒݟͨJavaม• JavaͰఆٛ͞ΕͨΛKotlin͔Βࢀর͢ΔͱϓϥοτϑΥʔϜܕͱ͍͏ಛघͳܕʹͳΔpublic String getStr(String str) {return str;}↓fun getStr(str: String!): String! {return str}
ϓϥοτϑΥʔϜܕʁ• String!ͷΑ͏ʹදݱ͞ΕΔܕ• Nullڐ༰ܕ͔ඇڐ༰ܕ͔ෆ໌ͳঢ়ଶ• Ξϯϥοϓ͠ͳͯͦ͘ͷ··ࢀরͰ͖Δ• ࣮ͨͩ͠ߦ࣌ʹNullPointerException͕ൃੜ͠͏Δ• JavaଆͰ@Nullable@NotNull͕͍͍ͯΕਖ਼͍͠ܕʹม͞ΕΔ• ͪͳΈʹintͳͲͷϓϦϛςΟϒܕnullʹͳΓ͑ͳ͍ͷͰৗʹඇڐ༰ܕͱͯ͠ѻ͑Δ
ͳͥϓϥοτϑΥʔϜܕʁ• ͱͱJavaͰఆٛ͞Εͨͯ͢Nullableܕͱͯ͠ѻ͏Ҋ͋ͬͨ• ͔ͦ͠͠ΕͰJavaͷϥΠϒϥϦΛࢀরͨ͠߹ͳͲʹίʔυ͕?ͩΒ͚ʹͳͬͯ͠·͍ݱ࣮తͰͳ͍• ݱ࣮తͳརศੑΛॏࢹ͠ɺϓϥοτϑΥʔϜܕΛɹఆٛͨ͠
Java͔ΒݟͨKotlinίϨΫγϣϯ• KotlinͷListMutableListJava͔Βjava.util.Listʹݟ͑Δfun getList(list: List): List {return list}↓@NotNullpublic List getList(@NotNull List list) {Intrinsics.checkParameterIsNotNull(list, "list");return list;}
Java͔ΒݟͨKotlinίϨΫγϣϯ• JavaͷίϨΫγϣϯͱKotlinͷίϨΫγϣϯޓੑ͕͋Γಛʹҙࣝ͢Δ͜ͱͳ͘ѻ͏ࣄ͕Ͱ͖Δ• ͨͩ͠KotlinͰෆมͰએݴ͞Ε͍ͯΔίϨΫγϣϯͰJava͔ΒมߋͰ͖ͯ͠·͏
Kotlin͔ΒݟͨJavaίϨΫγϣϯ• JavaͷListKotlin͔ΒMutableͳListͱͯͦ͠ͷ··ѻ͑Δ• ListΛฦ͢JavaͷϝιουΛoverride͢Δ߹ͳͲMutableͳListͱͯ͠ImmutableͳListͱͯ͠ఆٛग़དྷΔ
KotlinͷίϨΫγϣϯ֓ཁ$PMMFDUJPO .VUBCMF$PMMFDUJPO-JTU .VUBCMF-JTU"SSBZ-JTU
Java͔ΒݟͨIntܕ• جຊతʹintʹม͞ΕΔ• ͨͩ͠ɺInt?ܕArrayܕ(ྻ)ͳͲΦϒδΣΫτͱͯ͠ѻ͏ඞཁ͕͋ΔͨΊɺIntegerܕͱͯ͠ѻΘΕΔ
Kotlin͔ΒݟͨϦςϥϧ• ٯʹKotlin͔ΒݟͨJavaͷϦςϥϧIntͳͲͷKotlinͷΦϒδΣΫτͱͯ͠ѻΘΕΔ
·ͱΊ• KotlinJavaͷΫϥεͱҧײͳ͘ڞଘͰ͖ΔࣄΛڧ͘ҙࣝͨ͠ݴޠ༷ʹͳ͍ͬͯΔ• ݱ࣮తͳ։ൃݱͰͷརศੑΛॏࢹͨ͠ࣄ͕Kotlin͕ਓؾݴޠʹͳͬͨཧ༝ͷҰ͔ͭ͠Εͳ͍
Kotlinͷ༷ΛͬͱΓͨ͘ͳͬͨΒʮKotlin in Actionʯ͕Φεεϝࠓճͨ͠Α͏ͳ༰͕ͱ͔ͯΓ͘͢ղઆ͞Ε͍ͯ·͢ʂ