Programming in Scala Fifth Edition

以前アーリーアクセスで購入して手をつけていなかったScala3対応のProgramming in Scala Fifth Edition、ようやく完成したようなので最近発売されたForth Editionの日本語版と見比べながらざっと目を通してみました。

Scala言語の入門書としては以前よりもだいぶ整理されて真っ当な作りになっていると思います。すでに標準ライブラリから外れて久しいXML、パーサコンビネーター、Swingはもちろん、存在がいまいち謎だった最後のスプレッドシートの章もまるっと削除されていますし、既存の章の順番も見直されています。元々Programming in Scalaの構成はだいぶ謎な気がしていたので、今回Scala3へのアップデートにあわせて一新されたのはよかったのではないかと思います。

個人的にはJavaとの相互運用やFutureの章が削除されてしまったのは残念かなと思うのと、この書籍の出自を考えると仕方ない気もするのですが、assertはともかくテストについては要らないんじゃないかなぁとは思いました。それまで全くsbtに触れてないのに突然sbtの設定とか出てくるし…。

また、サンプルコードが全編Scala3で新たに導入されたインデント構文(quiet syntax)になっており、Scala2と一切互換性がないという点はかなり気になりました。Scala3の新機能は一応それとわかるように書かれているのですが、逆にScala3で廃止された機能については特に明記されていません。つまり、本書はScala3から新たにScalaを始める人向けの書籍であるということです。

すでにScala2をバリバリ使いこなしている人はこの本を読まなくてもScala3に追従するためのリソースはオンラインで入手できると思うのでいいとして、これからScalaを学習するという人のうち、このタイミングでScala3で学習し始めて、Scala2は一切触らないという人が一体どれだけいるのか…。数年後、Scala業界の大半がScala3に移行した後であればよいと思うのですが、今入門書として読むのは結構微妙かもという気がしました。

世の中的にScala3への移行はなかなか一筋縄ではいかなそうな気がしていますし、正直脱落する個人や企業も出てくるのではと思っているのですが、特に新規参入者の方がこの本で混乱してしまわないことを祈るばかりです。

その他のScala3対応書籍

オライリーのProgramming ScalaもScala3対応にアップデートされているようなのですが、こちらはどんな感じなのでしょうか。目次を見ると一応Scala2からScala3へのマイグレーションについての記述があるようですし、型クラスについてもScala2とScala3双方での解説があるようなので、今読むのであればこちらの方がいいかもしれません。

日本語でのScala入門書

さて、日本では先日Forth Editionの翻訳版が発売されました。何気なく書籍情報を眺めていたら監訳者に前職の同僚氏が!これはお布施せねば!ということで早速クリックしました。こちらはScala 2.13対応ですが、まだまだ現場では当面Scala2が主流で使われると思われるので、今Scalaを学習するのであればこちらもオススメです。

日本語だと技評さんの実践Scala入門も実用的でいいですね。