見出し画像

ScalaエンジニアがKotlinのキャッチアップで読んだ本3選

こんにちは! UPSIDERの肩書きのないエンジニアおかだです。

こちらで紹介されているとおり、UPSIDERはWebサーバサイドの開発言語としてKotlinを採用しています。ぼくは元々Scalaを書いていましたが、2021年7月頃にUPSIDERにジョインして以降、コツコツとKotlinのキャッチアップを進めています。この記事ではそんな中で読んだ本を3冊紹介したいと思います。

Effective Kotlin

Effective Kotlin: Best practices (English Edition)
Effectiveなんとかというタイトルの本は、あればとりあえず買いますよね。Effective KotlinはいわゆるEffectiveシリーズとは出版元が違うような気がしないでもないですが、評価はよいし、 即買いしました。まさにEffective本、というよい内容でした。シンタックスや言語機能をひととおり知っているつもりでも、で、どれを引き出しから出してきてどういうコードを書けばいいの?っていまいち分からないですからね。そういうヒントをくれる本は大事です。Kotlinを書いている人みんなにすすめたい。「プラットフォーム型を早期除去しろ」とか「valはイミュータブルではない」とか「高階関数をinline化しろ」とか「名前付きデフォルト引数をもつコンストラクタがあればBuilderパターンはいらん」みたいな話も、とてもEffective本らしくてよいです。

一方、これは完全に個人的嗜好ですが、やや残念だったのは、Kotlinに特化した話の比率が意外と少なかったこと、ですかね。全体の半分くらいじゃないかな。プログラミングに一般的な考え方や設計の話も多くあったり、そしてBetter Javaという立ち位置の言語だけに、内容はどうしてもEffective Javaとかぶります。そこそこ本を読む身としては、技術書は一冊で完結する必要はなくて、特定分野に特化した本がたがいに補い合ってくれればそれでいいのですけれど。とはいえ、想定読者はEffective Javaを読んだ人、とはできないのもわかりますし、Effective Kotlinという本は立ち位置からして書くのが難しい本なのかもしれません。

ちなみに、Kt. Academyのコースにディスカウント付のリンクが張られていて、ここからだと15ドルで買えます。
https://kt.academy/course/effective-kotlin

Kotlin Coroutines

Kotlin Coroutines: Deep Dive (English Edition)
ScalaになくてKotlinにあるもの、その筆頭がCoroutineだと言ってよいのではないかと思います。そんなCoroutineについて一冊まるごと書いている本があるなんて……❤️ タイトルを見て即買いしました。
買ってから気付いたのですが、著者はEffective Kotlinと同じ人です。このあたりでさすがに出版元のKt. Academyって何だ?と思って調べてみたりして、それでEffective Kotlinのディスカウントページも見つけたわけですが、もう購入済みだし時すでにお寿司。せめてこの記事を読んだみなさんはディスカウントされてほしいです。

話を戻します。Kotlinはオンラインドキュメントが充実していて、Coroutine関連の情報も豊富です。この本の内容は、カバーしている範囲的にはそれとほぼ同じですが、全体構成がわかりやすく、個々のトピックについての説明はオンラインドキュメントより詳しいです。個人的には、オンラインドキュメントの内容はどうも頭に入ってこず、Coroutine関連はだいたいこの本で学びました。

例として CoroutineContext の解説部分を比較してみます。オンラインドキュメントはこちら。 CoroutineContext そのものの説明は最小限にとどめて、Dispatcher や Job といった個別の事柄について記載しています。一方、この本の内容ですが、実は部分的にKt. Academy Blogで公開されており、 CoroutineContext の章はまるっとそのままここにあります。内容の濃さは一目瞭然でしょう。本買わなくてもブログを読んでおけばいいんじゃね?説はありますね……。

内容は万人向けというわけではないですが、本としては大変おすすめ。Coroutineについてもっと知りたいけれどオンラインドキュメントいまいち分からない!という人に特におすすめです。Kt. Academyのブログ記事によると第2版の執筆が進んでいるとか。即買いします。

Functional Programming in Kotlin

Functional Programming in Kotlin (English Edition)
Kotlinが主題というよりは、サンプルコードにKotlinをもちいた関数型プログラミングの本です。Amazonの試し読みで目次を見ると、ラムダとか高階関数が中心のゆるふわ関数型ではない、副作用の完全排除を目指す、ガチなやつのようです。即買いしました。

が、読み始めてすぐに例として出てきた buyCoffee 関数の既視感。これは『Scala関数型デザイン&プログラミング』じゃないか。よく見たら著者も同じだし、目次もほぼ一致していそう。Kotlinで焼き直ししていたのか。そういえばScalaのほうの訳書はネーミングをひねっているけれど、原書は似たタイトルと装丁だった気がしてきました。『Scala関数型デザイン&プログラミング』は、ぼくがここ数年読んだ技術書の中で最高といってよい素晴らしい本です。モナドやアプリカティブといった「定義はわかった。で、それに何の意味があるの?」と言いたくなる概念について、極めて実践的な演習を経て、読む人の頭の中に問題意識をじっくりと組み立てた上で、その解法として説明を加え、そして抽象化していく、とてもよく練られた構成でした。

Kotlinは純粋関数型プログラミングを実現するのに重要な言語機能をあえて採用しなかったと聞いていますし、にもかかわらずそれを実現するライブラリがあることも、なんとなくは知っていました。そんなKotlinで同じ構成の本を書くと一体どんな内容になるのか、と興味深く読んでいる最中です。読み終わっていないので、タイトルの「読んだ本3選」というのはちょっとウソですね。


この記事が気に入ったらサポートをしてみませんか?