$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

「実践Scala入門」読んだ

[asin:4297101416:detail]

読んだ。この本は「コンパクトなコップ本」を目指したと最初に書かれているとおり、この本を読めばひとまずScalaを書けるようになるなと思った。これからScalaを始めたくなったらまずはこの本を読んでおけば十分だと思う。

また、「コンパクトなコップ本」だけに留まらず、実践ではよく使うがコップ本ではあまり言及されていないような機能についても解説されていたことが非常に良かった。例えばコップ本ではOptionやEither、Tryなどを使ったエラー処理についてあまり書かれておらず、昔Scalaを始める時にエラー処理のやり方で詰まったことがあった。その時にこの本を読んでいたらもっとスタートダッシュが速かっただろうと思う。他にも実践ではほとんどの場合利用するsbtについても解説されているのも良かった。

こんな感じでScala入門するには最適な一冊だと感じました。

読書ノート

- javaでscalaのコンパイル後jarを動かす方法。scala標準ライブラリにクラスパスが通ってれば良い 20
- scalatestのscaladocは品質が高いらしい、あとで調べる 34
- オプションにnull渡すとnoneになるのでjavaライブラリをラップも出来る 104
- ジェネリックな型をサブタイプにする 109
- :で終わると右結合 130
- updateという関数は、代入で置き換えられる 140
- future周り教えてくれるのがいい。コップ本だとなかった? 158
- print:namer試したい 172
- partialfunctionにはマッチしないかもしれないパターンマッチを渡しても大丈夫 172
- sbtのビルドのスコープにはプロジェクト軸、コンフィグレーション軸、タスク軸があり、それらすべてでキーごとの値を変更可能 200
- sbtの設定できるキーの一覧は https://github.com/sbt/sbt/blob/develop/main/src/main/scala/sbt/Keys.scala で確認可能 204
- privateめそっどのテストに使えるtrait便利そう、ただパッケージプライベートで問題ないらしい 223
- AsyncFunSuite 226
- partial functionでcaseを全部書かなくて済む。isDefinedAtで呼び出しが成功するか確認可能 241
- extends AnyValして値クラスを作るとJVMレベルのオブジェクト生成が可能な限り行われないようになる 244
- メソッドから無名関数への変換処理をη-expansionというのは知らなかった 251