【2026年版】Kotlinの始め方 — IntelliJ IDEAセットアップからAndroid開発の第一歩まで完全ガイド
- IntelliJ IDEAのインストールとKotlinプロジェクト作成
- 基本文法(null安全・データクラス・拡張関数)
- JavaとKotlinの主な違いの把握
- Android開発でのKotlinの位置づけ
コマンド早見表
// val(不変)とvar(可変)
val name: String = "ひよこ" // 再代入不可
var count = 0 // 型推論、再代入可能
// null安全
val nullableName: String? = null // ?でnull許容
val length = nullableName?.length // セーフコール(nullならnull)
val len = nullableName?.length ?: 0 // エルビス演算子(nullなら0)
// データクラス(equals/hashCode/copy自動生成)
data class User(val name: String, val age: Int)
val user1 = User("ひよこ", 0)
val user2 = user1.copy(name = "ペンギン")
// 拡張関数
fun String.addExclamation() = "$this!"
println("Hello".addExclamation()) // Hello!
// コレクション操作
val numbers = listOf(1, 2, 3, 4, 5)
val evens = numbers.filter { it % 2 == 0 } // [2, 4]
val doubled = numbers.map { it * 2 } // [2, 4, 6, 8, 10]
// コルーチン(非同期処理)
import kotlinx.coroutines.*
fun main() = runBlocking {
launch {
delay(1000L)
println("World!")
}
println("Hello,")
}
よくある詰まりポイント
Q. Javaのライブラリ・フレームワークはKotlinから使えるの? KotlinはJavaと完全に相互運用できるよ。JavaのクラスをKotlinから呼び出せるし、逆にKotlinのコードをJavaから使うこともできる。既存のJavaプロジェクトに少しずつKotlinを導入していく、というやり方も一般的だよ。
Q. !! 演算子って何?使っていいの?
!! はnullableな値を強制的にnon-nullとして扱う演算子で、nullだったら即NullPointerExceptionが発生するよ。「絶対nullにならないと確信している場合」にだけ使うもので、基本的には ?. や ?: で安全に処理するのが望ましいんだ。!! を多用するとKotlinのnull安全の恩恵が薄れてしまうから注意してね。
Q. filter や map はパフォーマンス的に問題ない?
listOf() などの通常のコレクションでは、filter { }.map { } と連鎖すると中間リストが都度生成されるよ。大量データを処理する場合は asSequence() を先頭につけると遅延評価になって効率的だよ。numbers.asSequence().filter { it % 2 == 0 }.map { it * 2 }.toList() のように書くとOKだね。
環境構築はどうするの?難しそう…
インストールしてみた!まず何を試せばいい?
?: って何?Javaにはないよね?
それはエルビス演算子と呼ばれているよ。`nullableName?.length ?: 0` こう書くと、nullableNameがnullなら0を返す、という意味になる。`?.` はセーフコールで、nullなら処理をスキップしてnullを返す。この2つで安全にnull処理が書けるよ。
データクラスってどういうもの?
拡張関数ってよく聞くけど何ができるの?
既存クラスを継承せずに関数を追加できる機能だよ。例えば `fun String.addExclamation() = "$this!"` と書くと、`"Hello".addExclamation()` で `Hello!` が返るようになる。Stringクラスを改変しているわけじゃなくて、見た目上だけそう見える便利な仕組みなんだ。
コルーチンって難しそうだけど何をするもの?
非同期処理をシンプルに書ける仕組みだよ。JavaScriptのasync/awaitに似た感覚で、`suspend fun` と `launch` を使うと、スレッドより軽量に並行処理が書けるんだ。AndroidアプリでAPIを呼び出すときなど、UIをブロックしない処理を書くのに大活躍するよ。
結局どんな順番で学べばいいの?
まずKotlinの基礎文法(val/var、関数、クラス)→ null安全 → コレクション操作(filter/map)の順に進めるといいよ。その後はAndroidアプリ開発を目指すならJetpack Composeへ、サーバーサイドを目指すならSpring Boot + Kotlinへ進む感じだね。Kotlin公式のKoansというインタラクティブ練習問題もおすすめだよ。