SIOS Coati開発チームの清水です。
今回は、個人的でオススメしている Kotlin の紹介です。ちなみに製品内でKotlinは使われておりません。。。
Kotlin とは
Kotlinは、IDEのIntelliJやPyCharmなどを開発しているJetBrains社によって開発されたプログラミング言語です。
Kotlinで書かれたプログラムはJava仮想マシン上で動作するため、主にJavaとつながりが強い言語です。そのため、Scalaと共に語られることが多いです。現在はAndroidの公式サポート言語であるため、最近盛り上がっている言語のひとつです。
そんなKotlinですが、利用事例はいまのところ圧倒的にAndroidが多めです。ですが、Android専用というわけではないので、Javaのアプリケーション開発でも使うことができます。
Kotlin REPL
そんなKotlinですが、スクリプト言語だと大体おなじみの対話型で実行できるREPLが用意されています。
(最近になってJavaにも入った!)REPLの使い方として、数行で完結する処理をさくっと書いて実行したいときにとても便利です。
今回折角なので、Linuxコンソール上のKotlinでも同じことをできないか試してみました。最終的にAWSリソースをライブラリでさくっと操作できるようにするのを目標とします。
課題
いざ、Kotlin REPLでAWS APIにアクセスしようと思ったとき問題になるのはライブラリです。
Kotlinは、Javaのライブラリをそのまま利用できるため、AWS SDK for Javaを使うことになります。ただ、Kotlin REPLには、Pythonのpipのようなライブラリを手軽に管理する方法がありません。そのため、通常のアプリケーション同様にGradle・Mavenなどを使って、ライブラリの依存関係などを解決する必要がありそうです。
解決策
今回は「最小限のGradleを定義しておいてライブラリをjarに固める → Kotlin REPLのクラスパスに指定」する方法にしてみました。
今回はJava・Gradle・Kotlinを使用するので SDKMAN を事前にインストールしておきます。そのうえで、次のコマンドでインストールします。
1 2 3 |
sdk install java sdk install gradle sdk install kotlin |
次に作業用ディレクトリを用意し、Gradleをinitコマンドで設定します。ちなみにディレクトリ名はなんでもOKです。
1 2 3 |
mkdir repl cd repl gradle init |
最後に build.gradle を書き換えます。ここに、Kotlinの初期設定と依存ライブラリを指定します。
下側にある dependencies { compile “com.amazonaws:aws-java-sdk:1.11.+” } の中に、使用したいライブラリを追加していきます。ちなみにここで指定するライブラリの情報は、MVNREPOSITORYですぐに見つかります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
apply plugin: "kotlin" buildscript { repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:+" } } repositories { mavenCentral() } dependencies { compile "com.amazonaws:aws-java-sdk:1.11.+" } jar { from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } |
あとは実行するだけです
1 2 |
gradle jar kotlinc -classpath build/libs/repl.jar |
実際に、REPLからライブラリをimportできるか確認します。下はS3のバケット名一覧を取得するサンプルコードです。
1 2 3 |
import com.amazonaws.services.s3.AmazonS3ClientBuilder val client = AmazonS3ClientBuilder.standard().build() client.listBuckets().forEach { println(it.name) } |
unresolved referenceエラーが表示されなければ OK です。ちなみにスクリプトファイルも同じように起動できます。
1 |
kotlinc -cp build/libs/proj.jar main.kts |
まとめ
Kotlinはとても書きやすいです。ただREPLだと、いまのところ補完がきかないため、importがわりと大変です。
是非、この機会にKotlinをお試しください!