Kotlin ことりん
JVMAndroid開発Java静的型付けnull安全JetBrains
Kotlinについて教えて
Kotlinとは
Kotlin(コトリン) は、チェコのソフトウェア会社 JetBrains が開発し、2016年に正式リリースしたプログラミング言語です。名前はロシアのコトリン島に由来しています。JVM(Java仮想マシン) 上で動作するため、既存のJavaコードやライブラリとそのまま組み合わせて使えるのが大きな特徴です。
Googleが2017年にAndroidアプリ開発の 公式推奨言語 に採用したことで一気に注目を集め、現在では新規Androidアプリの大半がKotlinで書かれています。Javaに比べてコードが簡潔で読みやすく、null安全(NullSafety) という仕組みでアプリがクラッシュしやすい「ヌルポ(NullPointerException)」エラーをコンパイル時に防げる点が開発者に支持されています。
さらにAndroidにとどまらず、サーバーサイド開発・Webフロントエンド・iOS/デスクトップアプリへのマルチプラットフォーム展開(Kotlin Multiplatform)にも対応しており、守備範囲を広げ続けている注目の言語です。
Kotlinの主な特徴
| 特徴 | 内容 |
|---|---|
| null安全 | 変数に「nullが入る可能性があるか」を型で明示。コンパイル時にエラーを検出できる |
| 型推論 | 変数の型を毎回書かなくてよい。コードが短くなる |
| Java相互運用性 | 既存のJavaコードやライブラリをそのまま呼び出せる |
| 拡張関数 | 既存のクラスを継承せずにメソッドを追加できる |
| コルーチン | 非同期処理(時間のかかる処理)を直感的に書ける仕組み |
| データクラス | データを保持するだけのクラスを1行で定義できる |
JavaとKotlinの書き比べ
同じ「ユーザー名を表示する」処理でも、コード量の差が一目瞭然です。
// Java(従来)
public class User {
private String name;
public User(String name) { this.name = name; }
public String getName() { return this.name; }
}
User user = new User("Alice");
System.out.println(user.getName());
// Kotlin(モダン)
data class User(val name: String)
val user = User("Alice")
println(user.name)
null安全の仕組み
Kotlinでは変数の型に ? をつけるかどうかで「nullを許すか許さないか」を明示します。
var name: String = "Alice" // nullNG → 絶対に値がある
var name: String? = null // nullOK → 値がないかもしれない
// nullかもしれない変数を使うときは明示的な確認が必要
println(name?.length) // nullなら何もしない(安全呼び出し)
println(name!!.length) // nullなら例外を出す(開発者が責任を持つ宣言)
歴史と背景
- 2010年 — JetBrains社が社内プロジェクトとしてKotlinの開発を開始。Javaの冗長さに悩んでいた自社開発者の課題解決が目的
- 2011年 — JetConf(同社カンファレンス)でKotlinを初公開
- 2016年2月 — バージョン1.0として正式リリース。オープンソース(Apache 2.0ライセンス)で公開
- 2017年5月 — Googleが Google I/O 2017 でAndroid公式サポート言語に採用を発表。業界に衝撃
- 2019年5月 — Google I/O 2019でAndroid開発は Kotlin-first(Kotlin優先) と宣言。新しいAPIはまずKotlin向けに設計されると明示
- 2021年 — Kotlin Multiplatform Mobile (KMM) がアルファ版公開。iOS・Androidのコードを共有できる仕組みとして注目される
- 2023年 — Kotlin Multiplatformがベータ版に昇格。サーバーサイド(Spring BootなどのJavaフレームワークとも連携)でも採用が増加
JavaとKotlinの関係と位置づけ
KotlinはJavaを「置き換える」のではなく「共存・補完する」関係にあります。既存のJavaプロジェクトに少しずつKotlinを混ぜていくことも可能です。
Kotlinが使われる主な領域
| 領域 | 代表的なフレームワーク・用途 |
|---|---|
| Androidアプリ | Android SDK(Google公式推奨) |
| サーバーサイド | Spring Boot、Ktor(JetBrains製) |
| Webフロントエンド | Kotlin/JS(JavaScriptにコンパイル) |
| iOS/マルチプラットフォーム | Kotlin Multiplatform(KMP) |
| スクリプト | .kts(Kotlin Script)ファイルで自動化処理 |
他言語との比較
| 比較項目 | Kotlin | Java | Swift(iOS) |
|---|---|---|---|
| null安全 | ◎ 型レベルで保証 | △ 実行時に判明 | ◎ Optional型 |
| コード量 | ◎ 少ない | △ 多い | ◎ 少ない |
| 学習コスト | ○ Javaより低い | ○ 情報豊富 | ○ Apple向け |
| Android対応 | ◎ 公式推奨 | ○ 動作する | ✕ 非対応 |
| iOS対応 | △ KMPで一部対応 | ✕ 非対応 | ◎ 公式 |
関連用語
- Java — KotlinのベースになったJVM言語。膨大なライブラリ資産を持つ
- JVM(Java仮想マシン) — KotlinもJavaも動かす実行環境。OSの差を吸収する
- Android — Googleのスマートフォン向けOS。KotlinがKotlin-first言語として採用されている
- Swift — Apple公式のiOS/macOS向けプログラミング言語。Kotlinと並ぶモバイル開発の主役
- null安全 — 「値がない状態(null)」を型システムで管理し、実行時クラッシュを防ぐ仕組み
- 型推論 — コンパイラが変数の型を自動で判断してくれる機能。コードを短くする
- コルーチン — Kotlinの非同期処理の仕組み。スレッドより軽量に並行処理を書ける
- Kotlin Multiplatform — iOS・Android・Webで共通コードを使いまわせるKotlinの仕組み