Movable Type 5でのプラグインの互換性

Movable Typeが5にバージョンアップするのに伴って、プラグインの互換性の問題が気になるところです。
そこで、まだ細かく調べきれてはいませんが、互換性の問題になりそうな点を紹介します。

なお、今日の話は一般論で、個別のプラグインの互換性の話ではありません。
当サイトで配布しているプラグインの動作確認については、後日にまとめて公開する予定です。

1.管理画面カスタマイズ系プラグインの問題

Movable Type 3から4のバージョンアップの際には、管理画面のテンプレートの構造が変わりました。
また、構文も変わりました(PerlのHTML::Templateから、Movable Typeのテンプレートに変化)。
そのため、管理画面をカスタマイズするタイプのプラグインが、のきなみ動作しなくなってしまいました。

一方、今回のバージョンアップでは、3から4のバージョンアップの時と比べると、管理画面に関する内部的な変更は、それほど大きくありません。
拙作のプラグインをいくつかMovable Type 5で試してみたところ、正しく動かなくなるプラグインもありましたが、3から4の時ほどは、修正に手間取らずに済みそうです。
また、修正なしでほぼ動いているプラグインもあります。

2.MT標準のテンプレートタグの処理

これまでのMovable Typeでは、標準のテンプレートタグの大半の処理は、「lib/MT/Template/ContextHandler.pm」の1つの大きなモジュールに記述されていました。
一方、Movable Type 5では、ContextHandler.pmがタグの種類毎に複数のモジュールに分割されています。
特定の種類のタグしか使わないようなテンプレートであれば、再構築の際に読み込むモジュールが少なくなりますので、再構築の速度向上に幾分寄与すると思われます。

一方、ContextHandler.pm内のサブルーチンを直接に利用していたプラグインは、そのままでは動作しなくなる場合があります。
当方で試した例だと、このことが原因で、メールフォームプラグインでメールフォームテンプレートの再構築時にエラーが出るようになりました。

3.データベースの変更箇所は少ない

Movable Type 5では、新たに「ウェブサイト」「テーマ」「カテゴリ毎のカスタムフィールド」「履歴管理」等の機能が追加されました。
しかし、それに伴うデータベースの変更箇所は、意外と少ないです。
MT4.3とMT5βを比較してみると、新しく増えたテーブルは、履歴管理用のテーブルだけです(mt_entry_revとmt_template_rev)。

ウェブサイトは、内部的にはブログから派生したクラスになっています。
保存先のテーブルはブログと同じ(mt_blog)になっていて、ウェブサイト専用のテーブルはありません。

テーマはプラグインの一種のような形になっています。
そのため、テーマに関するテーブルもありません。

また、カテゴリ毎のカスタムフィールドの機能では、カテゴリとカスタムフィールドの関係は、カテゴリのmeta情報用テーブル(mt_category_meta)に保存されています。

これまでのMTでも、データベースアクセスがオブジェクト化されていたので、データベースの構造が変化しても、プラグインが受ける影響は少なかったです。
今回も、データベース構造の変化に関係するトラブルは、あまり起こらないと思われます。