カヤックが中心になってオープンソースで開発しているPerlのWebフレームワークArk を使って、モバイルサイトを構築するための、便利なArk拡張モジュールをまとめて公開いたします。

ArkはCatalystというPerlのWebフレームワークを参考にしており、Catalystを使ったモバイルサイト構築にはMobileCatというプロジェクトが非常に参考になります。
今回のArk拡張モジュールは、MobileCatとその使用しているCatalystモジュールをArk向けに移植したものが多いです。

Arkを拡張する時の拡張方法の目安にもなるのではないでしょうか。

  1. Ark::Controller::MobileJP
  2. Ark::Plugin::MobileAgent
  3. Ark::Plugin::Session::State::URI
  4. Ark::Plugin::RelativeURI
  5. Ark::View::MobileJpFilter
  6. Ark::Plugin::Authentication::Credential::MobileID
順番に説明していきます。

1. Ark::Controller::MobileJP
http://github.com/typester/ark-perl/blob/284ab0ed1ca990804771a77d8755c7b601abae42/lib/Ark/Controller/MobileJP.pm

モバイルサイトでは、携帯のユーザーエージェントやIPアドレス、携帯の端末IDを使用して携帯か否か判断することがあります。
その機能を支援するためのモジュールです。

2. rk::Plugin::MobileAgent
http://github.com/typester/ark-perl/blob/284ab0ed1ca990804771a77d8755c7b601abae42/lib/Ark/Plugin/MobileAgent.pm

携帯のユーザーエージェントをパースし、機種情報を得るためのモジュールとして、HTTP::MobileAgent があります。
Ark::Plugin::MobileAgentは、Ark::Requestにmobile_agentメソッドを追加し、Ark::Requestから簡単にHTTP::MobileAgentを取得できるようにしたものです。

3. Ark::Plugin::Session::State::URI
http://github.com/typester/ark-perl/blob/284ab0ed1ca990804771a77d8755c7b601abae42/lib/Ark/Plugin/Session/State/URI.pm

一部の携帯キャリアの機種では、Cookieをサポートしていないものがあります。
このモジュールを使うと、Cookieをサポートしていない機種で、セッションの状態をリクエスト間で保持するために、URIの最後にセッションIDをつけます。

4. Ark::Plugin::RelativeURI
http://github.com/typester/ark-perl/blob/284ab0ed1ca990804771a77d8755c7b601abae42/lib/Ark/Plugin/RelativeURI.pm

携帯の端末IDを取得するために、次のArk::View::MobileJpFilterを通してHTML::StickyQuery::DoCoMoGUID を使用し、リンクにguid=ONをつけます。
HTML::StickyQuery::DoCoMoGUIDは絶対パスの場合、guid=ONをつけませんので、$c->uri_forで相対パスにするモジュールです。

5. Ark::View::MobileJpFilter
http://github.com/typester/ark-perl/blob/284ab0ed1ca990804771a77d8755c7b601abae42/lib/Ark/View/MobileJpFilter.pm

モバイルサイトの構築では、HTMLは3キャリア共通で書き、最後にHTMLを機種/キャリア毎に異なるフィルタにかけて出力する、という方法を使う場合があります。
このモジュールを使うとHTML::MobileJp::Filter を利用して上記のことを行うことができます。

6. Ark::Plugin::Authentication::Credential::MobileID
http://github.com/typester/ark-perl/blob/284ab0ed1ca990804771a77d8755c7b601abae42/lib/Ark/Plugin/Authentication/Credential/MobileID.pm

携帯の端末IDを使用してユーザー認証をする場合には、このモジュールを使います。