概要: kayac 謹製 Web Application framework の Ark に入門してみた
こんにちま、いつも心に Segmentation fault、悪い意味でプログラミングが恋人、 にゃるらこと岡村直樹(もうすぐ 23 歳)です。みなさん hack してますか?
まあいつものユヤタンパロディはいいとして、この度なんとなく Perl で Web Application を書きたくなったので、
というわけで、今日は Ark のさわりというか、hello worldを書いてみるよ!
Arkとは何か?
まず、最初、Arkとは kayac の @typester さんが中心となって作成されている、
- Catalyst like な Web Application framework です。
Catalystは 2011-02-12 現在、Moose ベースな framework となっていますが、
それに対しArkはAny::Mooseベースな framework になっています。
なんで、Any::MooseでMouseを使うようにし、ロードが重いモジュールを極力使わないようにすれば、
おそらくCGI環境でもそれなりに動作させられる framework だと思われます。
今のところArkは full stack framework ではなく、必要最低限のモジュールのみが実装されているので、
込み入った事をしようとすると自分でモジュールを実装する必要がありますが、
拡張はしやすいように実装されているので、そうは困らないかと思います。
まあArkの説明はこれくらいにして、次はArkのインストールの解説に行きたいと思います。
Arkのインストール
Path::AttrRouterのインストール
Arkは typester さん作のPath::AttrRouterに依存していて、
このPath::AttrRouterは CPAN に upload されてないので、
typester さんのリポジトリから直接Path::AttrRouterをインストールする必要があります。
で、以前ならば、
$ cpanm http://github.com/typester/Path-AttrRouter/tarball/master
でインストール出来たっぽいんですが、今は github の仕様が変わり、
cpanmを使ってダイレクトにインストールができないんで、
一旦 tar ball を落としてきて、そこからインストールします。
$ mkdir -p ~/tmp/path-attrrouter && cd ~/tmp/path-attrrouter $ wget --no-check-certificate https://github.com/typester/Path-AttrRouter/tarball/master $ cpanm -v ~/tmp/path-attrrouter/master
で、必要なライブラリがそろっているなら、上記でインストールできますが、 はいっていない場合には、とりあえず下記をインストールします。
$ cpanm -v Module::Install $ cpanm -v Module::Install::TestBase $ cpanm -v Module::Install::Repository $ cpanm -v Module::Install::AuthorTests
で、インストールが終わったら、次にArkのインストールに行きます。
Arkのインストール
必要なライブラリさえはいっていれば、Arkのインストールは割と簡単に行きます。
$ mkdir -p ~/tmp/ark && cd ~/tmp/ark $ wget --no-check-certificate https://github.com/typester/ark-perl/tarball/master $ cpanm -v ~/tmp/ark/master
で、インストールが終わったら、次はいよいよhello worldです。
Hello world! in Ark
Arkを使った Web Application で最低限必要になるのは、
app.psgi lib/MyApp.pm lib/MyApp/Controller/Root.pm
の三つです。他にもいろいろモジュールは使えるんですが、
とりあえず今回はシンプルなhello worldのみにとどめておきます。
で、先程述べた三つのファイルは大体こんな感じ。
app.psgi
use strict; use warnings; use MyApp; my $app = MyApp->new; $app->setup; $app->handler;
lib/MyApp.pm
package MyApp; use strict; use Ark; our $VERSION = '0.0001'; 1;
lib/MyApp/Controller/Root.pm
package MyApp::Controller::Root;
use strict;
use Ark 'Controller';
has '+namespace' => default => q{};
sub default :Path :Args {
my ( $self, $c ) = @_;
$c->res->status(200);
$c->res->body('Hello world!');
}
__PACKAGE__->meta->make_immutable;
で、この三つを適当はディレクトリに適切に配置した後、
plackupを使って、
$ plackup -I lib app.psgi
という感じで実行します。
そうするとlocalhost:5000でアクセスできるようになるので、
任意のブラウザでlocalhost:5000を開けば、
hello world!
と表示されます。
以上で終了です
というわけで、以上がArkを使ってhello worldするまでの道のりでした。
まあ正直言って、僕も昨日Arkを導入して触り始めたばっかりなんで、
細かいところはサッパリ分かってませんが、とりあえずhello world!はこんな感じです。
ま、Arkを使った Web Application はこれからArkについて調べながら作っていく、
という感じになると思いますが、Arkを使った実例については、
- Google Code Search で
use Ark;と検索するといくつか出てくるんで、 それを見ながら作ってみると理解が深まるかもしれません。
というわけで、今日はArkでhello world!してみるまでの道のりの話でした。