『Scala関数型デザイン & プログラミング - Scalazコントリビュータによる関数型徹底ガイド』(タイトル長い)を読んでいる。まだ読み終わっていないが、現時点での感想としては「最高の本だ!」という感じ。
Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)
- 作者: Paul Chiusano,Rúnar Bjarnason,株式会社クイープ
- 出版社/メーカー: インプレス
- 発売日: 2015/03/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
書名からはまったくうかがい知ることはできないが、こちらは『Functional Programming in Scala(以下FPinScala)』という書籍の日本語訳本である。
Functional Programming in Scala
- 作者: Paul Chiusano,Runar Bjarnason
- 出版社/メーカー: Manning Pubns Co
- 発売日: 2014/09/14
- メディア: ペーパーバック
- この商品を含むブログを見る
このFPinScalaは、かねてよりScalaコミュニティ内で非常に評価の高い本で、各地で読書会なども開かれている。 FPinScalaの内容については、まだMEAP版だった頃に書かれた吉田さんのエントリが詳しい。
実はぼくもこのエントリを読んでMEAP版を購入し、去年のScalaMatsuriでこんなLTをしていた。
www.slideshare.net
要するに英語苦手だけどGoogle翻訳とかいろいろ使えばそれなりに読めるよ、という内容で、この頃はわりと真面目に読んでいたのだけれど、結局途中で挫折した。 そんなぼくにとって、待望の翻訳版というわけなのである。
本書のテーマ
書影を見ると、大きく"Scala"と書かれているし、実際にコード例はScalaで記述されているが、前述の吉田さんのエントリにもあるとおり本書はScalaの言語そのものを学ぶには適していない。 本書のテーマは、Scalaを用いて関数型プログラミングを学ぼう、というものである。
Scalaは関数型言語とオブジェクト指向言語のハイブリッドだ、とよく評される。しかし、Scalaの関数型言語としての側面を強調した書籍はこれまでになく、だいたい世の中のScala使いはコップ本でScalaの言語を学び、次にHaskellなどを学んで関数型プログラミングの深みに入っていく、という流れになっていたんじゃないかと思う。 ぼく自身も、Scalaをある程度身につけたあとで、"すごいH本"などを読んではじめて「Scalaのあの言語仕様には関数型言語としてこういう意味があったのか!!」と気づいたりしていた。
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (45件) を見る
- 作者: Miran Lipovača,田中英行,村主崇行
- 出版社/メーカー: オーム社
- 発売日: 2012/05/23
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 580回
- この商品を含むブログ (67件) を見る
ちなみに、「Scalaで学ぶ関数脳入門」という本があって、Scalaで関数型プログラミングを学ぶための本のような気配があるが、これはどちらかというとJavaプログラマがScalaを学ぶための本、という感じで、あまり関数型プログラミングが強調されている本ではない。
オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門
- 作者: 株式会社テクノロジックアート,長瀬嘉秀,町田修一
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/13
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 340回
- この商品を含むブログ (32件) を見る
"FPinScala"が日本語で手軽に読めるようになったことで、Scalaを学んでいる人がその延長として関数型プログラミングを学びやすくなったのではないかな、と思う。
そういうわけで、本書の対象読者は、「Scalaをある程度学んだので、その流れで関数型プログラミングをさらに学んでいきたい人」といった感じになるだろうか。
本書の読み方
本書は、Scalaを使って関数型プログラミングを学ぶ本である。関数型プログラミングを学ぶには、とりあえず手を動かして実際のコードを書く、というのが一番の近道だとよく言われる。本書は、章の区切りなどに抱負な練習問題が用意されていて、これらの練習問題に取り組むことで実際に手を動かしながら学んでいくことができる。
練習問題のヒントや解答は書中には書かれていないが、これはGithubで公開されている。
ここには書中にあるサンプルコードなどもすべて入っているので、実際に動かしながらコードの内容を確認できたりもする。
本書は決して簡単な内容ではないが、こういったコード例を見ることで、じっくり関数型プログラミングを学ぶにはとてもよい環境が用意されているといえるだろう。
なにより、関数型プログラミングの基本的な考え方に対する実際の実装を、Scalaのコードで読める、というのが本当に素晴らしい......。