Scala 2のマクロ:Scala 3で廃止予定の機能(5)

Scala 3 (Dotty 0.26.0-RC1)
最終更新:2020年9月19日

[AD] scalapediaでは記事作成ボランティアを募集しています

この記事では、Scala 3において廃止されたScala 2のマクロについて解説します。

Scala 2のマクロは廃止されました

Scala 2のマクロ機構はScala 3においてはサポートされなくなりました。

もともとScala 2のマクロはexperimentalだったので、将来のサポートは約束されていませんでした。

Scala 3においては、2系のマクロのコンパイルはできますが、実行はできません。

Scala 3にマクロの正式版が導入されました

代わりに、新しいマクロ機構が導入されました。

2系のマクロよりも簡潔で安全に使用できるようになりました。

しかも、3系のマクロはexperimentalではありません。
正式版です。

これは嬉しいですね。
ぜひ積極的に使っていきましょう。

2系のマクロから3系のマクロへの移行は、技術的には概ね可能

すでに2系のマクロで実装されているコードは、3系のマクロへ移行することは可能でしょうか?

先行して移行したプロジェクトが複数あるため、技術的には概ね可能であることが示されています。

現段階では移行ツールは用意されていないので、移行するには多くの手作業が必要となります。

また、3系のマクロではクラスに対してpublicなメンバを追加するなどの安全でない操作が制限されているため、このような機能に依存している場合には、コード生成などの回避策が別途必要があります。

移行についての参考情報については、Scala Centerの移行ガイドにて詳しく提供されています。

サイト内検索