Mooseは「使いやすいオブジェクト定義ツール」じゃないよ。MooseはPerlにおける「オブジェクト指向の革命」ですよ。
http://dann.g.hatena.ne.jp/dann/20080814/p2
http://d.hatena.ne.jp/fbis/20080814/1218689670
http://d.hatena.ne.jp/a666666/20080813/1218628821
http://anond.hatelabo.jp/20080621124021
ぶっちゃけ"has"が使えるとか、勝手にnew()を作ってくれるとか、そういうことはどうでもいいのです。Mooseが革命児たる所以はオブジェクトの初期化・クリーンアップ・メソッドのコールチェインをPerlという言語において初めて(呼び出される順番とか、そういう意味で)を「正しく」実装しているのと、Roleという概念を実用化したことによって継承ツリーではなく、機能ベースの設計ができるようにしてくれ、我々が陥りがちなものすごく深い継承関係等を完全に抹消してくれるというところです。
それと、既存のシステムに加えられない、というのものナンセンスだ。Mooseは上記にもちょっと書いた深い継承関係とか、そういう実装的な依存のあるCatalystのようなシステムに直接放り込む事はできないが、シンプルな拡張等にはClass::Accessorベースのシステムでもシームレスに使える。
Class::MOPもどうでもいい。普通のユーザーは使わないもん。俺はライブラリを提供する側として今がりがり使おうとしているけど、それ以外使う必要はほとんどないよ。MOPはライブラリ提供者用の超便利機能だけど、ユーザーが意識する必要はない。
敢えて言おう。在る程度年期の入ったPerlユーザーでMooseを使えないツールだと言っている人はMooseの本質を取り違えている。Mooseをただのオブジェクト定義ツールと思っているから使えないのだ。Mooseはプログラミング・パラダイムです。
Mooseは今までPerlで定義できなかったクリーンなOOを可能にしてくれる。設計、実装、その他において、考え方がかわります。一度ちゃんと使い込むといいよ、ほんと。
ただ、みんな使え、っていうのも違う。本質を分かった上で使わない、という判断をしていただきたい、というところ。なんせパラダイムシフトしないといけないから。
コメント