Kotlinにおけるファイル表現と拡張子は、単に「.kt か .kts か」という違いにとどまらず、コードの実行方式・ビルドプロセス・GradleやIDEとの関係まで含めて理解しておくと、実務での設計判断が格段にしやすくなります。
本記事では、Kotlinの主な拡張子 → 役割 → 内部的な扱い → 実務での使い分けという流れで、体系的に解説します。
Kotlinで使われる主な拡張子一覧
まずは全体像を整理します。
| 拡張子 | 名称 | 主な用途 |
|---|---|---|
.kt | Kotlin Source File | 通常のKotlinソースコード |
.kts | Kotlin Script | スクリプト・設定ファイル |
.java | Java Source File | Kotlinと混在可能 |
.class | Java Bytecode | コンパイル後の成果物 |
.jar | Java Archive | 実行・配布単位 |
実務で日常的に扱うのは .kt と .kts がほとんどです。
.kt ファイル(Kotlin Source File)
.kt の役割
.kt は Kotlinの標準的なソースコードファイルです。
package com.example.app
class User(val name: String)
fun main() {
println("Hello Kotlin")
}
主な特徴
- コンパイルされて利用される
- パッケージ宣言が可能
- クラス・関数・インターフェース・enum などすべて定義可能
- JVM / Android / Multiplatform / Native / JS すべてで利用される
ファイル名とクラス名の関係
Kotlinでは ファイル名とクラス名が一致している必要はありません。
UserModels.kt
├─ class User
├─ class Admin
└─ fun createUser()
これはJavaと大きく異なる点です。
この仕様の利点
- ファイルを「責務単位」でまとめられる
- 1ファイル=1クラスという制約がない
- 小さな関連ロジックを自然に集約できる
Kotlinでは、ファイルそのものが1つの論理的な単位として扱われます。
トップレベル宣言(Kotlinらしさ)
.kt の大きな特徴のひとつが、トップレベル関数・プロパティです。
fun calculateTax(price: Int): Int {
return (price * 0.1).toInt()
}
- クラス定義は不要
- ユーティリティ関数や定数定義に向いている
JVM上での扱い
トップレベル宣言は、コンパイル時に ファイル名を基にしたクラスにまとめられます。
TaxUtils.kt → TaxUtilsKt.class
Javaからは次のように参照されます。
TaxUtilsKt.calculateTax(100);
※ @file:JvmName("TaxUtils") を使えば、生成されるクラス名を制御することも可能です。
.kts ファイル(Kotlin Script)
.kts とは何か?
.kts は Kotlin Script と呼ばれる形式で、Kotlinのスクリプト実行機構を利用して動作します。
println("Hello Script")
main()関数は不要- 上から順に記述されたコードが評価される
- 主に 設定ファイルや補助的な処理 に使われる
※ スクリプトであっても、内部的にはKotlinコンパイラが関与します。「完全なインタプリタ実行」ではありません。
主な利用シーン
Gradle Kotlin DSL
build.gradle.kts
settings.gradle.kts
plugins {
kotlin("jvm") version "1.9.0"
}
現在、GradleではGroovy DSL(.gradle)に代わり、Kotlin DSL(.gradle.kts)を採用するプロジェクトが増えています。
簡易スクリプト・自動化
kotlinc -script sample.kts
- ファイル操作
- API 呼び出し
- 簡単なデータ変換や検証
.kt と .kts の違い
| 項目 | .kt | .kts |
|---|---|---|
| 主用途 | アプリ本体 | 設定・補助処理 |
| 実行 | ビルド成果物として実行 | スクリプト実行 |
| main関数 | 必要 | 不要 |
| IDE補完 | 完全 | 制限あり |
| テスト | しやすい | 向かない |
アプリケーション本体は .kt、設定やスクリプト用途は .ktsという使い分けが基本です。
KotlinとJavaのファイル混在
Kotlinプロジェクトでは .kt と .java を同一プロジェクト内で共存させることができます。
src/main/java
├─ LegacyUtil.java
└─ NewLogic.kt
- KotlinからJavaを呼び出せる
- JavaからKotlinも参照できる
- GradleやIDEがビルド順序を自動的に解決
既存Javaコードを段階的にKotlinへ移行する際にも、この仕組みが活用されます。
コンパイル後に生成される拡張子
.class
Kotlin(JVM)は最終的に Javaバイトコード(.class) にコンパイルされます。
User.kt → User.class
Utils.kt → UtilsKt.class
.jar
kotlinc Main.kt -include-runtime -d app.jar
java -jar app.jar
- 実行・配布単位
- Kotlinランタイムを含めるかどうかを選択可能
実務での拡張子使い分け指針
アプリケーション開発(Web / Android / Backend)
src/
└─ main/
└─ kotlin/
├─ controller.kt
├─ service.kt
└─ model.kt
基本はすべて .kt
ビルド設定・補助ツール
build.gradle.kts
scripts/
└─ migrate.kts
.kts を活用
注意点・よくある誤解
.kts をアプリ本体に使う
- IDE補完やテストが弱い
- ビルド・運用に不向き
本体ロジックには非推奨。
ファイル名=クラス名という前提
- Kotlinでは不要
- 「責務単位ファイル」を意識した設計が推奨
まとめ
.kt
→ コンパイルされるKotlinの標準ソース.kts
→ スクリプト実行されるKotlin- Kotlinではファイル名とクラス名は一致不要
- トップレベル宣言により、柔軟な設計が可能
Kotlinの拡張子は「どのように実行・利用されるか」を表している。
これを理解しておくことで、プロジェクト構成・Gradle設計・保守性が一段レベルアップします。
以上、Kotlinのファイル表現の拡張子についてでした。
最後までお読みいただき、ありがとうございました。








