今後のMTへの要望(その9・API関連)

Movable Type向けの開発を行う上で、「Movable TypeにこんなAPIがあれば」と思う場面もあります。
それらについてまとめます。

left joinへの対応

Movable Typeでは、データベースへのアクセスを独自のORM(Object Relational Mapper)を通して行うようになっていて、原則としてデータ操作の際にSQLを使いません。
そのため、SQLを知らなくてもデータベースにアクセスできるメリットがあります。
一方、SQLのすべての機能を持っているわけではないので、SQLなら簡単にできることでも、ORMでは簡単には行かないことがいくつかあります。

その1つとして、left joinに対応していないことが挙げられます。
「カテゴリに属さないブログ記事」や、「アイテムを結び付けていないブログ記事」を読み込みたい場合、left joinが使えれば簡単です。
しかし、Movable TypeのORMはleft joinに対応していないので、上記のような読み込みを行うには、かなり複雑なことをする必要があります。
left joinにぜひ対応して欲しいです。

サブクエリへの対応

SQLがらみの要望として、ORMでサブクエリに対応して欲しいという点もあげられます。

サブクエリが使えれば、複雑な条件を1つのSQLで処理できる場合が増えます。
SQLの発行回数を抑えれば、パフォーマンスもアップすることが期待できます。
Movable Typeの内部でも、サブクエリ的な処理を複数回のORMに分けている場面が多々ありますので、サブクエリ対応は効果が大きいのではないかと思われます。

Movable Type 4まででは、MySQL 4.0など、サブクエリに対応していないデータベースもサポート対象だったので、サブクエリは使えませんでした。
しかし、Movable Type 5では、サポート対象のデータベースが、MySQL 5.0以降等などのサブクエリ対応のデータベースのみになっているはずです。

コールバックの実行順序の特定

プラグインによっては、Movable Typeのシステムからプラグインを呼び出す仕組み(コールバック)を使う場合があります。

現状では、同じコールバックを複数のプラグインが利用する場合、優先順位を数値で指定するようになっています。
しかし、「必ず○○プラグインのコールバックが実行される前(あるいはされた後)」というように、他の特定のプラグインのコールバックに、実行順序が依存する場合もあります。
そこで、コールバックの実行順序をより明確に特定する機能が欲しいです。