Kotlin in Action (Kotlin イン・アクション) 読書メモ
   3 min read

Kotlin 関連書籍について

書籍 Kotlinイン・アクション を読んでいます。

2022 年 1 月現在の Kotlin 最新バージョン1.6.10 であるのに対し、本書が解説しているのは 1.0 のようなので、役に立つのかな…と当初は考えていましたが、今のところ、これは駄目だ、というところは無さそうです。 (気になる人はドキュメントの "Earlier versions" (このあたり) で新機能について説明があります)

他方、 Amazon Kindle の Unlimited で提供されている Kotlin 関連書籍も読んでみましたが、全てイマイチでした。素直にお金出して Kotlin イン・アクション買いましょう。

Java 開発経験と、あと何かもう少し関数型言語的な機能(TypeScript とか Rust 程度)が有る言語に触れたことがあれば、流し読みで理解できて、読み切ればレビュー指摘受けながら Kotlin 開発できるようになってそうです。

また、公式リファレンス(のコア部分)を日本語訳されている方がいらっしゃるようです(リポジトリの更新日を見てみると、結構古いバージョンのように思われますが…):

実行環境セットアップ

実行するだけならオンラインで playground が用意されています:

が、 Java との相互運用的なところも確認したいと思うので、最初からローカルに環境を作っておきます。

SDKMAN! で JDK17 と Gradle をインストール。 Windows であれば SDKMAN! の代わりに Scoop で双方インストールできるでしょう。 Scoop のインストールについては こちら で触れています。

IDE は IntelliJ IDEA の Community 版を利用。

IntelliJ はショートカットキーが独特なので初めてだと戸惑いますが、取り敢えず Ctrl + Shift + A でコマンドパレット、だけ覚えておけば何とかなるでしょう。

プロジェクト作成

gradle init コマンドで Kotlin プロジェクト雛形作成できます。その上で、次の2点を編集します:

app/build.gradle.kts
plugins {
    id("org.jetbrains.kotlin.jvm") version "1.6.10"
}
app/build.gradle.kts
java {
    toolchain {
      languageVersion.set(JavaLanguageVersion.of(17))
    }
}

こちらの記事を参考にしました:

読書メモ

本書を読んだり、 Kotlin Koans をやってみて引っかかった場所などをメモしています。

return は必須

最近の言語(Rust や Scala だったかな?)は関数から戻る際の return が必要ないイメージがあって、 Kotlin もそうなのかと思い込んで return 省略してコンパイラに怒られる、というのを何回か繰り返しました。

すぐ慣れるとは思います。

object キーワードの用途が多いので混乱する(p.122, 4.4 object キーワード: クラスの宣言とインスタンスの生成の組み合わせ)

書籍では次の3つの状況で利用されるとあります:

  • オブジェクト宣言(object declaration)

  • コンパニオンオブジェクト(companion object)

  • オブジェクト式(object expression)

このうち、最後の "オブジェクト式" だけはシングルトンでなく都度オブジェクトを生成します(p.133)。

object はシングルトンの代替、というイメージが強くついていたので、 Koans で初めて出てきたとき混乱しました。

6.1.11 null 許容性の区別と Java (p.198, リスト 6.16)

書籍では、詳細なメッセージを伴った IllegalArgumentException が送出されるとありますが、実際には単純に NullPointerException が送出されました。

1.4.0 の次の変更が影響していそうです:

新機能は存在すらわからないのでリリースメモも読む必要がありそう

前述のような機能の変更には気づけますが、完全新機能の場合、前述したように リリースメモ の新機能を確認しないと存在に気づけないですね。

具体例としては、 1.3 で導入された coroutine とか。