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

読了まで:約3分


概要: 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は 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!してみるまでの道のりの話でした。

#FIXME

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。
次に備えて待機中。

今は趣味でプログラミングをして
生活しています。