osiire’s blog

ふしぎなそふとやさん

第2版 Scalaスケーラブルプログラミング

第2版の「Scalaスケーラブルプログラミング」id:kmizushima氏より頂戴しました。ありがとうございます。ちょうどScala 2.9でアレコレしようと思っていたところなので、大変助かります。

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

第1版も600ページ超えのボリュームでしたが、第2版はさらに増えて740ページあり、函数プログラミングの集いの時に初めて実物を持った時には「分厚い!」という第一印象でした。実際色々と加筆されているようで、Scala Version 2.7ベースの解説が2.8ベースに変わり、コレクションライブラリの章が増え、id:kmizushima氏による2.9の新機能紹介が追加されています。
まず、コレクションに関する標準ライブラリの解説は、私のような怠惰なプログラマには結構嬉しい内容でした。APIドキュメントだけでは分からない設計方針と全体像が書かれていて短時間でコレクションの概要を把握するにはもってこいです。あと、派生クラスの詳細やパフォーマンス特性の一覧もあり、どの派生クラスを使えばいいのか迷った時に頼りになりそう。viewやiteratorの動作についても「正直知らなかったよ」という内容が多く、まとめて勉強しておくとお得感が半端ないです。コレクションAPIの内部アーキテクチャについてはマニアックなので知っておいて損はないレベルだと感じますが、既存のコレクションから新しいコレクションクラスを作成する手順は知らないままでいたら無駄骨を折るところでした。確かに安い本ではありませんが、2.8のコレクションについてよく知らないまま開発の仕事をしていたらと想像すると、24,25章だけでも値段分の価値がある本だと思います。
加えて、2.9の新機能紹介も地味に助かりました。parで自動的に並列処理化してくれるのはよく知られていますし知っていたのでまぁいいとして、scala.sys.processパッケージで既存プロセスとの連携が容易になる事に気づけたのは大きかったです。「forkの便利版でしょ?パイプやリダイレクトをScala内部でやって何が嬉しいの?」ぐらいに思っていました。私が間違っていました、ごめんなさい。
あと、29章の「オブジェクトを使ったモジュラープログラミング」の章(第1版では27章)を改めて読み返してみて、実はさらっと重要なことが書いてあるんじゃないかと再認識しました。プログラム部品を入れ替え可能にするという視点は内部設計的には頻出のパターンでありながら、比較的大きい粒度の部品の入れ替えは容易でない場合が多いように感じます。この点について一つの解法を示唆してくれているという点で貴重かもしれません。以前読んだ時にはここまで思い至りませんでした。
第1版を持っている/読んだ人も第2版を機に読み返すと吉な感じです。以上ご参考まで。