2007年5月10日

ダイナミック・パブリッシングで perl のプラグインを利用する

Movable Type のダイナミック・パブリッシングを利用する際、外部で配布されているMTプラグインの適用にあたっては制約があります。このエントリーではこれを解消する方法をいくつか紹介したいと思います。

ダイナミック・パブリッシングのメリットとスタティック・パブリッシングの併用

Movable Type のダイナミック・パブリッシング機能を利用することで、再構築処理が大幅に削減、あるいは不要になることについて、ご存知の方も多いと思います。これを利用すればブログでよくみかける「再構築に時間がかかる」とか「500エラーになる」という問題が減るかもしれません。*1

ただし、ダイナミック・パブリッシングはページ表示時にデータベースから情報を収集し、再構築を行なうため、アクセスが多いとその分サーバに負荷がかかります。「キャッシュ機能」や「条件付きGET」を利用すればこの問題を解消することは可能ですが、本来的にはアクセスの多いメインページやRSSフィードはスタティック・パブリッシング(静的なファイルを出力)にすることが望ましいと考えます。

特にレンタルサーバを使用する場合、この条件が重要になってきます。ダイナミック・パブリッシングはページ表示を PHP で処理するのですが、PHP が CGI で稼動するレンタルサーバでは、モジュール版で動作する場合よりレスポンスがやや遅く、サーバにも負荷がかかります。詳細は「PHP における「モジュール版」と「CGI 版」の比較 + WordPress の適用例」をご覧ください。

Movable Type の良い点は、アーカイブ別にダイナミック・パブリッシング/スタティック・パブリッシングを選択できることです。
先に述べたように、メインページやRSSフィードはスタティック・パブリッシングにし、カテゴリー・アーカイブや日付アーカイブ等をダイナミック・パブリッシングにするといった、アクセスに応じて柔軟な対応が可能です。

ダイナミック・パブリッシングの問題

ここからが本題です。そういう訳で個人的には Movable Type のダイナミック・パブリッシング機能は非常に優れていると感じているのですが、利用するにあたっては問題がひとつあります。それは

ダイナミック・パブリッシング対応のMTプラグインが少ない

ということです。ここで言う「MTプラグイン」は、変数タグ・コンテナタグ・条件タグといった、テンプレートに記述するMTタグを提供するものを指します。

ダイナミック・パブリッシングを行う場合、標準のMTタグは Perl で実装されたプログラムを処理するのではなく、PHP(Smarty)が動作します。Movable Type のインストールアーカイブに php/lib ディレクトリがあると思いますが、この配下にダイナミック・パブリッシング用のタグおよびグローバルアトリビュートのプログラムが配置されています。

したがって、MTタグを提供するプラグインをダイナミック・パブリッシングで利用する場合、標準のMTタグと同様に PHP の実装が条件となります(プラグインに php ディレクトリが存在すれば多分対応しています)。
現在、当サイトで公開している「Movable Type プラグイン一覧」で挙げているプラグインは 200 を越えていますが、多くのプラグインが対応していないのではないかと推測します(私自身然り)。またこれがダイナミック・パブリッシングがメジャーにならない要因のひとつでかもしれないと懸念しています。

前置きが長くなりましたが、この問題を解消する方法等についていくつか紹介したいと思います。同時にダイナミックパブリッシングに精力的に活動されているサイトも紹介させて頂きます。

1.MTIncludeタグを利用する

これは、ダイナミック・パブリッシングに対応していないMTタグを使ったリスト等を、一旦インデックス・テンプレートにモジュール(部品)として追加し、それをダイナミック・パブリッシングしたアーカイブから MTInclude タグ+ file 属性を利用して引き込むというテクニックです。

このテクニックは下記のサイトで詳しく紹介されています。

WingMemo」さんのところではダイナミック・パブリッシングに関する記事が多く掲載されています。ダイナミック・パブリッシングを検討されている方の手助けになると思いますので是非ご利用ください。

WingMemo

なお、このテクニックで作成したインデックス・テンプレートは必ず「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」にチェックを入れてください。
試しに MTCollate を使った「最近のコメント」を出力してみたところバッチリでした。

2.PHP化されたプラグインを利用する

あんちもん2.Lab」さんは、個人プロジェクトとして Perl 版プラグインをダイナミックパブリッシング対応にリファクタリング(PHPize)されているサイトです。

あんちもん2.Lab

これまでにもいくつかの既存プラグインをダイナミック・パブリッシング対応にされており、先の MTInclude で対応できないケースもこのリファクタリングで解決することができます。個人的には大変期待しておりますので、「このプラグインをダイナミック・パブリッシング対応して欲しい!」とお願いすれば作ってもらえるかもしれません。*2

3.Perl 版ダイナミックパブリッシングを利用する

The blog of H.Fujimoto」さんで配布されている、Perl 版のダイナミック・パブリッシングを利用することで、ダイナミック・パブリッシングに対応していないプラグインをそのまま利用することができます。

The blog of H.Fujimoto

ダイナミックパブリッシングの今後

サイトを訪問する側からすればストレスなくページが表示されることが好ましいので、全ページをスタティック・パブリッシングとするのが望ましいのですが、大量の記事を有するサイトでの運営の効率化を考慮すると、ダイナミック・パブリッシングは今後益々有効な手段として利用されていくのではないでしょうか。

私自身、サイトのダイナミック・パブリッシング化を検討していますし(それ以前に3.3にアップグレードしなければですが)、冒頭に述べたモジュール版 PHP がレンタルサーバ界に普及することが、Movable Type に限らず、ページを動的生成するブログがスタティック・パブリッシングに近づくための重要な要素のひとつであると思います。


*1:サーバのスペックによっては解消しない場合もあります。
*2:元サイトの配布プラグインのライセンスによっては対応できないものもあります。

Comments [7] | Trackbacks [1]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner


AMN
Categories
Monthly Archives
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3