Kotlinスクリプト(KTS)の基本構文と書き方を徹底解説

Kotlinスクリプト(KTS)は、Kotlin言語の柔軟性と強力な機能を活かし、簡単にスクリプティングや設定ファイルの作成ができる便利なツールです。Kotlinの静的型付けや最新の言語機能をそのまま活用しつつ、柔軟にスクリプトとして実行できます。特にGradleビルド設定やタスク自動化、簡単なコード実行など、従来のJVM言語スクリプトよりも高い生産性を発揮します。

本記事では、Kotlinスクリプト(KTS)の基本的な構文、書き方、実行方法から、Gradleビルドでの活用法や外部ライブラリの導入、デバッグ手法までを網羅的に解説します。KTSを使いこなすことで、日々の開発タスクがさらに効率化し、より柔軟でメンテナブルなコードが書けるようになります。

目次

Kotlinスクリプト(KTS)とは何か


Kotlinスクリプト(KTS)は、Kotlin言語を用いたスクリプトファイルで、ファイルの拡張子は.ktsとなります。通常のKotlinプログラムと異なり、スクリプトとして手軽に実行できるのが特徴です。

Kotlinスクリプトは主に次の用途で利用されます:

  • 簡単なタスク自動化:シェルスクリプトやPythonスクリプトの代わりにKotlinで記述することができます。
  • Gradleビルド設定:GradleのビルドファイルをGroovyの代わりにKotlinで書けるため、型安全かつ保守性が向上します。
  • 設定ファイル:Kotlinの型安全性を活かし、複雑な設定ファイルをシンプルかつ安全に記述できます。

通常のKotlinとの違い


通常のKotlinファイル(拡張子.kt)は、クラスや関数を含んだアプリケーションのコードを書くためのものです。一方、Kotlinスクリプト(.kts)は、トップレベルのステートメントを直接記述でき、実行するためのエントリーポイント(main関数)を必要としません。

