YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

「Java開発者ための関数プログラミング」が出版されました

みなさま、ご無沙汰しております。1ヶ月以上ぶりのブログ更新となりました。Python界の情弱こと山口です。
この度、拙訳の「Java開発者のための関数プログラミング」という書籍がオライリー・ジャパンより電子書籍(ePub)で出版される運びとなりました。原著者はProgramming Scala(日本語版「プログラミングScala」)のDean Wampler氏。

<br />
Java開発者のための関数プログラミング
Dean Wampler 著、山口能迪、株式会社トップスタジオ 訳
フォーマット ePub

本書は、無理をしてJava関数プログラミングで実装してがんばろう、という本ではありません。一部そういうところもあるかもしれませんが、そういう方向は目指していません。あくまで関数型と呼ばれるものにはどういう概念がでてくるのか、それをJavaで関数型「っぽく」書いたらどうなるか、それにはどういう利点があるのか、なんかを概要レベルで説明した本です。
原著のページ数を見て分かる通り、非常に薄い本です。原著はたった90ページしかありません。なので既に関数型言語に触れている人には物足りないとおもいますが、JavaもしくはOOPしか触っていなくて、関数型言語を始める気力はないけど、なんとなく知りたい、という人にはいいのでは?と思っています。また参考文献も結構多いので、これをきっかけに本格的に関数型言語を使い始める方が増えるといいなあという期待もあります。*1ただこの本の内容は試みとしての要素が強い面もあるので*2、実際関数型でやるならば、本書にもあるように、はじめからそのように設計された言語を使われることをおすすめします。

本書の出版にあたっては、技術的な観点ふくめ、レビューをゆろよろ( @yuroyoro )さん、篠原さん( @itawasa )さん、 古瀬さん( @camlspotter )さんにして頂きました。Java特有の言い回しなどに関してはゆろよろさんと篠原さんのコメントが大変参考になりました。また、関数プログラミングに関連する内容に関しては古瀬さんより多大なる助言をいただきました。特に本書の肝である関数プログラミングに関する部分は、原著の解説がおかしい思われる部分もあり *3、その点をご指摘いただけたことに大変感謝しております。
この誤っている部分に関しては原著者であるDean Wampler氏に伝えます。著者の了解が得られていないため、現時点で日本語訳に反映出来なかったことが残念ですが、このブログも含め、どうおかしいと思うのか、本来はどうあるべきであるか、などをお伝えしたいと思っています。

また私の拙い日本語を何度もチェックいただき丁寧にご指摘くださった勝野さん、トップスタジオやオライリー・ジャパンの方々の助けがなければ本書は脱稿することができませんでした。特に遅筆な私に発破を掛けて下さった、トップスタジオの雨宮さんにはご迷惑おかけしました。そしてオライリー・ジャパンの瀧澤さんには日本語版の出版の企画をご提案いただいた事から始まり、公私に渡ってご支援下さったことに感謝しております。
日本語訳は、当初直訳すぎるとのご指摘を頂いた箇所もありましたが、なるべく一語、一文の持つ意味を崩さないようにすることを心がけました。

翻訳するきっかけは、原著の第1章を読んで「これは面白そうだ」と思ったことだけでした。ほぼ勢いです。そんなきっかけから初めて商業書籍の翻訳をしたわけですが、自分の日本語力の低さに愕然とするばかりで、いま終えてみると市場に出ている翻訳本を見る目が変わりました。皆さん、本当に苦労されたんだろうなあと。多くの方々にサポート頂いて、なんとか出版することができたことに、改めて感謝致します。

個人的には今回の出版によってオライリーの書籍にBeepLoudとDJという単語を載せたことが最大の仕事だと思っています。どうぞお手に取って下さい。

追記 (2012.06.23 10:40)

上にもリンク貼りましたがこの書籍用のG+ページ作りました。「感想用スレッド」というのがあるので、そちらに書いていただいてもいいですし、TwitterGoogle+でハッシュタグ #fp4jd でコメント頂ければ反映していきます。

追記 (2012.06.21 10:39)

著作権法の関係上、すでに1年前に原著が出てしまっている状況なので今回の日本語訳出版の際に反映出来なかったことが残念ですが」という表現において、「1年前に原著が出ていること」と「著作権法」の間の相関がないため、今回の状況が起きている後者に関する記述を明確にしました。ご指摘いただきありがとうございます!

*1:自分自身がまだ初心者でもありますので

*2:実際Java 8に関して言及している箇所もある

*3:具体的には遅延評価と末尾呼び出し最適化に関する一部