目次
Scalaスケーラブルプログラミング第3版
「Scalaスケーラブルプログラミング第3版 」が出版されていて、カバーがコップ3個になりましね。Kndle版は「Scalaスケーラブルプログラミング第3版 [Kindle]」です。
第3版では、Scala バージョン2.11/2.12に合わせて内容を更新しているそうなので、新機能をチェックしたい人は即購入ですね。具体的には下記機能について解説されているそうです。
- Appトレイト
- 文字列補間
- 値クラス
- ScalaTestによるテスト
- 暗黙のクラス
- コンテキスト境界
- ワイルドカード型
- Scala 2.12へのJava 8の統合と活用
- フューチャーによる並行処理
Scalaの書籍は本家の「Scalaスケーラブルプログラミング」以外にもいくつか出ています。世間的に評価の高い入門書籍が少ないような気がするのですが、なんでですかね。まぁ、「入門者でもコップ本でがんばれ」ってことでもいいとは思いますが。
Scala逆引きレシピ
機能全般を知ったり、パズルを解く感覚で楽しみながら学んだりと、普通の参考書の解説順ではなく、ちょっと違ったアプローチをして学びたいときは、下記の書籍が良さそうです。最新版に対応した書籍が欲しいところですけど、なかなか言語の人気が出てこなくて2, 3年後なのかなぁ、という感じ。sbtとか開発環境や運用環境まわりはもっと情報が欲しいところなんですけどねぇ。
関数型プログラミング向け機能に注目
やりたいことはオブジェクト指向プログラミングで実装するけど、関数型プログラミングについても学びたいということなら、その説明を意識した書籍が良さそうです。
難しいのは、「関数型をきちんと知りたいということなら、HaskellやOcamlから入ったほうがいい」という意見もあるというあたりですかね。「せっかくのハイブリッド機能なのに、関数型プログラミングに特化する方向で学ぶと、Scalaの良さを消してしまうプログラミング思考になってしまうかもしれない」ということを聞いたことがあります。
何事もバランスなので、どちら寄りでも動けばいいと思うのですが、チーム開発をしている場合は、設計思想の関わる話になってくるため、不毛な議論になりがちなので、気にせず自分の関心事から、どの書籍で学ぶかは判断すればいいと考えてます。
山頂に登る(目的の達成)のに、東側(オブジェクト指向)からでも、西側(関数型)からでも、どちらからでもいいじゃないですか。目的が達成できるかが重要なので。
- Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)
- Scalaファンクショナルデザイン ―関数型プログラミングの設計と理解
人工知能
人工知能に興味があるなら、Scalaでの実装で説明している「関数型オブジェクト指向AI プログラミング―Scala による人工知能の実装 」もいいかもしれません。目的を持ったプログラミングをして大体の書き方がわかったところで、文法書を読むと理解が進むことも多いですからね。
文法書というのは、どうしても機能を全部網羅するところに著者の意識がいってしまって、応用の説明が不足してしまいがちです。ですから、文法書と応用本と2冊入手して下記の順番で理解を深めるのが良いのではないかと考えています。
- 応用本の基礎
- 文法書の基礎
- 応用本の具体例
- 出てきた文法を文法書の該当するところでチェック
- 応用本で説明がない文法については文法書をチェック
そのほか
Scala 2.7/2.8対応で良くてオライリーの本で揃えたいという人もいるかもしれませんね。Amazonの評価をみると意見がわれているようですが「プログラミングScala 」は選択肢としてはありかもしれません。コップ本(Scalaスケーラブルプログラミング)がいいという意見もあるので予算と内容とで判断でしょうか。