# Kotlin

分類：言語
公式：https://kotlinlang.org/

言語別の既定：§2-6（/s/2.md）
既存のJava資産との連携、複雑な業務ルール、大規模バッチ、Kafkaなどのストリーム処理で選ぶ。

## 選ぶ場面（§2-10）
- 既存のJava資産（社内基盤、外部の業務パッケージ）と密に連携する
- 複雑な業務ルールと厳密な状態管理：sealed classなどで状態を型で表現しやすく、トランザクションやバッチの基盤が成熟している
- 大規模バッチ：再実行・中断再開・分割実行の仕組みが揃っている
- ストリーム処理：Kafka周辺のエコシステムがJVM中心

## 既定として使う役割
- 非同期（§2-6）：Kotlinコルーチン

## 代替として使う条件
- CRUD中心のWebアプリ・管理画面（§2-9、既定はRails（画面の多い業務システムを最も速く作れる））：業務ルールが非常に複雑で、既存のJava資産と連携するとき
- モバイルアプリ（§2-9、既定はReact Native＋Expo）：端末機能を深く使うとき

## 採用の根拠（§22-2）
JVMの成熟したトランザクション・バッチ・ストリーム処理の基盤をそのまま使え、Javaより簡潔で安全に書ける。既存のJava資産と直接連携できる
懸念と回答：「重いのでは」→ 起動時間が問題になる用途（サーバーレス）以外では、常駐サーバーとして十分な性能が出る
