Scala実践プログラミング

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

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

献本いただきました!

気づいた人がいるかどうかわかりませんが、この本の謝辞のとこに書いてあるとおり、レビュアーとして参加しました。


この前あんな(若干ふざけた?)本の感想を書いておいてあれなんですが、twitterなどでの評判をみていると、(なんとなく制作側の気持ちで)ちょっと複雑な心境だったりします。


著者の方々がそもそも、ネット上でかなりScalaに詳しい人として以前から認知されていて、期待が高すぎたことが一因なのでしょうか?しかし、逆に考えればそれだけある程度のレベルのユーザー層ができてきていて、Scalaが広まってきているのではないかと勝手に思っています。


「本の構成やターゲット層がこうあるべき」という主張はともかく、細かい記述ミスがあるのは、水島さんもおっしゃってますが、こちら側のミスというか、レビューした自分にもちょっと責任があるのではないかと思うところもあるので、申し訳ないと思ってますm(_ _)m


内容ですが、個人的には(著者の方々はたしか違うこと言ってましたが)Scalaを学ぶのに、この本を一冊目にするものありなのではないかと思っています。


(事前の宣伝の効果や本の題名から?) Effective Java 第2版 (The Java Series) のような構成を期待していた人がいるのではないかと思いますが、1、2、3章ではまずScalaの言語の機能について、コンパクトですが簡潔にひと通りの言語機能の説明がなされているからです。


そのあたりが、Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala)が(良くも悪くも)色々な言語設計上の細かい話を織り交ぜたりしつつ、期待をさせてゆっくりじっくり言語機能を詳しく説明しているのと、対照的なのではないかと思います。


すでにScalaの言語仕様を理解しているプログラマにとってはたしかにこの最初のほうの章があまり役に立たない可能性はありますが、逆にScala自体を全く知らない人でも、1、2、3章までをしっかり読めば、Scalaの文法のひと通りの知識は身につくはずです。


それでいて、個人的に(中、上級者に)オススメというか、自分自身も知らなかったことがあったりして勉強になったのは、4、7、10章でしょうか。


4章では、他の関数型言語との比較がなされていて、HaskellOCamlソースコードがちょっと出てきたりします。(自分含めて) Scalaができても他の関数型言語にも詳しいという人はあまりいないと思うので、参考になりました。


そして、7章ではScala独自のデザインパターンについて書かれています。

  • CONSEPT
  • Cake
  • Generalized Type Constraints
  • Phantom Type
  • 型安全なBuilderパターン

などの用語は、Scalaやっている人のなかでも聞いたことのない人が多いと思います。本の中にも書かれていますが、「デザインパターン」という言葉でまとめるには内容が多岐に渡るというか、難しい部分ですが、この章などは特に他の本には書いていない上級者向けのことが書かれていてオススメです。


そして最後の10-2章で限定継続について書かれています。これに関しては

  • そもそも今現在ネット上にほとんどScalaの限定継続に関する日本語の情報がない(ちょっと使ってみました程度)
  • 他の出版されているScalaの本でも、そもそも「限定継続」という言葉すら出てこない本がほとんど
  • 限定継続自体の説明が難しい(他の言語にファーストクラスな継続がない場合が多い、継続と限定継続の違い)
  • しかもScalaの場合、完全に仕様を理解しようとすると、静的型ゆえの複雑さ( cpsParam アノテーションってなに?え?しかもそれに共変とか反変が関わってくるの!? )


という状況のなかで、30ページ以上にわたり詳しく解説されています。自分も継続についてはほとんど使ったことさえなかったのですが、とても分かりやすかったです。そもそもScalaの継続に熟知している人が現在日本にほとんどいないと思うので、(上級者で継続に興味があるならば) この部分を読むために本を買ってもいいくらいだと思います。


限定継続については、たしかに他の言語が直接的にはサポートしていない場合が多いものなので、どこで使えばいいのか?実用的なのか?については判断が難しいかと思います。が、このまえあったScalaDaysでもNode.scalaという、Scalaの限定継続をつかった非同期のIOのライブラリ(?)の発表があったりと、使いどころによっては実用に役立つものだと思うので、試してみる価値は大いにあると思います。


え〜全部の章を紹介しきれませんでしたが、とりあえずの自分の率直な感想はこんな感じです(´・ω・`)これを機にもっとScalaが広まって、さらなる上級者向けの本もでるようになるといいですね!

モテるScala女子力を上げたい人向けにScalaの本が出ます。
『オープンソース徹底活用 Scala実践プログラミング』が6/16(木)に出版されます
『オープンソース徹底活用 Scala実践プログラミング』についてあれこれ