Kotlin + KtorでKotlinサーバサイドの戸を叩く
Kotlinサーバサイドの戸を叩きます.
この記事は、大阪工業大学 Advent Calendar 2019 の25日目の記事です。
大まかに
Ktorを使ってブラウザ上にカウンタを表示します. 対象はKotlinを知らない人, 所要時間は15分くらいを目安にしています.
環境構築
JDK
始めに, 好きなJDKを好きな方法で導入してください. AdoptOpenJDK辺りがお勧めです.
IntelliJ IDEA
次に, IntelliJ IDEAをインストールします. EditionにはCommunityとUltimateの2つがありますが, 今回の用途ではどちらでも構わないためCommunityを選択します.
またArch Linux*1のユーザであれば, jetbrains-toolboxの導入をお勧めしています.
Ktor Plugin
IDEAをインストールした後, IDEAへKtorのプラグインを導入します.
Ctrl + Alt + S
を押してIDEAの設定を開きPluginsの項目を選択, 上のタブからMarketplaceを選びktorと入力し, 出てきた項目のInstallをクリックします.
インストールが終わると再起動するか聞かれるので, それに従いIDEAを再起動します.
構築
プロジェクトの作成
Ktorを選択 > TemplatingからKotlin DSLを選択 > あとは流れに従う
プロジェクトが開いてからしばらく待ちます.
コードを書く
src/Application.kt
へ以下のように記述します.
package <パッケージ> import io.ktor.application.Application import io.ktor.application.call import io.ktor.html.respondHtml import io.ktor.routing.get import io.ktor.routing.routing import kotlinx.html.body import kotlinx.html.h2 fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args) @Suppress("unused") // Referenced in application.conf @kotlin.jvm.JvmOverloads fun Application.module(testing: Boolean = false) { var count = 0 routing { get("/") { call.respondHtml { body { h2 { +"Count: ${count++}" } } } } } }
実行
Application.kt
を開いた状態でCtrl + Shift + F10
で立ち上がります.
アクセスする
https://localhost:8080/ へアクセスするとカウンタが表示されていると思います.
雑感
- アノテーション地獄から抜け出せて嬉しい.
- SpringBoot以外のAltとして選ばれる程度にはもっと使われてほしい.
- これにArrow-ktとか使うとより幸せになれるけれど, そこまでやるならScala + SpringBoot + Catsで良いなと思ったりした.
- 作り始めのWIPですが, もっと規模の大きい例となるリポジトリは下にあります. もっとちゃんと雰囲気を掴みたい人はこれを読んで頂けると嬉しい.
*1:他のディストロは分からないけど恐らくおおよそにある