第十七回 #渋谷java でScalaのマクロの紹介をしました

最近Scalaのライブラリを作っていて自分でマクロを書く機会があったのでScalaのマクロを簡単に紹介をしてみました。発表資料はこちらです。

www.slideshare.net

Lispはプログラム=データ構造なのでデータを操作する感覚でマクロを書くことができるのですが、Scalaではなかなか厳しいものがあります。Quillのようにマクロを活用したライブラリも出てきていますが、複雑なマクロは書くのもメンテするのもかなり大変ですし、scala.metaやマクロアノテーションなど将来的にどうなるのか不透明な部分があり、がっつり使うのは躊躇われる部分もあります。

Scalaでいきなり実用的なマクロを書こうとするとかなりハードルが高いので、マクロを学ぶことが目的なのであればまずLispを触ってみるのがよいかもしれません。ちなみに個人的にマクロに限らずLispには学びがたくさんあるので仕事で使うかどうかは別として全てのプログラマLispを学ぶべきであると思っています。