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

第1回 Arkって何だ? ―Ark が生まれるまで

この記事を読むのに必要な時間:およそ 3 分

Arkでできること

Catalystほぼ互換のURLディスパッチャー

Arkは,Catalystとほとんど同じ URL ディスパッチャーを持っています。

通常のWebアプリケーションフレームワークでは,URLとコントローラの結び付けを別途何らかの方法で定義する必要がありますが,Catalystの仕組みはコントローラを書くだけでそのURLが一意に定まるという点で優れています。

Arkでは,Catalystのディスパッチャーから以下の代表的なアクションのみを採用しています。

DispatchType::Pathリクエストパスベースのアクション
DispatchType::Regex正規表現によるアクション
DispatchType::Chained複雑なURLを実現するための特殊なアクション

Catalystとの違いは,この3つ以外のCatalystが特殊扱いをしているディスパッチャーをすべて廃止している点です。それらの特殊なアクションはすべてこれらの代表的な3つのアクションで代用可能なため,なるべくシンプルにするためにArkでは採用しませんでした。

セッション・認証

セッションや認証など,よく使う機能はプラグインとして提供します。

現在提供するプラグインは以下となっています。

Ark::Plugin::Authentication認証プラグイン
Ark::Plugin::Authentication::Credential::OpenIDOpenID認証
Ark::Plugin::Authentication::Credential::Passwordパスワード認証
Ark::Plugin::Authentication::Store::DBIx::ClassDBIx::Classを使用した認証
Ark::Plugin::Authentication::Store::MinimalHASHリファレンスに格納したデータを使用するプラグイン
Ark::Plugin::Authentication::Store::Model任意のモデルを認証データとして使用するプラグイン
Ark::Plugin::Encoding::Nullエンコーディングを未変換でアプリケーションに渡すプラグイン
Ark::Plugin::Encoding::UnicodeUTF8のエンコーディングをハンドリングするプラグイン
Ark::Plugin::Sessionセッションプラグイン
Ark::Plugin::Session::State::CookieセッションIDをcookieに保存するプラグイン
Ark::Plugin::Session::State::URIセッションIDをURIクエリに保存するプラグイン
Ark::Plugin::Session::Store::Memoryセッションデータをメモリーに保存するプラグイン
Ark::Plugin::Session::Store::Modelセッションデータを任意のモデルに保存するプラグイン

セッションは,セッションIDを保存する場所としてCookieとURIがサポートされ,セッションデータを保存するバックエンドにはCache::FastMmap,memcached,データベースなどさまざまなストレージを使用可能です。

認証プラグインはセッションプラグインの上に実装されており,現在はパスワード認証とOpenID認証をサポートしています。

モデル・ビュー

Arkでは組み込みでデータベースにアクセスするORマッパーや,テンプレートエンジンなどのライブラリを持ちません。その代わりに,CPANに登録されている膨大なモジュールを用途に応じて自分の好きなものと組み合わせて使用できるように設計されています。

この部分も次回以降詳しく説明します。

組み込みWebサーバ

Arkは開発スピードをあげるために組み込みの開発サーバを持ちます。ApacheなどのWebサーバを別途用意しなくても,Perlの動く環境さえあれば動作の確認が行えます。

また,開発サーバはデバッグモードで走らせるとコンソール上にデバッグに役立つさまざまな情報を表示したり,エラーが起きたときにブラウザ上でスタックトレースを表示したりなど,開発をサポートする機能も持っています。

まとめ

今回はざっくりとArkの概要を説明しました。興味のある方はぜひ使ってみてください。

次回からは具体的に Ark アプリケーションの作成方法を解説していきます。

著者プロフィール

村瀬大輔(むらせだいすけ,ハンドルネーム:typester)

1981年2月生まれ。2004年9月株式会社カヤックに入社。

カヤックでは自社サービス「こえ部」を担当する傍ら,ラボチームBM11に所属し「Ark」「nim」といったオープンソースプロダクトを開発。また「Shibuya.pm」や「YAPC::Asia」にスピーカーとして参加するなど,Perlプログラマとして活躍の場を広げている。