The Type Astronaut's Guide to Shapeless

先日Scala eXchangeに参加して、海外での予想以上のShapelessの人気ぶりを目の当たりにしたのでちょっと勉強してみようと思い、Underscore社が提供している「The Type Astronaut's Guide to Shapeless」という本を読んでみました。

Underscore社のWebサイトからは電子版を無料でダウンロードできますし、ペーパー版も有料でオーダーできます。また、ペーパー版はAmazonなどでも購入できます。

ちなみにこの本はオープンソースで原稿自体はGitHubで公開されています。

github.com

Shapelessはケースクラスやシールドトレイトを使った列挙型で表現される代数的データ型に対してHListと型クラスを使ってジェネリックなプログラミングを可能にするライブラリで、うまく使いこなせばJavaではランタイムリフレクションを使わざるを得ないような処理をタイプセーフに記述することができる非常に便利なライブラリです。

この本は実用的な例を題材にShapelessの基本的な使い方を説明していくというものなのですが、分量も100ページ程度と少なめですし、英語も平易かつコードも多めなので読みやすいです。Scalaに関する知識がそれなりにないと理解が難しいとは思いますが、Shapelessでこういう書き方をするのは何故なのか?ということが順を追って説明されているのでShapelessがどういうものかを押さえるには良いガイドだと思います。

ただ、Shapelessの機能やShapelessを使ったコードの書き方自体がScalaの制約から来ている部分が多く、読んでいて結構つらみを感じました。とはいえDependent TypesなどIdrisにも通じる部分もあり、個人的には興味深く読み進めることができました。面白いライブラリなので使う使わないは別として是非一度触れてみて欲しいです。