Acme::Youpy - Create your own youpy!
ネット中のそこかしこで目撃されているにもかかわらず、誰もそれが実際にはなんなのかを知らない……。Bus error吐いたり、寝返りで地震を起こしたり、窓の外で光ったり、youpyが人間に見えた人は、抽象化能力が高くてプログラマに向いていたり、怪しげなビデオを枕元においていったりする、謎の存在、id:youpy……。あまりにもわからなさ過ぎるので、もうこうなったらみんなで、俺の/私の考えるyoupyを作ってしまえばいいんじゃないかと思い、Google Codeを利用して、youpy作成プロジェクトを立ち上げた。
また、このyoupyの活動の様子をTwitterにて観察することができる。以下をご覧いただきたい。
youpyの使い方
以下、youpyの使い方を解説する。
まず、以下のようにして、svnリポジトリからコードをチェックアウトする。
$ svn checkout http://acme-youpy.googlecode.com/svn/trunk/ acme-youpy
youpyは設定ファイルに基づいてプラグインを読み込み、動作する。youpyの機能を実装した例として、現在のところ、ふたつのプラグイン(function)が用意されている。
設定については、exampleディレクトリ下に配された設定例を参考にしてほしい。
debug: 1 functions: - name: TimeTone config: username: username password: password - name: Shigo config: username: username password: password
functionsに、プラグインをname, configからなるハッシュの配列として記述すればよい。設定の詳細については、それぞれの機能を実装したモジュールのPODにあたっていただきたい。
$ ./youpy -c [設定ファイル]
として起動する。設定ファイルが指定されなかった場合、youpyと同一ディレクトリにある.youpyというファイルを読み込む。
youpyの作り方
以下、youpyの作り方を解説する。
前述の通り、youpyの具体的な機能は、プラグインによって実装される。全ての機能は、Acme::Youpy::Functionのサブクラスとして、Acme::Youpy::Function::というプレフィックスを付された形で実装されなければならない。
以下は、youpy実行時現在の時間を、Twitterに投稿する機能を実装したモジュールである。
package Acme::Youpy::Function::TimeTone; use strict; use warnings; use Net::Twitter; use POSIX qw(strftime); use base qw(Acme::Youpy::Function); sub execute { my ($self, $ctx, $config) = @_; my $twitter = Net::Twitter->new( username => $config->{username}, password => $config->{password}, ); $twitter->update(strftime("%Y/%m/%d %H:%M:%S", localtime)); } 1;
要するに、Acme::Youpy::Functionを継承し、executeメソッドにより、実際の機能を実装すればよい。そして、設定ファイルにしかるべく設定を書き込み、youpyを実行する。
なお、現在のところ、某Plaggerにて用意されているような数々のユーティリティのようなものは存在しないし、また、「それplaggerをyoupyにリネームすればできるよ」といった揶揄を受け入れる用意はない。
Join our project!
上記を参考に、それぞれで思い思いのyoupyを作るのも良いだろうし、より優れたyoupyを作るべくこのプロジェクトに協力してくださる方は、このエントリのコメント欄にてGoogleのアカウント名を知らせていただきたい。随時、プロジェクトメンバに追加する。