カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

kayacのArk入門 - Hello world for Ark-perl

概要: kayac謹製Web Application frameworkのArkに入門してみた


こんにちま、いつも心にSegmentation fault、悪い意味でプログラミングが恋人、 にゃるらこと岡村直樹(もうすぐ23歳)です。みなさんhackしてますか?

まあいつものユヤタンパロディはいいとして、この度なんとなくPerlでWeb Applicationを書きたくなったので、 kayacが中心になって作成しているWeb Application framework、 Arkに入門してみました。

というわけで、今日はArkのさわりというか、hello worldを書いてみるよ!

Arkとは何か?

まず、最初、Arkとはkayacの@typesterさんが中心となって作成されている、 Catalyst likeなWeb Application frameworkです。

Catalystは2011-02-12現在、Mooseベースなframeworkとなっていますが、 それに対しArkAny::Mooseベースなframeworkになっています。 なんで、Any::MooseMouseを使うようにし、ロードが重いモジュールを極力使わないようにすれば、 おそらく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 Searchuse Ark;と検索するといくつか出てくるんで、 それを見ながら作ってみると理解が深まるかもしれません。

というわけで、今日はArkhello world!してみるまでの道のりの話でした。