プログラミング言語

Kotlin ことりん

JVMAndroid開発Java静的型付けnull安全JetBrains
Kotlinについて教えて

簡単に言うとこんな感じ!

KotlinはJavaの「より書きやすい後継版」みたいなプログラミング言語だよ!Androidアプリ開発でいまや主役になってて、同じことをJavaの半分くらいのコード量で書けるし、バグの温床になりやすい「null(値がない)」問題を言語レベルで防いでくれる、いいとこ取りな言語なんだ!


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とJavaの関係図 Java(従来) Android開発 サーバーサイド開発 JVM上で動作 膨大なライブラリ資産 冗長・nullエラーが起きやすい Kotlin(モダン) Android開発(推奨) サーバーサイド開発 JVM上で動作(共通) Javaライブラリをそのまま利用可 簡潔・null安全・マルチプラットフォーム 相互 運用可 課題・弱点 改善・強み

Kotlinが使われる主な領域

領域代表的なフレームワーク・用途
AndroidアプリAndroid SDK(Google公式推奨)
サーバーサイドSpring Boot、Ktor(JetBrains製)
WebフロントエンドKotlin/JS(JavaScriptにコンパイル)
iOS/マルチプラットフォームKotlin Multiplatform(KMP)
スクリプト.kts(Kotlin Script)ファイルで自動化処理

他言語との比較

比較項目KotlinJavaSwift(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の仕組み