Magnolia Tech

いつもコードのことばかり考えている人のために。

Scala 2.13対応の『Scala スケーラブルプログラミング 第4版』は、全Scala使いが買うべき一冊

Scalaの言語設計者であるMartin Odersky著『Scala スケーラブルプログラミング 第4版』が出版された。今回はScala 2.13対応ということで、全面的に書き直されたコレクションクラスに対応するための改版。

基本的な構成は前の版と変わらず、基本的な文法からオブジェクト指向関数型プログラミングまで一通り解説されていて、言語仕様を知るには必須の1冊。最初から最後までを読み切る、というよりは気になった言語仕様を知りたい時にまず開くと、だいたい答えが書いている、という期待で読む本(分厚いし)。

関数型プログラミング言語の解説書だけど、「モナド」のような概念的にちょっと理解が難しい要素は全然出てこないところも良い(モナドという用語も、全編を通してオマケ的に1回しか出てこない)。

あくまでプログラミング言語機能の解説書として、淡々と機能が解説されていく構成になっている。

ただ、言語解説書なので、この本で「Scalaに入門する」のはなかなかハードだし、テスティングフレームワークは一部触れられているが、sbtなどのツールチェーンの解説は無いし、WAFの解説もない(その代わり、なぜかデスクトップアプリケーションとしてのGUIプログラミングの解説は、ある)ので、その辺りを知りたい場合は物足りないかも。

入門者の方はまずは『Scala研修テキスト』や、『実践Scala入門』から入ると良いでしょう。

scala-text.github.io


また、原著の方はもうすぐScala3に対応した第5版が出版されます。こちらも翻訳されることを祈って、皆さんまずは第4版の日本語版を買いましょう!

オライリーから出ているScala本もScala3のリリースに合わせてアップデート、もうすぐ出版されます。こちらも期待。


文中で一点気になったところと言えば、124ページの脚注の演算子識別子の記載。

より正確に言えば、演算子文字は、Unicodeの数学記号(Sm)やその他記号(So)、英数字、括弧、角括弧、中括弧、シングル/ダブルクォート、アンダースコア、ピリオド、カンマ、バッククォート文字以外の7ビットASCII文字である。

この記載だと、演算子識別子には「Unicodeの数学記号(Sm)と、その他記号(So)が含まれない」と読めてしまうが、実際には利用可能です。これはつい最近まで公式ドキュメントのSyntax Summaryの記載が誤っていて、そのまま引用されているよう。

つい先日それを修正するPRを書いて、取り込まれましたところ。

github.com

現在公開されているドキュメントでは、元の分かりづらい記述ではなく、「使える文字を列挙する」形式に改められた。

www.scala-lang.org


初めてScalaを知って、『Programming in Scala』の初版の原著を買ったのは10年前だった気がする。Perlの次に覚える言語としてなぜScalaに興味をもったのか、そのきっかけはさっぱり覚えていないけど、Scala3のリリースなど、今でも活発に開発が続いているし、DDD界隈での評価も有る。当時思ったほどの普及はしていない気もするけど、所謂ギョームアプリケーションを書くには良い言語なのは変わらないんじゃないかと。