ついに出た!最新Perlフレームワーク「Ark」徹底解剖

第2回Ark チュートリアル:基礎編

前回はArkの開発背景と機能概要を紹介しました。2回目からはもっと具体的に、Arkを使用した開発方法を紹介していきます。

今回は、Arkのインストール方法、そして簡単なHelloWorldアプリケーションの作成を通してArkを使用したアプリケーション開発の流れを紹介します。

Arkのインストール

まずは、Arkのインストールについて話をしていきます。

Perlのインストール

Arkは、Perlバージョン5.8.1以上が必要です。

お使いのコンピュータがMac OS XやLinuxで動作しているなら、おそらくすでにPerlがインストール済みのはずです。Windowsで開発する方は、Strawberry PerlActivePerlなどをインストールすると良いでしょう。

Arkのダウンロード

まず、ダウンロードページより最新版をダウンロードします。本稿執筆時点での最新バージョンは 0.001000_001(0.1rc1)ですので、それを元に説明します。

以下のようなコマンドでダウンロードし、ファイルを展開します。

$ wget http://cloud.github.com/downloads/typester/ark-perl/Ark-0.001000_001.tar.gz
$ tar zxvf Ark-0.001000_001.tar.gz

インストールする前にテストで動作確認

インストールする前にテストを走らせます。こうすることでArkがお使いのシステム上で正しく動作するかを確認することができます。

テストをするためには、Arkを展開したディレクトリ上で「cpan -t .」コマンドを実行します。

$ cd Ark-0.001000_001
$ cpan -t .

PerlやCPANの環境が整っていない場合、画面上にいくつか質問が出ると思います。その場合は画面の指示に従ってください。

その後、Arkのテストが実行され、最後に、

All tests successful.

という出力が出ていれば、Arkのインストールの準備が整ったことを意味します。

インストール

インストールするには「cpan -i .」コマンドを実行します。

$ cpan -i .

もし、CPAN の設定が不十分な場合、上記コマンドではエラーになってしまうかもしれません。

その場合は

$ sudo -H cpan -i .

を試してみてください。これで無事インストールが終われば、Arkのインストールの完了です。

おめでとうございます!

HelloWorldアプリケーション

それでは早速アプリケーションを書いてみましょう。

画面に「Hello World!」という文字を表示する簡単なアプリケーションを作りながら、Arkを使った開発の流れを見ていきましょう。

ark.plによるひな形作成

まずはアプリケーションのひな形を作成します。ひな形の作成のために、ark.plというコマンドがインストールされています。

HelloWorldという名前のアプリケーションを作成するためには以下のコマンドを実行してください。

$ ark.pl newapp HelloWorld
Creating directory HelloWorld
Creating HelloWorld/Makefile.PL
Creating HelloWorld/lib/HelloWorld.pm
Creating HelloWorld/lib/HelloWorld/Controller/Root.pm
Creating directory HelloWorld/root
Creating HelloWorld/t/00_compile.t
Creating directory HelloWorld/tmp

するとこのように HelloWorld ディレクトリが作られ、その中にアプリケーションのひな形が作成されます。

開発用組み込みウェブサーバー

このアプリケーションのひな形は、すでにArkアプリケーションとして動作します。動作の確認はArk組み込みのWebサーバにて行うことができます。

開発用Webサーバの起動にもark.plを使用します。

HelloWorld ディレクトリへ移動し以下のコマンドを実行してください。

$ ark.pl server
HTTP::Engine::Interface::ServerSimple : You can connect to your server at http://0.0.0.0:4423/

このようにアプリケーションディレクトリ以下で「ark.pl server」というコマンドで開発用Webサーバを起動することができます。デフォルトではlocalhostの4423ポートで起動します。

Webブラウザでhttp://localhost:4423/を開いてみてください。

図1 デフォルトのインデックス画面
図1 デフォルトのインデックス画面

このように「Ark Default Index」という表示がでていればひな形の生成、開発サーバの起動は正常に行われています。

デバッグモード

また、この開発サーバはデバッグモードで起動するための-d(--debug)オプションを持っています。このオプション付きで起動すると

$ ark.pl server -d
[debug] Loaded Path actions:
.-------------------------------------+--------------------------------------.
| Path                                | Private                              |
+-------------------------------------+--------------------------------------+
| /                                   | /index                               |
| /                                   | /default                             |
'-------------------------------------+--------------------------------------'

[debug] Setup finished
HTTP::Engine::Interface::ServerSimple : You can connect to your server at http://0.0.0.0:4423/

このように起動時にアクション・コントローラの一覧を表示したり、各リクエストの処理時に

[debug] "GET" request for "/" from "127.0.0.1"
[debug] Arguments are ""
[debug] Request took 0.001858s (538.213/s)
.----------------------------------------------------------------+-----------.
| Action                                                         | Time      |
+----------------------------------------------------------------+-----------+
| /index                                                         | 0.000179s |
'----------------------------------------------------------------+-----------'

というようなリクエストの詳細情報(リクエストURL・コントローラ・引数・処理時間)などを表示することができます。

