クラウドソリューション開発部の今野です!
「AndroidアプリってJavaで作れちゃうからJavaで作ろう」
「KotlinってAndroidアプリにしか使用できなさそう」
「 あー言語学習のハードル高そうなイメージ」
非常にもったいない!
というお話を今回はさせていただきたいと思います。
Kotlin、非常に便利な言語なんです。
一度書いたら病みつき間違いなしです。
今回はAndroidアプリ開発でKotlinを使った時の魅力についてお伝えしていきます!
Google推奨言語
KotlinはJetBrains社により2011年に公開されました。
Googleは2017年にKotlinをAndroid開発推奨言語に認定しています。
Android アプリだけでなく、iOSアプリ、Webアプリケーションの開発も可能な言語です。
セミコロン不要!
コードにセミコロンは不要でございます。
地味に便利なんです。
例えば、
Java
1 |
String str = "hello"; |
Kotlin
1 |
var str: String = "hello" |
セミコロンよさらば!
データクラスを作成するときに短いコードで書ける
まずはJavaのコードから。
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class User { private final String name; private final int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public boolean equals(Object o){ /* 略 */ } @Override public int hashCode(){ /* 略 */ } @Override public String toString(){ /* 略 */ } } |
このように、equals・hashCode・toStringのオーバーライドが必要になります。
続いてKotlinです。
1 |
data class User(val name: String, val age: Int) |
この一文だけでgetter・equals・hashCode・toString が自動生成できちゃいます。
Null時も安心
Kotlin は型システムに「Nullable 型」と「Non-null 型」を組み込み、コンパイル時にヌル参照を防止することができます。
Java
1 2 3 |
// Java: NPE の危険あり String s = possiblyNull(); int len = s.length(); // NPE の可能性 |
Kotlin
1 2 3 |
// Kotlin: コンパイルエラー/安全呼び出し val s: String? = possiblyNull() val len = s?.length ?: 0 // null の場合は 0 を返す |
このようにnull時のリスクを減らすことができます。
Swiftに書き方が似ている
拡張機能実装時のSwiftとも比較をしてみましょう。
Swift
1 2 3 4 5 6 7 8 9 |
let message = "Hello, Swift" // String と推論 var count = 0 // Int と推論 extension String { func isEmail() -> Bool { // 正規表現でチェック… return self.contains("@") } } |
Kotlin
1 2 3 4 5 6 7 |
val message = "Hello, Kotlin" // String と推論 var count = 0 // Int と推論 fun String.isEmail(): Boolean { // 正規表現でチェック… return contains("@") } |
型定義と拡張機能を紹介しましたが、
Swift も Kotlin も、変数宣言時に型をほとんど明示する必要がなく、右辺から型を推論します。
既存クラスにメソッドを「追加」できる仕組みも共通です。
iOSアプリ開発も可能!
先ほどの文を見て、勘の鋭い方は気づくかもしれません。
Androidアプリの開発言語なのに、iPhoneアプリも作れるの…?
作れるんです。
JetBrains社がリリースしているKotlin Multiplatformを使って作ることができます。
https://www.jetbrains.com/ja-jp/kotlin-multiplatform/
ただ、実質はSwift側で処理を行っていて、Kotlinのコードをブリッジする必要があるため、クロスプラットフォームのようなコード管理が必要になります。
Kotlinのみ扱う場合は便利かもしれないですが、
SwiftとKotlinそれぞれ書けるのならば、そちらで管理した方が後々の保守性が高そうに思います。
まとめ
いかがでしたでしょうか?
まだまだ知らないKotlinの世界、もっとあると思います。
Javaに比べてKotlinを扱う人は少ないと思いますが、一度書いたらJavaに戻れない言語と言われるほど快適な言語です。
ぜひ試しに書いてみてください!
弊社ではIoTに関連した、様々な案件にチャレンジすることができます。
ぜひ一緒にこれからの未来を作っていきませんか?
最後までご覧いただき、ありがとうございました!