Scalaを学ぶためのScala本の読み進め方 (10冊)

Scalaを学ぶためのScala本の読み進め方 - etc9から、さらに最近出た本を追加して加筆


昔は本家のHPにあるPDFぐらいしか情報源がありませんでしたが、ここ最近で邦書も整ってきたので、読み進め方について考えてみました。

個人的なお勧め順で紹介。

必須のコップ本「Scala スケーラブルプログラミング」

言語の作者である Martin Odersky 氏が著者の1人ということもあり、言語についての説明の詳細さ という点では、ここで紹介する書籍中で群を抜いています。邦訳も非常に読みやすくまとめられており、Scalaでプログラミングを行うなら必須です。一番良く参照する本ですね。

ただ、Scala が初めてという場合は、ページ数が 600 ページで内容も盛りだくさんなので、中盤ぐらいから消化不良を起こすかもしれません。Java の経験が豊富で、関数型言語の知識がありパターンマッチやコンスセルなどの用語で面喰わなければすんなり読み進められると思います。

惜しいのは Scala2.7 の内容であることですね。原書では Scala2.8 の対応版が出てるのですが・・

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)

Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)


2011/9/27 にScala2.8対応の第二版が出ました。大部分は第一版のままなので、第一版を持っているのであればわざわざ手に入れる必要はないかもしれません。コレクションライブラリの章は読んでおきたいですが。邦訳のみの Scala2.9 の説明もネットで少し調べればカバーできますし。

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

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


Lift 作者による「Scala プログラミング入門」

コップ本が言語自体の詳細な解説書であれば、こちらは実用のための示唆が得られる本という印象です。
内容は、タイトルには入門とありますが明らかに入門書ではありません。コップ本の副読書としての利用をお勧めします。

さらっとした簡素な記述なのですが、さらっと読むと置いて行かれます。簡素さの中に多くの事柄が詰め込まれており、Scala のコードと同じ香りがする本です。この本だけで Scala を学ぶのは無理がありますが、読むたびに発見があり、個人的に非常にお気に入りの本です。

Scalaプログラミング入門

Scalaプログラミング入門


洋書ですが「Programming Scala」

この本の良いところは、「薄さ」です。コップ本だと重い! もう少しかいつまんだものは無いの? という場合にはこの本がベストだと思います。ページ数も200ページと手ごろで、簡素で読みやすいです。
洋書なので強くはお勧めできませんが、この本で概要をつかんでからコップ本に進むと理解が早いかもしれません。私の場合、逆のパターンだったので、後読感としてそんな気がするだけです。ハイ。

Programming Scala: Tackle Multicore Complexity on the JVM (Pragmatic Programmers)

Programming Scala: Tackle Multicore Complexity on the JVM (Pragmatic Programmers)


関数型についての易しい説明の「Scalaで学ぶ関数脳入門」

Java 経験者向けに、関数型言語のつまずきそうなポイントを図などを多用してやさしく解説しています。Java との違いや関数型言語の概要をつかむには最適ではないでしょうか。読み物として面白かったです。

繰り返して読む本ではないかなぁと思うのと、章によって記述の粒度にばらつきがあるのが残念な点でしょうか。
関数型言語は初めてという方と、Java には飽きたんですけど、という方には好奇心をくすぐる良書になっていると思います。

オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門

オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門


オライリー「プログラミングScala」

オライリーっぽく、非常に詳細な記載になっています。が、個人的には詳細さが冗長となり読みにくくしている印象です。コード例が多いのはうれしいのですが、全てを乗せようとしてポイントを掴みにくくしている気がします。Scala 本の1冊目としてこの本を読まないでください。Scala は混沌とした言語という印象で終わる可能性が高いです。

とはいえ実用に主眼が置かれている点、Scala 2.8 に関する記述が包括的に読める邦書という点では買っておいて損はないと思います。

プログラミングScala

プログラミングScala


実践でもない?「Scala実践プログラミング」

後発なので期待しましたが、書籍として粗いです。章ごとの粒度もばらばらで、ターゲットとする読者層も不明で、雑誌の記事の寄せ集めの印象です。ネットで英語の情報を集めるのが面倒な場合には情報源の1つにはなりますが、詳細まで説明されていないため、概要を把握する程度になってしまうでしょう。
入門書では手に入りにくい、新しめの情報を、サックリと概要だけ把握するには読んでみても良いかもしれません。前半部分は思い切って省き、中盤以降を前後の章構成と整合性を取りながら丁寧な解説をすれば良いのに・ と個人的に残念に思いました。

Scala実践プログラミング―オープンソース徹底活用

Scala実践プログラミング―オープンソース徹底活用


対象を絞り過ぎ?「ボクらのScala」

Scala を、あくまでも Java の延長線上で使う程度の解説にとどめています。Scala の難しい部分には触れず、プログラミング入門の乗りで淡々と説明が続きます。Java の延長として Scala に慣れてもらうという意図があるのかも知れません。
個人的にはお勧めできる書籍ではないです。(どうでも良いですが、Test Suite をテストスーツと読ませるのがなじめませんでした・・)

ボクらのScala ~ 次世代Java徹底入門

ボクらのScala ~ 次世代Java徹底入門


「やさしいScala入門」と「はじめてのScala」

以下の2つは本やでチラ見しただけで購入してないので、特にレビューしませんが、どちらもプログラミング入門といった形で書かれていました。プログラミングを Scala で学ぶニーズがあるのか分かりませんが、基礎の基礎を学びたい方向けと思います。

やさしいScala入門―平明な例と演習問題で学ぶ

やさしいScala入門―平明な例と演習問題で学ぶ


はじめてのScala―「関数型+オブジェクト指向」の次世代言語! (I・O BOOKS)

はじめてのScala―「関数型+オブジェクト指向」の次世代言語! (I・O BOOKS)


こんなのも出てました。I・O BOOKS シリーズはターゲットが不明・・ 学生向け?
Scalaではじめるプログラミング―「Java」「.NET」のソフト資産を生かして開発を効率化! (I・O BOOKS)

Scalaではじめるプログラミング―「Java」「.NET」のソフト資産を生かして開発を効率化! (I・O BOOKS)


Scala本の読み進め方

Java 開発者、関数型言語はあんまり触ったことがない という方は以下の順で Scala本を読むのが近道かもしれません。

  1. 最初にコップ本を 17章 まで読みます
  2. 「Programming Scala」に一通り目を通します
  3. 「Scalaで学ぶ関数脳入門」を通読します
  4. コップ本を 24章 まで読みます
  5. 「Scala プログラミング入門」を通読します
  6. コップ本を再度頭から通読します
  7. オライリーの「プログラミングScala」を興味のあるところだけかいつまみます

もちろんですが、プログラムを書きながら覚えるのが一番です。