「Functional Programming in Scala」を訳した「Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド」という本が出ます


わざと両方のタイトルをblogのタイトルに入れてみました(ながい・・・)
レビューに少しだけ関わりました。自分が翻訳したわけではありません。あくまでもレビューです



原著 Functional Programming in Scala


http://book.impress.co.jp/books/1114101091





作者達はおそらく訳されて今の時期にでることをあまり知らない?だろうから、知らせるのと感謝の意を伝えるtweet↓(そしてサンプルとしてFree Monadのページ)





分厚さ比較のための画像↓






全体的な内容や感想については、原著がまだMEAPの2年近く前に書いて、今も全体的な印象はだいたい変わってないので、そちらを見てもらえればと思います。



Functional Programming in Scala の感想




変わったところといえば、以前以下のようにtweetしましたが





なんとFree Monadの解説が増えたり、全体的に整理されたなどはありますが、それぞれの章の詳細な内容がどうというより、とにかく本の方向性が一貫しているので、その方向性に共感できるなら、とても読み応えがあって役に立つ本だと思います。



翻訳というか、原著が日本語になったこと、レビューに関わったこと、についてですが

  • 時間なくてレビューそれほど関われてなかった(全体をくまなく見れなかった)
  • けど、もとからそれなりに翻訳の質は高かった気がする?
    • ので、逆にある意味そこまで指摘する箇所がなかった(いくつか指摘したが)
    • ただ、時間の都合上、全部を詳細に見れたわけではないので、微妙な点残っていたらすいません(レビュワーのひとりとして)
  • 公式のgithubwiki https://github.com/fpinscala/fpinscalaエラッタのページがあり、それがある程度反映されてる。はずなので、もしかするとコードの間違いは原著より逆に少ないかも?
  • (普通のプログラマの方ではなく) 技術書などの翻訳の専門の方らしいですが、翻訳のスピードすごく速くてさすがだなーと思った(小並感
  • 英語版の原著持ってる人が、日本語版を買うべきか?はなんとも言えないので、各自本屋で立ち読みとかして(?)決めてください
  • 「英語なんて完璧にスラスラ読めるぞ!」という人は、今からでも別に原著だけ買ったほうが(よく半額セールやってる関係上)、セールのときに買ったら安いし、PDFでもすぐ手に入るし原著買えばいいのでは、という正直な身も蓋もない意見も書いておきます


あと、ついでにお知らせしておくと、原著のgithubの回答やwikiをまとめた(?)「コンパニオンbook」が出たらしいです。詳細は以下の原著者のblogを

http://blog.higher-order.com/blog/2015/03/06/a-companion-booklet-to-functional-programming-in-scala/



ところで、日本語訳の一番最後に以下のような文があります。

関数型プログラミングは深いテーマであり、本書はその入り口にすぎません。関数型プログラミングを自身の作業に取り入れるための一人旅を続けるのに必要な準備はすべて整っているはずです。よい設計は常に難しいものですが、コードを関数形式で難なく表現できるようになっていくでしょう。そして、より多くのプログラムに関数型プログラミングを適用する過程で、新しいパターンやより強力な抽象化を発見するはずです。

これからも楽しみながら学習を続けてください。幸運を祈っています。


確かにこの本を読むだけでも十分な力が身につくはずです。しかしある意味「入り口」にすぎないというか、まだまだ関数型プログラミングには、この本に書かれている以上に色々なものがあります。

この本には「エクササイズ」とよばれる練習問題があるのですが、すべてを真面目にやろうとすると、ときには単にライブラリを使うときには必要ないような、かなり自分自身で考えなくてはいけない問題が多く含まれています。

それらを真面目にやって、また先ほど紹介したgithubの答えのコード、ヒント、wikiのチャプターノート、もしくはそれらがまとまってるコンパニオンbookを読むことで、単に本書を読む以上にかなりの力が身につく、身に付けるための道筋が示されているので、多く勉強したい人にとっては、本の厚さ以上に、かなり頼もしい勉強のやりがいがあるものになっていると思います。
というわけで、このタイミングでつい先日コンパニオンbookでたの丁度いいですね。



ただし、最初から全部の問題を解きつつ読み進めようとすると、たぶん大抵の人は挫折する?ので、1度練習問題は飛ばして読んだ後、2回3回目はちゃんと練習問題解きつつ読むとか、ときには答えすぐ見てなんとなくだけ理解して先にすすむとか、そのあたりは各自工夫してください。




最後に、想定 Q & A

  • 電子書籍は出るのでしょうか? 電子書籍は出るとしたらいつ頃でしょうか?
  • 表紙はなんであんな感じで原著とだいぶ変えたのでしょうか?(原著者からも質問されてしまった・・・ https://twitter.com/runarorama/status/576640418697191424 )
    • 知りません。出版社の人に聞いてください
  • タイトルについて、なぜ原著の直訳ではなく「Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド」という長い感じになったのでしょうか?
    • 知りません。出版社の人に聞いてください