むやみにDevel::Declareを使うのはたしかにお勧めしませんが

その一方で、gfxさんの指摘は、氏が関与しているMooseすらも引きずり落とすものなんじゃないかしら。

確かにこのような構文は魅力的ですが,これはもはやPerlではなく,RubyJavaへのあこがれが生み出したPerlの方言としか言いようがありません。もし使うとしても,これらがプリプロセッサであるということは留意したほうがいいいでしょう。

Perl6のSYNOPSIS 12あたりを読んでもらえばわかると思いますが、これらはRubyJavaというより、Perl6的ななにかを実装するためのひとつの通過点、と見た方がよいでしょう。

もちろんMethod::SignaturesにしろMooseX::Declareにしろ(あるいはMooseにしろ)、Perl6そのものではありません。あくまでもPerl5の枠組みのなかで、Perl6の一部の機能に似たものを実装しているだけです。

そのとき、たまたまDevel::Declare(や、そのフロントエンド)はPerl5に古くから備わっているフィルタAPIを利用し、Moose(や、そのバックエンド)は、メタオブジェクトを構築する、というやり方を取っているわけですが、そのメタオブジェクト方式にしたところで、make_immutableする際のインライン化をどう行っているか(また、そのmake_immutableがどれほど推奨されているか)を考えてみれば、処理を行っているフェーズが微妙に異なる、という程度の違いでしかありません。

その昔、YAMLにSpiffyというソースフィルタ系のモジュールが入ったときには侃々諤々の大騒ぎになりましたが、その後Plaggerなどで採用されて国内では根強い人気を誇っているTest::BaseにはいまだにSpiffyが使われていますし、おそらくいま、それを問題にしている人はいないでしょう。

Devel::Declareやそのフロントエンドも同じことです。いまの時点では、連載第10回の最後に書いたように、search.cpan.orgなどの対応が行われていないので、パッケージとして認識されないとか、use strictされていない低品質モジュールとして扱われかねないといった問題点が知られていますが、Mooseがいまさまざまなところで特例扱いされ始めているように、この調子でユーザが増えていけば、おそらく近い将来、Method::SignaturesやMooseX::Declareも特例扱いされる日がくるんじゃないかと予想されます。

個人的にはgfxさんがそう書いた気持ちもわからないではないですが、こういうのはなんのコンテキストもなしに登場しているわけではないですよ、ということで。