競プロでKotlinを長く使っていたので、その知識を応用して何かやってみたくなった。KotlinといえばAndroid開発が有名だけど、サーバーサイドも盛り上がっているらしい。ということで、Kotlinでサーバーサイドの勉強をしてみる。
前にも似たようなことをこのブログでやっていたけど、消しちゃった。そのときはSpring Bootを使っていたけど、気分を変えて別のフレームワークを使ってみる。
というわけで今回はKotlinとMicronautを使って開発のまねごとをやってみる。
Micronautって何?
これがわからない。
公式サイトを読みましょう。
準備
まずIntelliJ IDEAを立ち上げる。新規プロジェクトを選び、Micronautを選ぶ。これはUltimate限定かな?
言語はKotlin、ビルドシステムはGradle、テストフレームワークはKotestを選んだ。言語は言うまでもない。GradleとMavenの違いが素人すぎてよくわからない。KotestはKotlinのためのテストフレームワークらしいので、Kotlin好きとしては触ってみたい。
これができたら次の画面へ進む。
たくさんあってわからない。試しに動かすだけなので、今回は何も選ばずに進む。
しばらく待つと (13分くらい)、準備が整った。試しに動かしてみる。
動いているっぽい。勿論まだ何も書いていないので動くものはない。なので作っていく。
なにか作る
HelloController.ktというファイルを作り、中身を次のようにする。
package com.example import io.micronaut.http.MediaType import io.micronaut.http.annotation.Controller import io.micronaut.http.annotation.Get import io.micronaut.http.annotation.Produces @Controller("/hello") class HelloController { @Get @Produces(MediaType.TEXT_PLAIN) fun index(): String { return "Hello World" } }
これでビルドして、localhost:8080/helloにアクセスすると、「Hello World」と表示される。いいね。
@Produces(MediaType.TEXT_PLAIN)について補足。何も指定がなければJSONになるらしい。今回は普通の文字列なので、TEXT_PLAINを指定する。
もうちょっと遊ぶ
TEXT_PLAINの代わりにTEXT_HTMLにしてみる。
package com.example import io.micronaut.http.MediaType import io.micronaut.http.annotation.Controller import io.micronaut.http.annotation.Get import io.micronaut.http.annotation.Produces @Controller("/hello") class HelloController { @Get @Produces(MediaType.TEXT_HTML) fun index(): String { return "<html>" + "<head>" + "<title>koboshi's homepage</title>" + "</head>" + "<body>" + "<h1>Hello World</h1>" + "</body" } }
流石にHTML直書きは頭が悪いので、もっと賢い方法がありそう。
テスト
参考文献ではJUnitを使っていたが、これをKotestに変換する方法が分からなかった。教えて~。
まとめ
KotlinとMicronautでちょっと動くものを作った。
参考文献
これを見て作った。
公式サイトには他にも色々ある。気が向けばこれからも勉強していきたい。