2022年になって突然「そうだ、Scala、やろう」と思い立ったので、とりあえず(会社の書籍購入制度を使って)以下2冊をポチりました。

紙版を買ったので「まだかなー」と思って待っていたところ、たまたまKindleUnlimitedに『Scalaをはじめよう』があるのを見つけて即ダウンロード。(通勤中でしたが、楽天モバイルのWi-fi端末を持っていたおかげで即読めました。)

で、一旦コードは一切書かずにざっと内容だけ通読してみました。

読んでみての感想

上記3冊の中では一番薄いので、スマホのKindleでもわりとさらっと読むことができました。

もともと少しだけJavaを書いたことがあったので、スムーズとはいかないまでも一応読めました。Javaで書くとこうだけどScalaだとこう書ける、的な説明がなされている箇所もあり、Java書いたことある人にとってはわかりやすいと思います。(あとはおそらく、関数型言語やってたのも追い風)

いくつか「なるほど」とか「わからん」となった点をメモしておくと

  • 再帰関数が書けるが末尾再帰になるように気をつける
    • 再帰関数を書く場合は@scala.annotation.tailrec というアノテーションを付けておくことで,末尾再帰最適化ができない形になっていたときにコンパイルエラーで教えてくれます

    • なにそれ学生時代に出会いたかった
  • Scalaには明示的なコンストラクタはありません.クラス名に続けて必要であればコンストラクタ引数を受けることができます

    • ほう
  • トレイトとは・・・
    • たぶん書かないとわからないやつ
  • アクターモデルとは・・・
    • たぶん(以下略

Scalaの文法などはさておき、主要な機能がなんとなーく頭にはいったので、ここからは残りの2冊を読みたいと思います。

一気に3冊揃えたのはなんで?

この記事を拝見したことがわりと効いてます。

同じテーマの本を複数冊読むことについて - Better Software Testing

以前の自分であれば、分厚い本をデンと眼の前において「これをやるんだ!」と意気込んでいました。(そしてすぐ挫折する)

記事中にはそんなことは書いてなかったですが、なぜか自分の中では「そうか、いったりきたりしながらでもどれかで進捗があればいいじゃん」と謎のひらめきがあり。パラレルに読むかリニアに読むかは別として、わからなかったらあちこち参照しながら読み進めてみよう!と思った次第です。