プラグイン開発におけるMovable Typeの動的ページ生成の問題点

以前、Movable Typeでも動的ページはつくれるのでWordPressと同等である的なことをこのブログで書いたのですが前言撤回させていただきたく。

久しぶりにプラグインを書いて思い出しました。Movable Typeでは確かに静的ページも動的ページにも対応しています。Movable TypeはPerlで作られたソフトウェアなんですが、動的ページはphpダイナミックパブリッシングという名前で呼ばれており、これはphpとSmartyというテンプレートエンジンで実現されています。

これがプラグイン開発者にとって大きな障壁になります。デザインと関係のないプラグインなら関係ないのですがテンプレートタグやテキストフィルターを追加するプラグインの場合、静的ページ用にPerlのプラグインを、動的ページ用にPHPのプラグインを開発しないといけなくなるのです。

現実には公開されているプラグインの中にはPHP用のプラグインが作成されていないこともあり、そういう場合は動的出力時にエラーになってしまいます。

動的ページを使っていても、公開しない自分だけで使うプラグインであればphpだけ書けばよいと思ったりもしたのですが、ところがどっっこいそういうわけにもいかないのです。エントリのプレビュー画面や検索結果の表示などは静的ページとは言えないんですが、cgi、つまりperlで動くのです。なのでperl版もちゃんとつくってあげないと所々困ったことになるのです。

プレビューをphpでがんばって、検索はGoogleカスタム検索を使う・・・とかも考えたのですが、問題は複数言語を使っていることなので方向性としてはperlダイナミックパブリッシングを突き詰めたほうが良い気がしています。

さて、やりたいことに併せてMovable TypeかWordPressを選べばいいじゃんと書いたのですが、下記のような場合はMovable Typeは勧めづらいのではないかと思いました。

  • めちゃくちゃカスタマイズしたい(テンプレート拡張とかいっぱいしたい)
  • ページをたくさんつくる気満々で動的ページ生成が必要になりそう
  • PHP/Perl両方できるほどプログラマじゃない

実際にはいくつかの勘所をつかめばプラグインのPerl->PHPへの移植は簡単にできます。しかし、やっぱり面倒くさいです。やってるうちになんでこんな二重管理しないといかんの?と心が折れそうになります。ただ、そんな苦境にもめげずに俺はPerlもPHPも覚えたい!という人には勉強になるかもしれません。