Kotlinは、JetBrainsが開発した静的型付けプログラミング言語です。
Googleは、Androidアプリ開発でKotlinを公式にサポートしており、現在はAndroid開発の主要言語として広く使われています。
またKotlinは、Javaと高い相互運用性を持ち、Javaのライブラリをそのまま利用できる点も特徴です。
Kotlinの文法は次の要素を理解すると全体像がつかめます。
- 変数と定数
- データ型
- 関数
- 条件分岐
- ループ
- クラスとオブジェクト
- null安全
- コレクション
- ラムダ式
- 拡張関数
それぞれ詳しく説明します。
変数と定数
Kotlinでは変数宣言に var と val を使います。
var(再代入可能な変数)
var name = "Taro"
name = "Jiro"
var は値を変更できます。
val(再代入できない変数)
val age = 20
val は再代入できません。
ただし、参照先のオブジェクトがミュータブルな場合は中身の変更は可能です。
val list = mutableListOf(1, 2)
list.add(3) // これは可能
つまり val は「再代入できない参照」を意味します。
型指定
Kotlinには型推論があるため、多くの場合型を書かなくてもよいです。
val name = "Taro"
val age = 20
型を明示する場合は次のように書きます。
val name: String = "Taro"
val age: Int = 20
データ型
Kotlinの基本的な型は次の通りです。
| 型 | 説明 |
|---|---|
| Int | 整数 |
| Long | 長整数 |
| Double | 倍精度浮動小数 |
| Float | 単精度浮動小数 |
| Boolean | 真偽値 |
| Char | 文字 |
| String | 文字列 |
例
val number: Int = 10
val pi: Double = 3.14
val isActive: Boolean = true
文字列テンプレート
Kotlinでは文字列の中に変数や式を埋め込めます。
val name = "Taro"
println("Hello $name")
式も書けます。
val a = 10
val b = 20
println("合計は ${a + b}")
関数
関数は fun キーワードで定義します。
基本形
fun greet() {
println("Hello")
}
引数付き
fun greet(name: String) {
println("Hello $name")
}
戻り値あり
fun add(a: Int, b: Int): Int {
return a + b
}
式形式の関数
1行の場合は次のように書けます。
fun add(a: Int, b: Int) = a + b
条件分岐
Kotlinでは ifが式として使える点が特徴です。
基本
val age = 20
if (age >= 20) {
println("成人")
} else {
println("未成年")
}
値を返すif
val result = if (age >= 20) "成人" else "未成年"
when式
when は条件分岐を行う構文で、Javaの switch より柔軟です。
val num = 2
when (num) {
1 -> println("one")
2 -> println("two")
else -> println("other")
}
範囲条件も書けます。
when (num) {
in 1..10 -> println("1〜10の範囲")
}
ループ
for
Kotlinの for は範囲やコレクションを順に処理します。
for (i in 1..5) {
println(i)
}
downTo
for (i in 5 downTo 1) {
println(i)
}
step
for (i in 1..10 step 2) {
println(i)
}
while
var i = 0
while (i < 5) {
println(i)
i++
}
クラス
Kotlinのクラス定義は非常に簡潔です。
基本
class Person {
var name = ""
var age = 0
}
主コンストラクタ
class Person(val name: String, val age: Int)
この書き方では
- 主コンストラクタ
- プロパティ
が同時に定義されます。
インスタンス生成
val person = Person("Taro", 20)
null安全
Kotlinの大きな特徴が null安全(Null Safety)です。
通常の型は null を許可しません。
var name: String = "Taro"
nullable型
nullを許可する場合は ? を付けます。
var name: String? = null
Safe Call
println(name?.length)
nullでない場合のみ実行されます。
Elvis演算子
val length = name?.length ?: 0
左がnullなら右側が使われます。
コレクション
List
val list = listOf("A", "B", "C")
MutableList
val list = mutableListOf("A", "B")
list.add("C")
Map
val map = mapOf(
"apple" to 100,
"banana" to 200
)
ラムダ式
Kotlinでは関数を値として扱えます。
val add = { a: Int, b: Int -> a + b }
println(add(3,5))
コレクション処理
val numbers = listOf(1,2,3,4)
numbers.forEach {
println(it)
}
it はラムダの引数です。
拡張関数
Kotlinでは既存クラスに対して新しい関数を追加できます。
fun String.hello() {
println("Hello $this")
}
"Shin".hello()
これは 拡張関数 と呼ばれます。
Kotlinの特徴まとめ
Kotlinには次の特徴があります。
- 簡潔で読みやすい文法
- 強力な型推論
- null安全
- Javaとの高い相互運用性
- 関数型プログラミングのサポート
- Android開発で広く採用
Kotlinを学ぶときのおすすめ順序
効率的な学習順は次の通りです。
- 基本文法
- null安全
- クラス
- コレクション
- ラムダ式
- Android開発
以上、Kotlinの文法についてでした。
最後までお読みいただき、ありがとうございました。










