Property Based Testing(PBT)は、関数のテストにランダムに生成された入力値を用いることで、エッジケースの見落としを発見しやすくするテスト手法です。
そして、KotlinでPBTを行うための強力なツールとしてKotestがあります。KotestのPBT機能はKotest本体のテストフレームワークの機能とは独立しているため、JUnitなど他のフレームワークを利用していても簡単に導入が可能です。
このセッションでは、PBTのメリットについてJUnit + Kotestを利用したテストコードの例を用いて説明しつつ、独自型のランダム値生成などの利用機会が多そうな機能も紹介します。
また、私はPBTを行うことがクラスや関数の設計の堅牢さに対して良いフィードバックがあると実感しており、それを示す例ついても触れたいと考えています。
よろしくお願いします。
runCatching は、ブロックに定義された関数の実行が成功したかどうかを簡単にチェックし、例外をより安全に扱うことができる Kotlin の関数です。それゆえ、全ての Throwable を catch することが可能です。
一方、Kotlin では全ての例外クラスが Throwable を継承しており、チェックされる例外(checked exceptions)を持たない設計思想になっています。この思想の背景には、主に大規模なソフトウェアプロジェクトでの例外をチェックすることが生産性の低下やコード品質の向上に寄与しないといったことがあります。
では、どのようなケースでは例外をチェックするべきでしょうか?
このセッションでは様々な例外の具体的ケースをもとに、実践的な例外の扱い方を紹介します。是非この機会に runCatching の依存から脱却しましょう!
Kotlinの静的コード解析ツールのdetektについて紹介します。
detektは強力な解析ツールとなっており、コードスタイル・パフォーマンス・複雑性・潜在的なバグなどを検知してくれます。
コードを健全に保つのに非常に役に立つツールになっています。
検知してくれるルールを紹介しつつ、基本的な設定方法や使い方などを説明していきます。
また、ルールのカスタマイズ方法や、既存プロジェクトへの導入方法なども説明します。
皆さんFlowを理解しながら使っていますか? 私はかつてはずっと雰囲気で使っていました。
数あるオペレータを使いこなしていますか? 私はcollectLatestくらいしか使っていませんでした。
このセッションではFlowに関する短いクイズの出題とその解答、解説を行い、その中でFlowの重要な概念に関して説明していきます。
クイズは実際の開発現場でのユースケースを想定した内容となっています。
一緒にFlowと仲良くなりましょう。
登壇者はkotlin-csvというKotlin製のOSSを自作し、5年運用してきました。
https://github.com/doyaaaaaken/kotlin-csv
その経験を振り返り、感想をシェアするセッションです。
なお2年前のKotlin Fest 2022にて、kotlin-csvをどのようにして普及させたのかについてはすでに語っています。
https://speakerdeck.com/doyaaaaaken/kotlinzhi-zi-zuo-ossnopu-ji-zhan-lue-kotlin-csvnoshi-li-woyuan-ni-at-kotlin-fest-2022
今年のセッションでは具体よりも、自身が5年の経験の中で得た知見について語ります。
楽しんでもらいかつ「自身もチャレンジしてみよう」と思ってもらえるセッションになるよう頑張ります。
Spring Boot × Kotlin でバックエンドの開発をする時に悩むのがアーキテクチャだと思います。
世の中には様々なアーキテクチャがありますが、サービス立ち上げの時からアーキテクチャに凝りすぎると開発の速度が落ちてしまいかねません。
かと言って、何も決まりがない状態ではだんだんとカオスになってしまうと思います。
このセッションでは、Kotlin × GraphQL (DGS) × Spring Boot で CQRS アーキテクチャを実現し、責務を分離すべき部分はしっかりと、そうでもない部分は柔らかい状態を残しておく例をご紹介します。
併せて、Kotlin で CQRS と一緒にイベントソーシングを実現する例と、その際に便利な Sealed class の利用例についてご紹介します。
ArchUnit (https://www.archunit.org/) というツールをご存知でしょうか?
Java、Kotlin のプロジェクトに対してパッケージの依存関係から付与すべきアノテーションやクラス名など様々なコーディングルールを直感的に記述することができるフレームワークとなっています。
これによって暗黙知になりがちでコードレビューなどで担保しているようなコーディングルールを読みやすく管理でき、CI などで自動的に検知することが可能になります。
本セッションでは、「明日からプロダクトに ArchUnit を導入して暗黙的なコーディングルールを自動的にチェックできる」を目指し、以下に触れる予定です。
このセッションでは、Kotlin Notebook について解説します。
Kotlin Notebook は データサイエンスの領域などで使われている Jupyter Notebook のための、 Kotlin カーネル を 使用できる IntelliJ IDEA用の プラグインです。 Community Edition では使えず、 Ultimate で使えます。
対話型でKotlinのコードをすぐに動かすことができ、コードとその実行結果に、テキストや画像を1つのドキュメントにまとめることができます。
本セッションではツールの紹介から始め、基本的な使い方、さまざまな利用用途について触れます。
データサイエンス分野はもちろんのこと、普段アプリケーションコードを書いている人にとっても有用なユースケースが多くあるのでそういった点についても説明します。