【2026年版】Kotlinの始め方 — IntelliJ IDEAセットアップからAndroid開発の第一歩まで完全ガイド


Kotlinのnull安全 — コンパイル時にNPEを防ぐ Java String name = null; name.length(); // ← 実行時エラー NullPointerException 実行時にクラッシュ コンパイルは通る → 実行して初めて発覚 Kotlin val name: String? = null name?.length // セーフコール name?.length ?: 0 // エルビス コンパイルエラー コード書き中に発覚 型システムがnullを管理 移行 ランタイムエラー コンパイルタイム安全
Kotlinのnull安全 — ? 演算子と ?: エルビス演算子でNPEを事前に防ぐ
🎚 難易度 ★☆☆ 初心者向け
⏱ 学習時間の目安 読むだけ10分、環境構築込み30〜60分
📚 前提知識 プログラミングの基礎知識(Java経験があると理解が早い)
✅ このガイドで学べること
  • 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. filtermap はパフォーマンス的に問題ない? listOf() などの通常のコレクションでは、filter { }.map { } と連鎖すると中間リストが都度生成されるよ。大量データを処理する場合は asSequence() を先頭につけると遅延評価になって効率的だよ。numbers.asSequence().filter { it % 2 == 0 }.map { it * 2 }.toList() のように書くとOKだね。

ひよこ ひよこ

KotlinってJavaと何が違うの?名前は聞いたことあるんだけど…

ペンギン先生 ペンギン先生

KotlinJavaと同じJVMで動く言語だよ。Javaのコードと一緒に使えるし、Javaより短くスッキリ書けるように設計されているんだ。2011年にJetBrainsが作って、2017年にGoogleAndroid公式言語として採用したよ。

ひよこ ひよこ

AndroidといえばJavaって思ってた!じゃあ今のAndroid開発はKotlinがメインなの?

ペンギン先生 ペンギン先生

そうだよ。Googleは今やAndroid開発でKotlinを推奨していて、新しいサンプルコードもほぼKotlinで書かれているんだ。Javaも引き続き使えるけど、新規プロジェクトではKotlinが標準になっているね。

ひよこ ひよこ

環境構築はどうするの?難しそう…

ペンギン先生 ペンギン先生

Kotlin開発には IntelliJ IDEA が一番おすすめだよ。JetBrainsが作ったIDEで、Kotlinも同じ会社製だから相性抜群。Community版(無料)を公式サイトからダウンロードして、JDKも一緒にインストールすればOKだよ。

ひよこ ひよこ

インストールしてみた!まず何を試せばいい?

ペンギン先生 ペンギン先生

まずはオンラインで試せる Kotlin Playground(play.kotlinlang.org)がおすすめだよ。インストールなしでブラウザからKotlinを試せる。`fun main() { println("Hello, Kotlin!") }` これだけで動くよ。ぜひ試してみて!

ひよこ ひよこ

JavaだとNullPointerExceptionってよく聞くけど、Kotlinでは違うの?

ペンギン先生 ペンギン先生

Kotlinはnull安全が言語レベルで組み込まれているよ。変数の後ろに `?` をつけないとnullを入れられない。`val name: String? = null` とすれば nullable、`val name: String = "ひよこ"` はnull不可。コンパイル時にチェックされるからNPEが激減するんだ。

ひよこ ひよこ

?: って何?Javaにはないよね?

ペンギン先生 ペンギン先生

それはエルビス演算子と呼ばれているよ。`nullableName?.length ?: 0` こう書くと、nullableNameがnullなら0を返す、という意味になる。`?.` はセーフコールで、nullなら処理をスキップしてnullを返す。この2つで安全にnull処理が書けるよ。

ひよこ ひよこ

データクラスってどういうもの?

ペンギン先生 ペンギン先生

データクラスは `data class User(val name: String, val age: Int)` と書くだけで、equals・hashCode・toString・copyメソッドが自動生成される仕組みだよ。Javaだと同じことをするのに何十行も書く必要があったのが、1行で済むんだ。

ひよこ ひよこ

拡張関数ってよく聞くけど何ができるの?

ペンギン先生 ペンギン先生

既存クラスを継承せずに関数を追加できる機能だよ。例えば `fun String.addExclamation() = "$this!"` と書くと、`"Hello".addExclamation()` で `Hello!` が返るようになる。Stringクラスを改変しているわけじゃなくて、見た目上だけそう見える便利な仕組みなんだ。

ひよこ ひよこ

コルーチンって難しそうだけど何をするもの?

ペンギン先生 ペンギン先生

非同期処理をシンプルに書ける仕組みだよ。JavaScriptasync/awaitに似た感覚で、`suspend fun` と `launch` を使うと、スレッドより軽量に並行処理が書けるんだ。AndroidアプリでAPIを呼び出すときなど、UIをブロックしない処理を書くのに大活躍するよ。

ひよこ ひよこ

結局どんな順番で学べばいいの?

ペンギン先生 ペンギン先生

まずKotlinの基礎文法(val/var、関数、クラス)→ null安全 → コレクション操作(filter/map)の順に進めるといいよ。その後はAndroidアプリ開発を目指すならJetpack Composeへ、サーバーサイドを目指すならSpring Boot + Kotlinへ進む感じだね。Kotlin公式のKoansというインタラクティブ練習問題もおすすめだよ。

次に学ぶなら