2018年8月26日日曜日

Kotlin Fest 2018で「start from Convert to Kotlin」トークしました



Kotlin Fest 2018 に登壇者兼スタッフ(オープニングトーク司会)として参加してきました。
Kotlinへの愛と熱気にあてられた一日でした。



「start from Convert to Kotlin」というタイトルで初学者向けにすでにあるJava製Androidアプリで『Convert Java File To Kotlin File』という機能を使って自動変換したコードをベースにKotlinの良さとどのように改善していくかというお話をしました。
登壇中大変緊張してしまい聞きづらいところもあったかと思いますが、聴講いただいた皆様ありがとうございました。

後日動画も公開されるそうです。怖い。

いくつか要点と補足です。

  • KotlinコードでもJavaは意識せざるを得ないので随時Decompileを駆使して確認する
  • AndroidアプリではNull許容・非許容を適切にハンドリングすることで効果的にバグを回避することができるが、単純なConvertのみでは適切な形にならないこともあるので留意する。特に!!が出てきたら要注意
  • KotlinテストコードでのassertNotNullではそのあとのスマートキャストが効かないがkotlin-test-junitのfailを使うとスマートキャストが効くようになる
  • Javaでは名前付き引数が使えないと話しましたが、正確にはJava8以降でオプション機能としてサポートされています。しかしKotlinからはJava6との互換性のためJavaの名前付き引数を解決できないとのことです(Kotlinイン・アクション P62より)。
  • 実装では名前付き引数を使うと読みやすいだけでなく引数の定義順の入れ替えが起こっても壊れないので堅牢になるが、Java混在プロジェクトの場合は順番を保証したいのでテストコードで名前付き引数を使わないことで変更による影響を検知できる
  • lateinitとby lazyの最大の違いは宣言がvarになるかvalになるか。サンプルプロジェクトの場合だとby lazyのほうが良かったかもしれません




Kotlin可愛い。