21日目: プラグイン

昨日は、Ark アプリケーションの国際化とローカライゼーションのしかたを学びました。再度繰り返しますが、gettext 標準とたくさんのヘルパーのおかげで、Ark ではこの作業は本当に楽です。

今日は、プラグインは何ができ、プラグインに何をまとめることができるのか、何のために使うことができるのかについて説明します。

Ark プラグイン

今日までで Jobeet.pm のプラグインロード部分は

use_plugins qw{
    Session
    Session::State::Cookie
    Session::Store::Model

    I18N
};

このようになっていることでしょう。これ以外にも様々なプラグインがあります。

プラグインは Ark のコンテキストオブジェクト ($c) を拡張したり、ディスパッチフックで自動的に何らかの処理をしたりするという機能を持ちます。

Session プラグイン

セッションプラグインはすでに使用しています。これは $c->session というメソッドを増やし、さらに、$c->session が返すオブジェクトは Session::* プラグインによって拡張されます。 この、State と Store の組み合わせで Ark は様々はセッションに対応することができます。

Authentication プラグイン

認証を扱うプラグインです。これはまだ使用していません。 セッションプラグインと連携し、データベースのユーザーとセッションをひもづけたり認証を便利に扱う機能が提供されます。

こちらは Session プラグイン同様、$c->auth というメソッドを増やし、そしてそのオブジェクトを Authentication::* プラグインで拡張します。 つまりその組み合わせで様々な認証形式に対応できるようになっています。

Encoding プラグイン

Encoding プラグインは入出力の文字コードを変換するプラグインです。このプラグインは必ずどれか一つロードする必要があります。 開発者が明示的にロードしない場合は Encoding::Unicode がロードされます。

これはモダンな Perl 開発環境ではプログラム内部では Perl の utf8 文字列を使用するというルールに基づいており、Ark ではそのルールに自動的に従うよう設計されています。 Encoding プラグインが入力が utf8 になっていることを保証し、また use Ark することで use utf8 した効果も得られるようになっています。

I18Nプラグイン

昨日説明した国際化プラグインです。

プラグインの開発

このほかにも自分の用途にあったプラグインを作成したいと考えるかもしれません。 そうして作成したプラグインは是非 github などの公開レポジトリで共有してください。

現在では

などがあります。

また明日

プラグインの作成とコミュニティとの共有は Ark 公式サイトへのベストな貢献方法の1つです。これはとても簡単なので、Ark のプラグインリポジトリは便利で面白く、しかしおかしなプラグインで満たされています。