kdnakt blog

hello there.

会社でKotlin dojo(第38回)を開催した

今週は第38回を開催しました。引き続きKotlin Hands-on編です!

 

前回の様子はコチラ↓

kdnakt.hatenablog.com

 

 

[第38回の様子]

2020/11/04に第38回を開催した。

 

参加メンバーは自分をいれて3名。安定のメンツ。

 

勉強会本編の内容としては、前回からはじめたKotlin Hands-on

Creating HTTP APIs with Ktorを継続中。

 

前回の参加者が自分のリポジトリをクローンして、IntelliJもセットアップしておいてくれたので、スムーズにドライバをお願いすることができた。やったー!

 

[学んだことや疑問点]

  • Creating HTTP APIs with Ktor: 3. Customer Routes
    • 前回コンパイルエラーになっていたところからのつづき。

f:id:kidani_a:20201029014913p:plain

    • IntelliJにサジェストされるままに、io.ktor.response.respondio.ktor.response.respondTextimport文を追加

f:id:kidani_a:20201105015615p:plain

    • とりあえずコンパイルは通るようになったっぽい。ここで1回目の「やったー!」
    • しかしなんでわざわざrespondとかをimportしないとコンパイルエラーになるんだろう、call変数にrespondメソッドが生えていれば問題はないはずなのに……と思って実装を確認したらなんとなく納得。拡張関数として独自に実装されてるからimportが必要になる、はず。拡張関数、Koansとかで実装はしたことあるものの実際に使ったことはなかった気がするので、また一つ学べた気がする。しかしimport文が増えるのが若干気になる……IDE使うから実装時に問題になることはないんだろうけど……。
public suspend inline fun ApplicationCall.respond(message: Any) {
    response.pipeline.execute(this, message)
}

github.com

    • ただ、実装したHTTP APIにリクエストを投げて動作確認したわけではないので、本当にこれで良かったのかは不明。おそらく5. Manually testing HTTP endpointsの章まで進めば動作確認できるはず……!来週はここまでいけるだろうか。

f:id:kidani_a:20201105015839p:plain

    • GET /customerのエンドポイントの実装ができたので、今度はHTTPリクエストのAcceptヘッダの実装をしろと指示がでた
    • 言われるがままにテンプレートとして用意されていたApplication.module()メソッドに指定されていた実装を追加すると、例によってコンパイルエラー
    • installメソッドがやたらとサジェストされる候補が多くて辛い

f:id:kidani_a:20201105022522p:plain

    • とりあえず一番上のやつでよかったっぽい。適当なやつから試したせいでなかなかコンパイルエラーが解消せず焦った。
    • 最終的に3つのimport文を追加したところで時間切れ。

 

[まとめ]

モブプログラミング・スタイルで、Kotlin Hands-onを継続している。

拡張関数を呼び出す方法などを学んだ!やったー! 

来週はできれば実装したHTTP APIを実際に動かしてみたい……!

 

今週の進捗は以下のプルリクエストにまとまっている。

github.com