TOP設計・移行・活用> フック機能の利用
SledgeによるWebアプリケーションフレームワーク入門
SledgeによるWebアプリケーションフレームワーク入門

第6回:さらなる活用のために
著者:ライブドア  池邉 智洋   2005/7/28
前のページ  1  2  3  4
フック機能の利用

   Sledgeの特徴として、あらかじめ指定された位置にフックという形で任意の処理をはさみ込む事ができます。フックを挿入できる箇所として以下の箇所が定義されています。
  • AFTER_INIT初期化完了時
  • BEFORE_DISPATCH dispatch_XXXを実行する直前
  • AFTER_DISPATCH dispatch_XXXを実行した直後
  • AFTER_OUTPUTコンテンツ出力直後

   実際のコードではPagesクラスのregister_hookメソッドを使用して、以下のように記述します。例えば、常にテンプレートに同じ変数を渡す処理は以下のようになります。

package ThinkIT::Pages::Hook;

use strict;
use Sledge::Pages::Compat;

__PACKAGE__->register_hook(
    BEFORE_DISPATCH => sub {
        my $self = shift;
        my $var = $self->get_variable;
        $self->tmpl->param(var => $var);
    },
);
アウトプットフィルター機能の利用

   Sledgeでは、生成されたコンテンツを出力前にフィルタリングして変更を加える事が可能です。またフィルターを複数適用する事も可能です。例えばHTML::StickyQuery(注5)を利用して、すべてのリンクに特定のパラメータを付与する処理は以下のようになります。

package ThinkIT::Pages::Filter;

use strict;
use Sledge::Pages::Compat;
use HTML::StickyQuery;

__PACKAGE__->register_hook(
    AFTER_DISPATCH => sub {
       my $self = shift;
       $self->add_filter(\&_filter);
    },
);

sub _filter {
    my($page, $content) = @_;
    my $var = $self->get_variable;
    my $sq = HTML::StickyQuery->new(keep_original => 1,abs => 0);
    return $sq->sticky(
       scalarref => \$content,
       param => {var => $var},
    );
}
※注5: IKEBE Tomohiro>HTML-StickyQuery
http://search.cpan.org/dist/HTML-StickyQuery/
Sledgeの今後

   Sledgeはオープンソースとして公開してから2年以上たちますが、現在もライブドア社の標準フレームワークとして使われています。またライブドア社以外での利用事例もいくつかあるようです。

   しかしドキュメントが少なく、利用までの敷居の高さが大きな弱点となっているので今後は公式なドキュメントの充実を進めていく予定です。またライブドア社内でのみ流通しているプラグイン、ヘルパー系のモジュールがいくつかあるので、それらのオープンソースでの公開を行なう予定です。

前のページ  1  2  3  4


株式会社ライブドア 池邉 智洋
著者プロフィール
株式会社ライブドア  池邉 智洋
ネットサービス事業本部 システムグループ マネージャー。2001年10月よりライブドア(当時オン・ザ・エッヂ)にて受託開発業務のWebアプリケーション開発に従事。2003年11月よりlivedoorのポータル化にたずさわり、各種サービスの開発を行う。個人的にCPANモジュールやApacheモジュールの公開も行っている。


INDEX
第6回:さらなる活用のために
  はじめに
  Sledgeのライフサイクル
  MVCの構成
フック機能の利用