【Perl】MooseX::Declareで、Mooseをより手軽に

投稿日: / 更新日:

この記事は2年以上前に書かれたものです。情報が古い可能性があります。

Mooseでは、オブジェクトのプロパティ(Mooseではアトリビュートといいます)の型チェックは簡単に記述することができるのですが、一方でメソッドの引数については、従来のPerlサブルーチンの実装と同じため、自前でバリデーションを実装する必要があります。

以下は、”モダンPerl入門”(翔泳社)に掲載されているEchoサーバの実装例に、引数のバリデーション処理等を加えたものです。バリデーションについては、MooseX::Params::Validateを使用して、できるだけ少ないコード量で実現したつもりですが、全てのメソッドの入り口に似たようなコードを書くことになり、いまいち冗長さが拭えない感じです。

さて、この度読んだ”Modern Perl”という電子書籍で、MooseX::DeclareというCPANモジュールがあるのを知ったのですが、これを使用すると、メソッドに(C++やJavaなどと似たような)シグネチャを付与することができます(メソッドのオーバーロードができないので、実際には似て非なるものですが…)。これにより、メソッドが受け取った引数のバリデーションを宣言的に記述できるようになります。以下は、このモジュールを使って書き直したコードです。

ご覧のとおり、methodというキーワードの後にメソッド名と引数の型、及び受け皿となる変数名を記述することで、C++やJavaなどのように、引数が自動的にその変数へ代入され、同時に型のチェックが行われます(ついでに、クラス定義にclassというキーワードが使えるようになり、名前空間の始末や不変化なども自動的に行ってくれます)。これで、お決まりのコードを書く必要がなくなり、コードも大分すっきりしました(ちなみに、Mooseではアトリビュートのアクセサ/ミューテータすら記述する必要がありません)。このモジュールを使用することで、Mooseでのプログラミングがより一層ラクに行えそうです。

以上、Perlに関する簡単な情報をご紹介しました。

Hinemos導入はアトミテックにお任せください

見積もりを依頼する

最新情報発信中

Xやメルマガでも、Hinemosの保守、
開発、導入、構築やカスタマイズ等の
お役立ち情報を発信しています。
是非ご登録ください。