冥冥乃志

ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。

follow us in feedly

【書評】Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

id:kmizushima さんにいただきました。通称コップ本の第2版です。ようやく通読が終わりました。完全に書評としては出遅れてますが・・・、というか皆さん読むの速すぎです^^;
ページ数堂々の700ページオーバー。片手で持っているとFF3の学者にジョブチェンジしたような気分になります。有り体にいうと鈍器ですね。

で、本題。ScalaJVM上で動作する関数型+オブジェクト指向のハイブリッド言語です。TwitterAmazonで利用されているとのこと。Javaミドルウェアなどがそのまま利用できるという利点があります。詳細は下記で。

Wikipediaの説明:Scala - Wikipedia
公式サイト:The Scala Programming Language

ちなみに私、Delphi→(Java|Perl|COBOL|VBA)、趣味でPythonという手続き型どっぷりなプログラミング人生を歩んできました。Haskellも知らない完全な関数型言語バージンです。
その前提でこの本を通読をすませた印象ですが、他の言語を学んだ上でScalaを学び始めたいという人に向いている本、プログラミング初学者にはレベルが高すぎるのでは?と感じました。ページ数が示す通り、Scalaの言語仕様の深いところまで入って説明していますし、豊富なサンプルで関数型の入門としても非常に有用です。この辺りはさすが言語開発者が書いた本と言うべきところだと思います。
ただ、私が始めてプログラムを学んだ時のことを思い出すと、そこがプログラミング初学者のハードルをあげてる感じはします。プログラミング初学者が挫折しない本としては「動いた喜び」を積み重ねていく方が良いと思います*1
誤解がないようにしていただきたいのですが、Scalaがプログラミング初学者向けでないわけではなく、この本がそうではないのではないかという意味です。むしろ、プログラミング初学者として触れる言語にScalaを選択するのは十分にありだと思います。言語仕様が非常にシンプルですし、将来性もあると思います。これから色々と事例が出てくるのではないでしょうか。

本の構成・翻訳ともにすごく読みやすいです。
まず、非常に読みやすい日本語で書かれていること、これは大きいですね。どこの本とは言いませんが動物の表紙のものはたまに日本語でつまづいてしまいますが、この本に関してはそれがなく言語仕様の理解に集中することができました。
次にサンプルのリスト目次や用語集などの存在や、フォントなどの構成です。後でサンプルを探しやすかったり、本文を読んでいる時にフォントや背景色で何を書いているところかわかるというのは地味な仕事ですがありがたいです。

はっきり言うと「関数型言語まだよくわからないよ、先生」な状態です(写経まだできていませんし)。そんな中での関数型バージンの私がふれたScalaの印象ですが、コードが非常にすっきりしています。
型推論や言語仕様で省略可能なコード、並列処理の書きやすさ、コードをすっきり書くための仕掛けが至る所にあるという感じです。中盤以降のサンプルにループがほとんど存在しないのは、関数型の特徴でしょうか?手続き型どっぷりでループを基本に物事を考えていた頭には、まだまだ再帰を中心に物事を考えることは難しいようです。

Pythonに関しては完全に趣味の領域*2でしたが、Scalaに関しては実利用を目指しています。
今、ぼんやりと、バックエンドで大量のデータ処理を書くのに使えないかな、と思っています。写経を通じて色々試して、Scalaの可能性を探っていきたいと思います。
岡山にもScalaのコミュニティがあるので(http://tenryo-kurashiki-scala.appspot.com/?id=15001)、積極的に参加していく予定です。いずれ、コミュニティにも貢献できるようになれば良いですね。

*1:初学者が何を目的にし、どういう状態で学習を始めるかによって違うかもしれませんが。

*2:俺俺フレームワークを忘れた訳ではないんですがね・・・ちょっと進みは