また、このデバッグモードで動作中はブラウザ上でエラーの詳細な情報を確認することができます。

図2 ブラウザ上でのエラーのスタックトレース表示
図2 ブラウザ上でのエラーのスタックトレース表示

このようにリクエストの詳細情報を表示したり、エラー情報の確認ができるので開発中はつねに -d オプションを使用しデバッグモードで開発することをおすすめします。

また、ark.plはここで紹介した以外にもいろいろなコマンド、オプションを持ちます。

その詳細はドキュメントのヘルパースクリプトの項を参照ください。

ひな形アプリケーションのファイル構成

それでは、ここで一度ark.plコマンドで作成されたひな形のファイル構成を見てみましょう。アプリケーションディレクトリ以下のファイルは、下記のようになっています。

Makefile.PLアプリケーション用のMakefile.PL
lib/ライブラリディレクトリ。実際のクラスはここに置かれる
root/ドキュメントルート。テンプレートやcss/jsなど静的ファイルを置く
t/テストディレクトリ。テストファイルを置く
tmp/tmpディレクトリ。アプリケーションの一時ファイルを保存する

また、libディレクトリ以下のファイルは、

画像

このような構成になっています。

Arkは、Catalyst同様MVC(Model-View-Controller)という概念を採用しており、ロジック処理(Model⁠⁠、HTMLなどの出力のレンダリング(View⁠⁠、そしてURLに紐づけられたアクションからのModelやViewへのディスパッチ処理(Controller)と役割を分担させることで見通しが良いコードが書けるように設計されています。

ModelとViewについては次回詳しく説明します。

それではRootコントローラを見てみましょう。中身はこのようになっています。

package HelloWorld::Controller::Root;
use Ark 'Controller';

has '+namespace' => default => '';

# default 404 handler
sub default :Path :Args {
    my ($self, $c) = @_;

    $c->res->status(404);
    $c->res->body('404 Not Found');
}

sub index :Path :Args(0) {
    my ($self, $c) = @_;
    $c->res->body('Ark Default Index');
}

1;

Catalystアプリケーションのコントローラを見たことがある人にはこのファイルが何をしているのかすぐにわかるでしょう。 Arkのコントローラクラスの書き方は、ほぼCatalystと互換性があります。

Catalystを知らない人は、このRootコントローラ内の関数に:Pathなどの見慣れない文字がついているのに気がつくかもしれません。これを関数の属性と言います。この属性自体は、Perlの機能の1つです。Ark ではコントローラ内でそのような属性の付けられた関数を「アクション」と呼びます。

アクションには大きく

  • Pathアクション :URLパスを元にするアクション
  • Regexアクション :正規表現を使用しるアクション
  • Chainedアクション :鎖状に複数のアクションをつなぐアクション

があり、これらはすべてURLに紐づけられます。これらをまとめてパブリックアクションと呼びます。

これらのアクションの詳細はドキュメントのコントローラとアクションの項にまとめています。

Hello World!という出力を出す

それでは ⁠Hello World!」という出力を表示するにはどうしたらいいでしょうか。

トップページにアクセスしたときに実行されるのは

sub index :Path :Args(0) {
    my ($self, $c) = @_;
    $c->res->body('Ark Default Index');
}

という index アクションです。ここで

$c->res->body('Ark Default Index');

という処理がありますが、ここがレスポンスの本文を指定している部分です。つまりここを

$c->res->body('Hello World!');

と変更すれば良いということになります。

変更後、開発サーバを再起動してから再びページにアクセスしてみてください。

図3 Hello World! 出力
図3 Hello World! 出力

「Hello World!」という文字が表示されましたか? 表示されていれば、Hello World!アプリケーションの完成です。

コンテキストオブジェクト($c)

アクションには第二引数として必ずリクエストのコンテキストオブジェクト($c)が渡されます。このオブジェクトは、$c->request($c->req)にリクエストの情報を、$c->response ($c->res) にレスポンス情報を持ちます。

したがってリクエスト情報を得るには $c->request を参照し、レスポンスを返すには $c->response に値を入れてあげればいいということになります。

またコンテキストオブジェクトは処理を他のアクションに渡す $c->forward、$c->detach メソッド、複数のアクション間でデータを共有するために使用する $c->stash メソッドなどさまざまな機能を持ちます。詳しくはリファレンスマニュアルのArk::Contextの項を参照ください。

Ark の開発の流れ

Arkの開発の流れは

  1. ark.pl を使用してひな形の作成
  2. 必要に応じてark.plを使用してcontroller/model/viewのひな形を作成
  3. ひな形を修正
  4. 開発サーバでの確認

というステップの繰り返しで行います。このように、Arkは組み込みの開発サーバを持つためローカルで素早く開発・動作確認が行えます。

まとめ

今回は、HelloWorldアプリケーションの作成を通じて、Arkアプリケーションの開発工程の流れを説明しました。

次回はログインが必要な掲示板アプリケーションの作成を通してArkのより深い機能を紹介します。

おすすめ記事

記事・ニュース一覧