概要
Gradle で Kotlin をビルドできるようにするまでのセットアップ作業を示したものです。普段は Kotlin を使っておらず、たまにテキストエディタでちょっとしたコードを書く場合を想定しています。
Kotlin の採用実績
2017年5月に Google I/0 2017 で Kotkin が Android の開発言語としてサポートされることが公表されました。Kotlin を採用している個別の企業の例として Ruby on Rails の作者が在籍する Basecamp をはじめ、Amazon Web Services、Pinterest、Netflix、Uber などが挙げられます。Kotlin で書かれたプロジェクトの例として Corda が挙げられます。Corda は分散型台帳プラットフォームで、金融機関が参加するコンソーシアムによって開発されています。
セットアップ
方針
プログラミング言語を導入する場合、特定のバージョンだけでよいのか、プロジェクトごとにバージョンを使いわける必要があるのか考える必要があります。今回は後者を基準にツールを選ぶことにしました。以前は前者の方針で macOS の homebrew を使ってきました。
jabba
Java のパッケージマネージャーとして jabba を使うことにしました。このツールは Go で開発されています。
curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh
インストールできる Java のバージョンのリストを表示させてみましょう。
jabba ls-remote
今回は 1.8.131 をインストールすることにしました。
jabba install 1.8.131
.profile に次のコードを追加しました。
jabba use 1.8
Java のバージョン番号を確認してみましょう。
java -version
SDKMAN!
Kotlin や Gradle の複数のバージョンを管理できるように SDKMAN! を導入することにしました。以前のコマンドツールの名前は gvm でしたが、Go Version Manager のコマンドツールと名前が重複していました。
curl -s "https://get.sdkman.io" | bash
.profile ファイルに次のコードを追加しました。
source "$HOME/.sdkman/bin/sdkman-init.sh"
Kotlin
sdk コマンドで Kotlin をインストールします。
sdk install kotlin
Kotlin のバージョンを確認してみましょう。
kotlin -version
Gradle
sdk コマンドで Gradle をインストールします。
sdk install gradle
プロジェクト
ターミナルで Hello Kotin を表示させるプログラムを書いてみましょう。開発元の JetBrains がサンプルコードのリポジトリを公開しています。
build.gragle
build.gradle を用意します。
buildscript {
ext.kotlin_version = '1.1.2-2'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
apply plugin: 'application'
mainClassName = 'demo.HelloKt'
defaultTasks 'run'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
buildscript {}
ブロックの代わりに plugins {}
ブロックを使って次のように書き換えることができます。
plugins {
id "org.jetbrains.kotlin.jvm" version "1.1.2-2"
}
apply plugin: 'kotlin'
apply plugin: 'application'
mainClassName = 'demo.HelloKt'
defaultTasks 'run'
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.2-2"
}
plugins {}
ブロックはトップレベルの宣言でなければならず、id
や version
に指定できるのは定数、リテラル、文字列です。
Hello.kt
src/main/kotlin/demo/Hello.kt
のファイルを用意します。
package demo
fun main(args: Array<String>) {
println("Hello Kotlin!")
}
実行
プログラムを実行してみましょう。
gradle
明示的にタスクを指定することもできます。
gradle run