先日Scala eXchangeに参加して、海外での予想以上のShapelessの人気ぶりを目の当たりにしたのでちょっと勉強してみようと思い、Underscore社が提供している「The Type Astronaut's Guide to Shapeless」という本を読んでみました。
Underscore社のWebサイトからは電子版を無料でダウンロードできますし、ペーパー版も有料でオーダーできます。また、ペーパー版はAmazonなどでも購入できます。
The Type Astronaut's Guide to Shapeless
- 作者:Gurnell, Dave
- 発売日: 2017/05/04
- メディア: ペーパーバック
ちなみにこの本はオープンソースで原稿自体はGitHubで公開されています。
Shapelessはケースクラスやシールドトレイトを使った列挙型で表現される代数的データ型に対してHListと型クラスを使ってジェネリックなプログラミングを可能にするライブラリで、うまく使いこなせばJavaではランタイムリフレクションを使わざるを得ないような処理をタイプセーフに記述することができる非常に便利なライブラリです。
この本は実用的な例を題材にShapelessの基本的な使い方を説明していくというものなのですが、分量も100ページ程度と少なめですし、英語も平易かつコードも多めなので読みやすいです。Scalaに関する知識がそれなりにないと理解が難しいとは思いますが、Shapelessでこういう書き方をするのは何故なのか?ということが順を追って説明されているのでShapelessがどういうものかを押さえるには良いガイドだと思います。
ただ、Shapelessの機能やShapelessを使ったコードの書き方自体がScalaの制約から来ている部分が多く、読んでいて結構つらみを感じました。とはいえDependent TypesなどIdrisにも通じる部分もあり、個人的には興味深く読み進めることができました。面白いライブラリなので使う使わないは別として是非一度触れてみて欲しいです。