よなべPerl で Moo について喋ってきました

おはようございます。 若林(@nqounet)です。

先日、よなべPerlのゲスト講師として招かれましたので、Mooを使ったオブジェクト指向について喋ってきました。

よなべPerlとは

よなべPerlは、@hakata_oyukiさんが主催している、主にウェブアプリの開発に関するプログラミングの勉強会です。

未経験者からIT企業への就労、フリーランス希望の方まで対象にし現実的なアドバイスをしながら、webアプリケーション開発を通じてプログラミングスキルアップをしてゆきます。 よなべPerlとは : よなべPerl

Moo とは

Moo は、Perlでオブジェクト指向プログラミングをするときには、とても便利なモジュールです。

Moo is an extremely light-weight Object Orientation system. It allows one to concisely define objects and roles with a convenient syntax that avoids the details of Perl’s object system. Moo contains a subset of Moose and is optimised for rapid startup. Moo - Minimalist Object Orientation (with Moose compatibility) - metacpan.org

オブジェクト指向プログラミングで欠かせない継承だけでなく、委譲についても Moose や Mouse と同じような記述で、簡単に実装ができるようになります。

動作も軽いので、コマンドラインツールにも適しています。

Moo の簡単な使い方

MyApp.pm というモジュールに foo というアクセサを定義するには以下のようにします。

1
2
3
4
5
6
package MyApp;
use Moo;

has foo => (is => 'rw');

1;

このように定義した foo は以下のように使うことができます。

1
2
3
4
5
6
7
use strict;
use warnings;
use MyApp;

my $app = MyApp->new;
$app->foo('bar');
print $app->foo;

簡単でしょ?

勉強会の内容

今回の勉強会は、仕事でもお世話になっている、福岡のフィールズさんの事務所で開催しました。

内容としては、 Moo::Role を使った「委譲」をメインにしました。

資料はこちらです。

継承だけでは表現(実装)が難しいクラスの関係を、委譲を使ってどのように実装するのかということを、実際に委譲(というか Moo::Role )を使って作成したフレームワークを題材に喋りました。

フレームワーク自体は継承だけでも可能な構造になってしまったので、委譲の必然性には欠けてしまったのですが、実装例としては参考にはしていただけるのではないかなと思います。

これからプログラミングを勉強する方は、オブジェクト指向プログラミングを避けて通るのは逆に難しいと思いますので、 Perl で実装するなら Moo(::Role) を使って書いてみるのはいかがでしょうか?

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。