7月に「Scala逆引きレシピ」という本が翔泳社さんから発売されます。
この本は、その名の通り、Scalaでプログラミングをする際に「○○したい」という疑問から実現方法を調べるためのレシピ集です。もちろんScalaの基礎知識に関するレシピも豊富に取り揃えていますが、より実用的なレシピに力を入れています。たとえば、Scala本体だけでなく、以下のようなライブラリ、ツール、フレームワークなどを取り上げています。
- Scala IO、Dispatch、util-eval、SJSON、scalaxbといったライブラリやツール
- sbtの使い方、便利なsbtプラグインの紹介
- テスティングフレームワーク(ScalaTest、Specs2を中心にScalaCheckやScalaMockなどもカバー)
- Play 2.0、Akka 2.0を筆頭にScalatra、ScalaQuery、Casbah、sprayといったフレームワーク
ページ数も全部で600ページ超と相当なボリュームですが、上記のような各トピックはそれぞれにそれなりのページ数を割いており、Hello Worldレベルではなく、少なくとも実際にこれらのツールやフレームワークを活用するための足がかりとなる程度の情報についてはカバーしているつもりです。さらに、付録としてScala 2.10の新機能についても取り上げています。
Scala 2.10の新機能はもちろんですが、たとえばPlay 2.0にしても(Play for ScalaはMEAPですでにPDFを入手可能ですが)きちんと完成して発売される出版物で取り上げるのはこの本が世界初なのではないかと思います。
執筆のきっかけ
事の発端は昨年秀和システムさんから発売された「Scala実践プログラミング」という書籍です。
ちょうど業務にScalaを導入しはじめた頃で、実践的なScalaの書籍ということで非常に楽しみにしていたのですが、期待していた内容と違ってちょっとがっかり…という感じでした。そこで、自分たちのような元々JavaをやっていたプログラマがScalaを使い始める際に必要になる実践的な情報をまとめた書籍があったらいいのに、ということで翔泳社さんに相談させていただいたところ、逆引きレシピシリーズとして執筆させていただけることになりました。
あくまでこの書籍のターゲットは当時の自分たち、当時の自分たちが「こんな本があったらよかったな」と感じた内容を形にしたものです。
苦労したこと
もちろんこのボリューム、プロダクト数、さらには動きの激しいScala界隈の最新情報をキャッチアップする必要があったりなど、執筆は困難を極めました。
sbtなどは執筆に着手してから0.7→0.10→0.11と3つもバージョンが上がったのでその都度バージョンアップに対応したり、Playにいたっては一度1.2系で書き上げた原稿を丸ごと捨てて2.0系に書き換えたり、Unfilteredはいったん書いたもののScalatraなどと用途が被っているので削除したり(以前この日記で数回に分けて公開したUnfilteredのエントリはこのときのボツ原稿を元にしたものです)。紹介しているプロダクトにバグがあればレポートやパッチを送ったり、Scala 2.10の動向を調べるためにSIPを熟読したうえGitリポジトリのコミットログを追いかけたり…。
これまで単著、共著含めて何冊か書籍を執筆させていただいていますが、過去最高ダントツに疲れました。もうしばらく本は書きたくありません。なんか毎回言ってる気がしますが、今回ばかりは本当に心の底からそう思います。