B-Teck!

お仕事からゲームまで幅広く

【Scala】Scalaをはじめよう! ─マルチパラダイム言語への招待─ を読んだ

最近Scalaの話題に触れる機会があり、そういえば全然Scalaの言語仕様を全然知らないなと思ったので、ライブラリに積んであった本書を読んでみました。

sbtの使い方からオブジェクト指向的な機能の紹介、Scala特有の機能の紹介、ファイルを取り扱う実装とそのテストまでをさらっと読める分量で書かれており、とりあえずScalaを触ってみるという場合にはちょうどよい書籍かなと。
ファンクタ・モナド・モノイドあたりは掘り下げすぎず、本書で触れる必要十分な範囲だけコラムで記載されていて、その割り切り方も初学者にはありがたかったです。

以下感想。

  • 書籍内では実行環境としてsbtのみ紹介していたが、IntelliJで書いてみた
  • sbtが慣れなかった
    • 実行が若干遅い?
    • 2018年発刊の書籍記載のライブラリが既にMaven Centralになくて衝撃だった
      • Scala本体のバージョンにライブラリが依存するためEOLのものはバシバシ切られている?
  • 記法はKotlinに近くて馴染みやすかった
    • companion objectはobjectを別で定義するのでKotlinのほうがわかりやすいかなと思った
    • traitは振る舞いを組み合わせる感じで結構好き。
      • 宣言時じゃなくて利用時にもmixinできるのはちょっと気持ち悪い
      • Kotlinのinterfaceやdelegationより直感的に扱える気がした
    • Option, Eitherみたいなエラーハンドリング用の型が言語組み込みであるのは嬉しい
      • これ + KotlinのNullable Typeみたいなのがあれば最高だったかも
      • 成功、失敗は型として扱いつつ、単なるNullableをさばくのにこの形になるのは結構大変
    • Enumがほしい
      • sealed classは表現力高いけどもっとシンプルなEnumはあったら嬉しいかもなと思った
    • Futureの記法が結構シンプルで良い
      • 個人的にはAwaitまで説明してほしかった
    • implicitのユースケースがあまりピンときてない
      • もっと使ってみないとわからないかも
      • implicit classはスコープ内限定の拡張関数定義するのに使う?
    • ユニットテストのFlatSpec?というのがなかなか馴染めなかった
      • これも書いてたら慣れるかも

次はコップ本…と思ったんですが、ハードルが高そうなのでまずは実践Scala入門を読んでみようかなと思います。

実践Scala入門

実践Scala入門