kdnakt blog

hello there.

第48回Kotlin dojoを開催した

今週は第48回を開催しました。引き続きKotlin Hands-onをすすめています。

 

前回の様子はコチラ↓ 

kdnakt.hatenablog.com

 

 

[第48回の様子]

2021/1/20に第48回を開催した。

 

参加メンバーは自分をいれて5名。先週の終了時点比でいうと2.5倍に増加しているw

2020年に何度か参加してくれていて、今年初参加というメンバーもいた。継続して参加してくれてありがたい。

 

勉強会本編の内容としては、前回に引き続きCreating an interactive website with Ktorハンズオンを進めた。第5章、第6章を実施して、このハンズオンをすべて終わらせることができた。

 

[学んだことや疑問点]

  • Creating an interactive website with Ktor: 5. Form submission and kx.html
    • 前半は、POSTリクエストを処理する実装
post("/submit") {
    val params = call.receiveParameters()
    val headline = params["headline"] ?: return@post call.respond(HttpStatusCode.BadRequest)
    val body = params["body"] ?: return@post call.respond(HttpStatusCode.BadRequest)
    val newEntry = BlogEntry(headline, body)
    blogEntries.add(0, newEntry)
    // TODO: send a status page to the user
}    
    • call.receiveParameters()でリクエストボディのパラメータを取得できる
    • 取得したデータはString?なのでnullの場合はreturn@postでラベル付きリターンを利用して400レスポンスを返している
    • 後半は、kotlinx.htmlを利用してHTMLをレスポンスに載せる実装
call.respondHtml {
    body {
        h1 {
            +"Thanks for submitting your entry!"
        }
        p {
            +"We've submitted your new entry titled "
            b {
                +newEntry.headline
            }
        }
        p {
            +"You have submitted a total of ${blogEntries.count()} articles!"
        }
        a("/") {
            +"Go back"
        }
    }
}
    • HTMLタグをKotlinのラムダ式っぽい書き方で書いている
    • 文字列だけでなく、オブジェクトもそのままアクセスできるので便利そう
    • サーバーを起動して動作確認すると、問題なく動作した🎉
  • Creating an interactive website with Ktor: 6. What's next
    • 最後に時間がやや余ったのでこれまであまりちゃんと読んでいなかったWhat's nextの章を読んだ
    • 永続層を追加したりAPIに認証を実装したり追加の課題がいくつか出ていた
    • Kotlin Slackワークスペースへのサインアップリンクが紹介されていた

Kotlin Slack Sign-up

 

[まとめ]

モブプログラミング・スタイルで、Creating an interactive website with Ktorハンズオンを進めた。

KtorでのPOSTリクエストの扱い方や、kotlinx.htmlライブラリの利用方法を学んだ。

 

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

github.com