例:
通常のKotlinファイル(hello.kt

fun main() {
    println("Hello, World!")
}

Kotlinスクリプト(hello.kts

println("Hello, World!")

Kotlinスクリプトは、簡易的なタスクや単発の処理に適した形式です。

Kotlinスクリプトの用途


Kotlinスクリプト(KTS)は、柔軟性と簡潔さを備え、さまざまなシーンで活用できます。ここでは、代表的な用途について解説します。

1. タスク自動化


日常の開発業務で繰り返し行うタスク(ファイル操作、データ処理、ログ解析など)をKotlinスクリプトで自動化できます。型安全でシンプルなコードにより、バグの少ないスクリプトが書けます。

例:ファイルのリネームスクリプト

val files = java.io.File(".").listFiles { _, name -> name.endsWith(".txt") }
files?.forEach { it.renameTo(java.io.File(it.nameWithoutExtension + "_renamed.txt")) }

2. Gradleビルド設定


KotlinスクリプトはGradleビルドファイルの記述にも利用されます。従来のGroovyベースのビルド設定よりも、型安全コード補完が効くため、エラーを事前に防げます。

例:Gradleビルドファイル(build.gradle.kts

plugins {
    kotlin("jvm") version "1.9.0"
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib")
}

3. 設定ファイルの代替


JSONやYAMLなどの代わりに、設定ファイルをKotlinスクリプトで記述できます。型安全性を保ちながら、複雑な設定もわかりやすく管理できます。

例:KTSによる設定ファイル

data class Config(val host: String, val port: Int)

val config = Config(host = "localhost", port = 8080)
println(config)

4. 簡易的なデータ処理や分析


Kotlinスクリプトを使用して、CSVファイルの読み込みやデータ分析処理を手軽に行えます。Javaの豊富なライブラリと互換性があるため、データ処理が効率的です。

5. APIやライブラリの試験実行


Kotlinスクリプトは、ライブラリやAPIを試すための簡易的な実行環境として利用できます。コードを書いて即実行できるため、動作確認が素早く行えます。


Kotlinスクリプトは、これらの用途で手軽に導入できるため、開発の効率向上に役立ちます。

Kotlinスクリプトの基本構文


Kotlinスクリプト(KTS)は、シンプルな構文で書けるため、手軽にスクリプティングが可能です。ここでは、Kotlinスクリプトの基本的な書き方を解説します。

トップレベルのステートメント


Kotlinスクリプトでは、トップレベルに直接コードを書くことができます。main関数の定義は不要です。

例:基本的なKotlinスクリプト

println("Hello, Kotlin Script!")

変数の宣言


変数はval(変更不可)またはvar(変更可)を使用して宣言します。

例:変数宣言

val name = "Kotlin"
var version = 1.9
println("Language: $name, Version: $version")

関数の定義


スクリプト内で関数を定義し、自由に呼び出せます。

例:関数定義

fun greet(name: String) {
    println("Hello, $name!")
}

greet("World")

条件分岐


if文やwhen式を使用して条件分岐が可能です。

例:条件分岐

val score = 85

if (score >= 90) {
    println("Excellent")
} else if (score >= 70) {
    println("Good")
} else {
    println("Needs Improvement")
}

ループ処理


forwhileを使ってループ処理を行えます。

例:forループ

for (i in 1..5) {
    println("Iteration: $i")
}

外部ライブラリのインポート


外部ライブラリをインポートして利用することもできます。

例:外部ライブラリの使用

import java.time.LocalDateTime

println("Current Time: ${LocalDateTime.now()}")

ファイルの実行


Kotlinスクリプトは、ターミナルやIDEを通じて簡単に実行できます。

実行例(コマンドライン)

kotlinc -script example.kts

Kotlinスクリプトの基本構文を理解することで、タスクの自動化や簡易プログラム作成を効率よく行うことができます。

Kotlinスクリプトの実行方法


Kotlinスクリプト(KTS)は、簡単に実行できるのが特徴です。ここでは、KTSファイルを実行するためのいくつかの方法について解説します。

1. コマンドラインから実行する


Kotlinスクリプトは、コマンドラインからkotlincまたはkotlinコマンドを使って実行できます。

手順

  1. KTSファイルの作成
    hello.ktsという名前で以下のスクリプトを作成します。
   println("Hello, Kotlin Script!")
  1. コマンドラインで実行
    以下のコマンドを実行してスクリプトを実行します。
   kotlinc -script hello.kts

または、kotlinコマンドが使える場合は以下のコマンドでも実行可能です。

   kotlin hello.kts

2. IntelliJ IDEAで実行する


IntelliJ IDEAを使えば、KotlinスクリプトをIDE内で簡単に作成・実行できます。

手順

  1. 新規KTSファイルの作成
  • File → New → File から、拡張子が.ktsのファイル(例:script.kts)を作成します。
  1. コードを書く
   println("Hello from IntelliJ!")
  1. 実行
    ファイル内にある「▶」ボタンをクリックしてスクリプトを実行します。

3. GradleでKotlinスクリプトを実行する


GradleタスクとしてKotlinスクリプトを実行することもできます。

手順

  1. Gradleタスク定義
    build.gradle.ktsに以下のタスクを追加します。
   tasks.register("runScript") {
       doLast {
           println("Running Kotlin Script via Gradle!")
       }
   }
  1. タスクの実行
    ターミナルで以下のコマンドを実行します。
   ./gradlew runScript

4. Kotlinスクリプトインタープリタを使う


KotlinのREPL(Read-Eval-Print Loop)を使用して、インタラクティブにスクリプトを実行できます。

手順

  1. ターミナルで以下のコマンドを実行します。
   kotlinc
  1. REPL内でKotlinコードを入力して実行します。
   println("Hello from REPL!")

5. 外部ライブラリを含むスクリプトの実行


外部ライブラリを使う場合、スクリプトに依存関係を追加することができます。

例:依存関係を追加したKTSファイル

@file:DependsOn("com.google.guava:guava:31.1-jre")
import com.google.common.collect.ImmutableList

val list = ImmutableList.of("A", "B", "C")
println(list)

実行方法
kotlinコマンドで以下のように実行します。

kotlin -script script.kts

Kotlinスクリプトの実行方法を習得すれば、さまざまなタスクを効率的に自動化し、柔軟な開発が可能になります。

GradleビルドスクリプトとしてのKTS


Kotlinスクリプト(KTS)はGradleビルドシステムでビルド設定を書く際にも利用されます。従来のGroovyベースのビルドスクリプトと比べて、型安全性コード補完の利便性が向上します。ここでは、KotlinスクリプトをGradleビルドスクリプトとして使用する方法を解説します。

GradleビルドファイルのKTS化


GradleビルドスクリプトをKotlinで記述するには、ファイルの拡張子を.gradle.ktsにします。

例:build.gradle.kts

plugins {
    kotlin("jvm") version "1.9.0"
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib")
    testImplementation("junit:junit:4.13.2")
}

基本構文の違い


GroovyベースのGradleビルドスクリプトとKotlinベースのKTSの違いを見てみましょう。

Groovy版:build.gradle

plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.9.0'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.jetbrains.kotlin:kotlin-stdlib'
    testImplementation 'junit:junit:4.13.2'
}

Kotlin版:build.gradle.kts

plugins {
    kotlin("jvm") version "1.9.0"
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib")
    testImplementation("junit:junit:4.13.2")
}

プロジェクトの設定ファイル


Kotlinスクリプトを使う場合、Gradleの設定ファイルsettings.gradle.ktsもKotlinで書くことができます。

例:settings.gradle.kts

rootProject.name = "my-kotlin-project"

タスクの定義


GradleタスクもKotlinスクリプトで定義できます。

例:カスタムタスクの定義

tasks.register("hello") {
    doLast {
        println("Hello, Gradle with Kotlin!")
    }
}

タスクを実行するには、以下のコマンドを使います。

./gradlew hello

型安全なビルド設定の利点

  • 型安全性:記述ミスや不正な型の利用がコンパイル時に検出されます。
  • IDEサポート:IntelliJ IDEAなどのIDEでのコード補完やリファクタリングが容易です。
  • 保守性:コードが明示的であるため、長期的な保守がしやすくなります。

依存関係の管理


Kotlinスクリプトでは、依存関係も型安全に記述できます。

例:依存関係の追加

dependencies {
    implementation("com.squareup.retrofit2:retrofit:2.9.0")
}

ビルドスクリプトの適用


複数のサブプロジェクトがある場合、共通のビルド設定をbuildSrcや外部ファイルに分けて管理することができます。


Kotlinスクリプト(KTS)をGradleビルドファイルとして活用することで、型安全でエラーの少ないビルド設定が可能になります。

Kotlinスクリプトで外部ライブラリを利用する方法


Kotlinスクリプト(KTS)では、外部ライブラリを簡単に導入して活用できます。Kotlinの強力なエコシステムを活かし、JavaやKotlinの豊富なライブラリをスクリプトに組み込むことで、さまざまな処理を効率化できます。

外部ライブラリの依存関係を追加する


Kotlinスクリプトでは、@file:DependsOnアノテーションを使用して外部ライブラリを追加します。Maven Central RepositoryやJitPackなどのリポジトリからライブラリを取得できます。

基本構文

@file:DependsOn("グループID:アーティファクトID:バージョン")

外部ライブラリの使用例

例:Apache Commons Langを使うスクリプト
Apache Commons Langライブラリを使用して、文字列の処理を行う例です。

@file:DependsOn("org.apache.commons:commons-lang3:3.12.0")
import org.apache.commons.lang3.StringUtils

val input = "  Hello, Kotlin Script!  "
val trimmed = StringUtils.trim(input)

println("Original: '$input'")
println("Trimmed: '$trimmed'")

複数の依存関係を追加する


複数のライブラリを使用する場合は、複数の@file:DependsOnアノテーションを追加します。

例:複数のライブラリを追加

@file:DependsOn("com.google.guava:guava:31.1-jre")
@file:DependsOn("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1")

import com.google.common.collect.ImmutableList
import kotlinx.coroutines.*

val list = ImmutableList.of("A", "B", "C")
println("List: $list")

runBlocking {
    launch {
        println("Hello from coroutine!")
    }
}

リポジトリの指定


デフォルトではMaven Central Repositoryが使用されますが、他のリポジトリを使用する場合は、@file:Repositoryアノテーションで指定します。

例:JitPackリポジトリを使用

@file:Repository("https://jitpack.io")
@file:DependsOn("com.github.kittinunf.fuel:fuel:2.3.1")

import com.github.kittinunf.fuel.Fuel

Fuel.get("https://httpbin.org/get").response { _, _, result ->
    println(result)
}

依存関係のキャッシュについて


一度ダウンロードされたライブラリはローカルキャッシュに保存され、次回の実行時に再ダウンロードする必要はありません。

注意点

  • インターネット接続が必要です。依存関係のダウンロードにはオンライン環境が必要です。
  • ライブラリのバージョン指定は正確に行いましょう。間違ったバージョンを指定するとエラーが発生することがあります。

外部ライブラリをKotlinスクリプトで利用することで、シンプルなスクリプトでも高度な処理が可能になります。効率的な開発のために、必要なライブラリを柔軟に活用しましょう。

Kotlinスクリプトのデバッグ方法


Kotlinスクリプト(KTS)を効率的にデバッグする方法を解説します。デバッグ手法を活用することで、エラーの早期発見や問題解決が容易になります。

1. 標準出力を活用する


シンプルなデバッグ方法として、printlnを使ったログ出力があります。処理の途中経過や変数の値を確認する際に便利です。

例:printlnを使ったデバッグ

val numbers = listOf(1, 2, 3, 4, 5)

numbers.forEach {
    println("Current number: $it")
}

2. スタックトレースでエラーを確認する


エラーが発生した場合、Kotlinスクリプトはスタックトレースを表示します。エラーの原因となった行やメッセージを確認することで、問題の特定が可能です。

例:エラーの確認

val list = listOf(1, 2, 3)
println(list[5])  // IndexOutOfBoundsExceptionが発生

出力例

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 5 out of bounds for length 3

3. IntelliJ IDEAを使ったデバッグ


IntelliJ IDEAはKotlinスクリプトの強力なデバッグ機能を提供しています。

手順

  1. ブレークポイントの設定
    デバッグしたい行にブレークポイント(赤い点)を設定します。
  2. デバッグ実行
    ファイル内の「🐞(デバッグアイコン)」をクリックして、デバッグモードで実行します。
  3. 変数の確認
    変数の値や実行ステップを確認しながらデバッグを進めます。

4. ログ出力の強化


Kotlinスクリプトでロギングライブラリを導入して、詳細なログを出力できます。

例:java.util.loggingを使ったロギング

import java.util.logging.Logger

val logger = Logger.getLogger("KotlinScriptLogger")

logger.info("This is an info message")
logger.warning("This is a warning message")

5. エラー処理と例外のキャッチ


エラーが発生しそうな箇所にはtry-catchブロックを用いることで、例外を適切に処理できます。

例:try-catchによるエラーハンドリング

try {
    val result = 10 / 0
    println("Result: $result")
} catch (e: ArithmeticException) {
    println("Error: Division by zero is not allowed.")
}

6. REPL(Read-Eval-Print Loop)の活用


Kotlin REPLを使えば、スクリプトを1行ずつ実行し、動作を確認しながらデバッグできます。

REPLの起動方法

kotlinc

REPL内でコードを入力して結果を即座に確認できます。

7. スクリプト引数の確認


スクリプトに引数を渡すことで、柔軟なデバッグが可能です。

例:引数付きスクリプト

println("Arguments: ${args.joinToString()}")

実行方法

kotlinc -script script.kts -- arg1 arg2

Kotlinスクリプトのデバッグ手法を駆使することで、問題解決が迅速に行えます。適切なデバッグツールと手法を組み合わせて、効率的にスクリプトを開発しましょう。

Kotlinスクリプトの応用例


Kotlinスクリプト(KTS)は、さまざまなシーンでの自動化やタスク処理に役立ちます。ここでは、実際にKotlinスクリプトを活用できるいくつかの応用例を紹介します。

1. ファイル処理の自動化


Kotlinスクリプトを使って、大量のファイル処理を効率的に自動化できます。

例:指定したディレクトリ内のファイル名を変更するスクリプト

import java.io.File

val directory = File("path/to/directory")
directory.listFiles { file -> file.isFile }?.forEach {
    it.renameTo(File(it.parent, "renamed_${it.name}"))
    println("Renamed: ${it.name}")
}

2. REST APIの呼び出し


KotlinスクリプトでREST APIを呼び出し、データを取得・処理することができます。

例:Fuelライブラリを使ったAPIリクエスト

@file:DependsOn("com.github.kittinunf.fuel:fuel:2.3.1")

import com.github.kittinunf.fuel.Fuel

Fuel.get("https://httpbin.org/get").responseString { _, _, result ->
    result.fold(
        success = { data -> println("Response: $data") },
        failure = { error -> println("Error: ${error.message}") }
    )
}

3. データベース操作


Kotlinスクリプトを使ってデータベースへの接続やクエリの実行が可能です。

例:SQLiteデータベースへの接続とクエリ実行

@file:DependsOn("org.xerial:sqlite-jdbc:3.36.0.3")

import java.sql.DriverManager

val connection = DriverManager.getConnection("jdbc:sqlite:sample.db")
val statement = connection.createStatement()
statement.executeUpdate("CREATE TABLE IF NOT EXISTS users (id INTEGER, name TEXT)")
statement.executeUpdate("INSERT INTO users (id, name) VALUES (1, 'Alice')")
val resultSet = statement.executeQuery("SELECT * FROM users")

while (resultSet.next()) {
    println("ID: ${resultSet.getInt("id")}, Name: ${resultSet.getString("name")}")
}

connection.close()

4. Gradleタスクのカスタマイズ


Kotlinスクリプトを使ってGradleのカスタムタスクを作成し、ビルドプロセスを効率化できます。

例:Gradleタスクでのファイル削除

tasks.register("cleanGeneratedFiles") {
    doLast {
        file("build/generated").deleteRecursively()
        println("Generated files deleted.")
    }
}

5. スプレッドシートの操作


KotlinスクリプトでApache POIライブラリを使い、Excelファイルを操作できます。

例:Excelファイルにデータを書き込む

@file:DependsOn("org.apache.poi:poi-ooxml:5.2.3")

import org.apache.poi.xssf.usermodel.XSSFWorkbook
import java.io.FileOutputStream

val workbook = XSSFWorkbook()
val sheet = workbook.createSheet("Sheet1")
val row = sheet.createRow(0)
row.createCell(0).setCellValue("Hello, Kotlin Script!")

FileOutputStream("example.xlsx").use { workbook.write(it) }
workbook.close()
println("Excel file created.")

6. テキストデータの解析


ログファイルやCSVデータを解析するスクリプトを作成できます。

例:ログファイルからエラーメッセージを抽出

val logFile = File("server.log")
logFile.forEachLine { line ->
    if ("ERROR" in line) println(line)
}

これらの応用例を参考にすることで、Kotlinスクリプトをさまざまな場面で活用できます。タスクの自動化やデータ処理を効率的に行い、開発の生産性を向上させましょう。

まとめ


本記事では、Kotlinスクリプト(KTS)の基本的な構文から応用例まで幅広く解説しました。KTSは、Kotlin言語の利便性と柔軟性をそのまま活かし、簡単なスクリプティングからGradleビルド設定、自動化タスク、外部ライブラリの利用まで、さまざまな用途に活用できます。

Kotlinスクリプトを活用することで、型安全で保守性の高いコードを効率的に書くことができ、開発業務の効率化が図れます。デバッグ方法や応用例も参考にして、日々の開発タスクをさらにスムーズに進めましょう。

コメント

コメントする

目次