2017年5月18日、Google I/0 2017 のキーノートにおいてGoogleはAndroidの公式言語にKotlinを追加すると発表しました。ついにKotlinの時代が来ました。誰もがいつかはそうなるんじゃないかと思っていたかもしれませんが、その日は突然でした。 Google I/OではKotlin関連セッションとしてIntroduction to KotlinとLife is great and everything will be ok、Kotlin is hereの2つが追加されています。
iOSでは、3年前に発表されたSwiftがモダンで簡潔な開発言語を開発者にもたらしています。Kotlinは、古くからAndroidをサポートしていましたが公式言語ではなく、Googleが作った言語でもないという理由で、開発者に広がる速度がSwiftに比べて非常に遅かったように思います。
Kotlin紹介
Realmニュースでも2年前にAndroidには新しい言語が必要か? KotlinでKotlinを紹介しました。その頃と比べてもKotlinは随分と進歩し、またKotlinを作ったJetBrainsが提供するIntelliJ IDEAをベースとするAndroid StudioがAndroid開発における標準の開発環境になっています。Kotlinは6年前に発表され、すでにKotlin/JVM、Kotlin/JSは、Kotlin/Nativeなどさまざまな環境で動作します。また、Swiftに対して多くの影響を及ぼしたとも言われています。 Kotlin公式ブログによると、Kotlinの目標はフルスタックのWeb開発、AndroidとiOSアプリ、IoTなど、様々なプラットフォームでKotlinのみで開発できるようにすることです。今回の発表後も、Androidのみならず、様々な面で着実に発展することが予想されます。
Kotlinの利点について、簡潔、安全、多用途、互換性の観点からお話しします。 Javaで開発するよりも飛躍的にコードの量が減り、Null参照に対する安全性が言語レベルで提供されます。また、KotlinはIntelliJ(Android Studio)と強力に統合されています。Android Studio3.0には初めからKotlinのための機能が含まれ、言語とIDEを同じ会社が開発しているため強力なデバッグ機能も提供されます。また、Java->Kotlinの自動変換が強力で、ソースファイル丸ごとの変換だけでなく、JavaコードをKotlinファイルにコピーペーストする際にも自動的に変換が行われます。
RealmのMeetupでRealmの新機能のためのサンプルコードを示すとき、iOS用Swiftコードではわずか数行のコードが、AndroidのためのJavaコードでより多くのコードが必要になってしまうことがある残念に思っていました。Javaが使えなくなるわけではありませんが、今後はKotlinの表現力を生かしたサンプルコードも提供していこうと思います。今回の発表によりKotlinがより多くの開発現場で使われることで、Androidの開発者がより簡潔にコーディングを行え、重要な機能の実装に集中できると思います。
JetBrainsとKotlin
Android Studio、KotlinなどAndroidとの親和性の高さから、GoogleがJetBrainsを買収するのではないかという憶測もありました。しかし、JetBrainsは公式ブログで、Googleによる買収計画は全くなく、他のIDEなどのツールの開発にも影響がないと明らかにしました。また、Kotlinリリースサイクルも、今まで通りAndroidやAndroid Studioとは独立したものとすることを明らかにしています。ただし、Android Studio用のプラグインの開発においては、JetBrainsのKotlin開発チームとGoogleのAndroid Stuidoの開発チームが協力して行うとしています。
Kotlinを開発したJetBrainsは、Googleと一緒にKotlin財団を設立するという発表もおこないました。また、Kotlinカンファレンスが今年11月2日、3日にサンフランシスコで開催されます。これまで以上に多くの関心を呼ぶことは間違いありません。
日本語情報おすすめリンク
- JavaプログラマのためのKotlin入門
- Kotlinの関数参照 #Kotlin_Sansan
- Kotlin スコープ関数 用途まとめ
- KotlinをJavaで理解する
- Java → Kotlin 変換 そのあとに。
- Realmブログ:Androidには新しい言語が必要か? Kotlin
日本語情報おすすめ書籍
英語お勧めリンク
- Kotlin言語仕様
- Kotlinを学ぶためのリンク集:A Complete Guide To Learn Kotlin For Android Development
Kotlinのコード紹介
Kotlinのnull安全性
var a: String = "Realm” //デフォルトではnonnull
a = null // error
var b: String? = "Realm" // nullableなString型
b = null // ok
もちろんnullableな型の変数を参照するときに問題になる可能性はあるが、以下のようにすることでb
がnull
でない場合にのみ、length
が参照されます。
b?.length
スマートキャスティング
if (o is RealmObject) {
return o.isLoaded;
}
o
の型がRealmObject
であることを確認した後にアクセスしたコードでは、 o
に対して明示的なキャストを行わなくてもRealmObject
として扱われる。
名前つき引き数
class User(val name: String,
val age: Int,
val address: String = "") {
}
val minwoo = User("Minwoo", 20)
val minwoo = User("Minwoo"、age = 20、address = "Gangnam")
関数型プログラミング
listOf(1, 2, 3) // 1, 2, 3
.map { it * 2 } // 2, 4, 6
.filter { it > 2 } // 4, 6
.forEach { print(it) } // 4, 6 を出力
About the content
This content has been published here with the express permission of the author.