LoginSignup
8
8

More than 5 years have passed since last update.

[ことクロ6] コマンドラインでKotlin勉強 on Spring Boot

Last updated at Posted at 2015-10-21

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文に置き換えてみると分かる。

Applivation.kt
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のフル機能をコマンドライン上で試せるので、一石二鳥の学習環境と考えよう(手抜きだけど)。

8
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8