Ktorを使う話

はじめに

この記事は、Prolab Advent Calendar 2017の10日目の記事として書かれています。

adventar.org

23時くらいから書きはじめたので、遅刻しました。ごめんなさい。

この記事には、Ktorを使ったプロジェクトの作成方法を書きました。ついでに、Ktorを使った時のテストの書き方も紹介します。 また、記事で作ったアプリのソースコードGithubに置いてあります。 github.com

Ktorとは

Kotlin製のWebフレームワークです。

github.com

最近記事とかも増えてきたので、よいですね。 ちなみに、PCK2017モバイル部門に出場した時に作った作品のバックエンドには、Ktorを使っています。(AndroidアプリもKotlinなので、100%Kotlin???)

Hello World

build.gradle
maven { url "https://dl.bintray.com/kotlin/kotlinx" }
maven { url "https://dl.bintray.com/kotlin/ktor" }

repositoriesに追加したあと、

compile "io.ktor:ktor-server-netty:0.9.0"

dependenciesに追加してください。

gist.github.com

Helloと返すエンドポイントを定義する

gist.github.com

application.conf

あとでテストを書きたいので、application.confをresourcesに追加します。 modulesに先ほどのエンドポイントを定義している拡張関数のパッケージと名前を設定します。 gist.github.com

動かす

メインクラスをio.ktor.server.netty.DevelopmentEngineに設定して起動します。localhost:8080を叩くとHelloという文字列が返されるようになりました。おめでとうございます。

~>curl localhost:8080
Hello

テストの書き方

順番が逆な気がしますが。

build.gradle

先ほど書いたbuild.gradleのdependencies

testCompile "junit:junit:4.12"
testCompile "io.ktor:ktor-server-test-host:$ktor_version"

を追加します。

テストクラス

先ほどのエンドポイントを叩いて、ステータスコードが200 OKであることと、Helloが返されていることをテストしています。 gist.github.com

お疲れ様でした。 f:id:gedorinku:20171210010214p:plain

まとめ

Webアプリを作りたい気持ちになったときに、まだ発展途上っぽいですがKtorを使ってみるのもいいと思います。PCKの時に使ってましたが、Ktorのバージョンをあげたらテストが半分くらい落ちるようになったりしてちょっと怖かったです。PCKの開発が始まったときのKtorのバージョンは0.3.3だったんですが、いつの間にか0.9.0とかになってバージョンアップが早いですね。

すばやく記事を書いたので、次の日の記事が投稿される前にこの記事を投稿できました。広義明日は1年生のfooくんの番です。