~/VibeHandbook
$39

アプリ / モバイル

kotlinlang.org

Kotlin

概要

Kotlin は、JetBrains による現代的で静的型付けの言語で、Java Virtual Machine 上で動作し、Java と完全に相互運用できます。Google は Android 開発の推奨言語に Kotlin を採用し、サーバーサイドのコード、マルチプラットフォームの共有ロジック、さらにはネイティブや JavaScript へのコンパイルにも使われています。簡潔で、安全で、実用的であることを目指しています ── 儀式的な手続きのない Java です。

強み

  • 型システムに組み込まれた null 安全により、ほとんどの NullPointerException クラッシュを排除。
  • 簡潔さ:データクラス、拡張関数、スマートキャストによりボイラープレートを劇的に削減。
  • シームレスな Java 相互運用 ── 任意の Java ライブラリを使え、ファイルごとに移行できる。
  • 読みやすい非同期・並行コードのためのファーストクラスのコルーチン。
  • Kotlin Multiplatform により、Android、iOS、バックエンドにわたってビジネスロジックを共有できる。

トレードオフ

  • 大規模プロジェクトでは、コンパイルが Java より遅くなることがある。
  • JVM はネイティブ言語に比べてランタイムと若干の起動オーバーヘッドを意味する。
  • Multiplatform と Kotlin/Native は成熟しつつあるが、JVM ターゲットほど実戦で鍛えられていない。
  • 一部の高度な機能(コルーチン、DSL)には学習曲線がある。

使いどころ

新しい Android アプリには Kotlin を選び、Java より安全で簡潔なコードが欲しい JVM バックエンドサービスでも検討しましょう。JVM エコシステムが適合する場面では強力なデフォルトです。

バイブコーディングとの相性

Kotlin は AI アシスタントとの相性が良好です。簡潔なイディオムは生成・レビューすべきコードが少ないことを意味し、null 安全はミスをコンパイル時に表面化させるからです。var より不変の val を優先すること、モデルにはデータクラスを使うこと、手動のスレッド管理ではなくコルーチンで suspend 関数を書くことをモデルに指示しましょう。Android をターゲットにする場合は、UI とロジックが一つの現代的な言語を共有できるよう、Kotlin と Jetpack Compose を組み合わせさせましょう。

data class User(val name: String, val active: Boolean = true)

fun activeNames(users: List<User>): List<String> =
    users.filter { it.active }.map { it.name }

fun main() {
    val users = listOf(User("Ada"), User("Lin", active = false))
    println(activeNames(users))
}