0)序
"Kotlinでスマートフォン・クロスプラットフォーム開発入門"、勝手に略して、"ことクロ"シリーズ その6。
今回は、コマンドラインでKotlinを適切に実行する環境を、先人の知恵を借り、Spring Boot込みで、実行時間数分で構築する。
(前提として、gitとJava(8)はインストール済とする。)
そもそも、kotlinはブラウザで即実行可能なので、あえてローカル環境を構築するならば、勉強になる付加機能がも欲しいところ。
1) (参考) 正統派のやり方
1-1 Groovyベースのビルドツールgradleを導入する
homebrewが入っているMac OSでは :
$ brew install gradle
chocolateyが入っているWindowsでは:
$ cinst gradle
1-2 Gradleで、java環境を初期化
gradle initコマンドを実行。
(typeオプションが定義されている言語、例えば、scalaでは、同様に--type scala-libraryで環境を導入できる。)
$ gradle init --type java-library
:wrapper
:init
BUILD SUCCESSFUL
Total time: 5.977 secs
フォルダ構成を確認。
$ tree
.
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
├── main
│ └── java
│ └── Library.java
└── test
└── java
└── LibraryTest.java
1-3 build.gradleを編集
Kotlinでは、gradle initコマンドのtypeオプションが定義されていないので、
ファイルbuild.gradleを編集し、、GradleにKotlin環境を用意してもらう。
例えば、ここの解説を参考に、現在のKotlinバージョンの導入を試していただきたい
...導入がうまくいったならば、以下のように、kotlinファイルを作成...(以下、略)
$ mkdir -p src/main/kotlin
$ touch src/main/kotlin/Main.kt
...正攻法は、直近の目的のためにKotlinを使う的にじっくり時間をかけて行うこととしよう。
2) (速攻) Kotlinのコマンドライン実行環境を導入。
2-1 背景
- Kotlinは、まだバージョン1.0に達していない。コンパイラ本体のみならず、周辺ライブラリ等も変化していく。そのため、build.gradleは結構頻繁に書き換える必要がある。
- 優等生なビルドツールGradleには、配布のための仕組みgradlewが完備。これにより、githubにちゃんとリリースされたgradlew付きリリースは素早く実行環境を構築できる。=>gradleとgradlewの関係が気になる人は、Gradle入門でtask wrapperを調べると良い。
- Gradleを活用した今風webフレームワークにJava製のSpringBootがある。SpringBootはMain関数で実行する形式。Javaと相性の良いKotlinならば...
2-2 Spring Bootと共に導入
幸い、Kotlinの開発元Jetbrains社がCreating a RESTful Web Service with Spring Bootという素敵なチュートリアルを用意してくれていて・・・、チュートリアルを再現しようと思ったが、今晩はさらに運が良かった。 学生さんが、素敵なプレゼンと共に、今時点のKotlin環境のbuild.gradleを公開してくれている。
https://github.com/jmatsu/SpringBootWithKotlinSample
学生さんの肩に乗らせてもらうと、以下で、webフレームワークSpringBoot付きのKotlin環境が導入できる。
(windows環境の場合)
git clone https://github.com/jmatsu/SpringBootWithKotlinSample
cd SpringBootWithKotlinSample
.\gradlew.bat build
(=> Mac等では$ ./gradlew build
などと適宜置き換え。)
そして、
java -jar build\libs\spring-boot-w-kotlin.jar
と実行して、ブラウザから、
http://localhost:8080/hello
とアクセスすると、ビルドされたデプロイ可能なスタンドアロンjarとしてSpringBootが実行されている。
その後は、SpringBootとGradleでHelloWorldあたりを参考に、SpringBootをkotlinコードでいじってみてほしい。
2-3) コマンドラインでKotlinを楽しむ
なぜ、これで環境導入が終わりなのか。その理由は、Application.ktの元ソースの
SpringApplication.run(Application::class.java, *args)
という、SpringBootブート部分を例えば、pringln文に置き換えてみると分かる。
package sample
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.context.annotation.ComponentScan
@ComponentScan
@EnableAutoConfiguration
public class Application {
companion object {
@JvmStatic
fun main(args: Array<String>): Unit {
println("コマンドラインのみっ!")
}
}
}
gradlew runしてみると、
$ .\gradlew.bat run
:compileKotlin
:compileJava
:processResources UP-TO-DATE
:classes
:findMainClass
:run
コマンドラインのみっ!
BUILD SUCCESSFUL
Total time: 10.257 secs
SpringBootのおまじないが少し気になるが、Kotlinの記述をコマンドラインで試すことができることが分かる。
もちろん、springbootのフル機能をコマンドライン上で試せるので、一石二鳥の学習環境と考えよう(手抜きだけど)。