Movable Typeで画像を管理することのメリットのひとつに、MTタグによるサムネイル生成機能(MTAssetThumbnailURLタグなど)の存在があります。
この機能はユーザーが作成するウェブサイト・ブログのテンプレートだけではなく、管理画面でも使用されています。
Movable Typeは、一度作成したサムネイル画像のキャッシュファイルを作成することで、同じサイズのサムネイルが複数回生成されずにすむよう工夫されてはいるのですが、管理画面上でもアイテムまわりの操作が若干遅く感じるケースも多いのではないかと思います。
今回、このMovable Typeのサムネイル処理を、特定の条件下のみとなりますが、高速化するプラグインを作成しましたので公開します。
どうやってるのか?
このプラグインでは、サムネイルに関連する2つの処理の高速化を行っています。
ここでは簡単に仕組みを説明します。
ImageMagickの高速リサイズ
Movable Typeのデフォルトの画像処理ライブラリであるImageMagickには、実画像より小さいサムネイルを生成する場合、この処理を省メモリかつ高速に実行する方法が知られています。
ImageMagick限定となってしまいますが、この手法でリサイズを行うようMovable Typeの処理を上書きすることで、サムネイル作成時のリサイズ処理そのものを軽量・高速化しています。
画像データチェックの省略
現在のMovable Typeではアップロードされたファイルを、画像として認識するために、まず画像処理ライブラリに読み込ませることで、取扱い可能な画像であるか確認をとっています。
また、アップロードされた画像は、サーバ上にファイルとして保存されますが、サーバの運用次第では、管理者の意図しないところで変更を加えることもできますので、Movable Typeでは画像のサムネイルを扱う前に、再び画像処理ライブラリに読み込ませることで、確認をとり、意図しない画像が出力されることがないよう対策をとっています。
サーバ上の画像ファイルを管理者によって管理できる運用を行っている場合では、サムネイル処理のたびに確認を行うことを省略できるケースが考えられます。そこで、このプラグインでは環境変数(mt-config.cgi)の設定によって、この確認処理を省略する機能を実装しています。(デフォルトではこの機能は無効になっています)
プラグインの配布
このプラグインはMITライセンスにて公開されます。
https://github.com/m-logic/mt-plugin-fast-thumbnail
注意事項
このプラグインは無保証での提供となっています。動作そのものについて次の点にお気を付けください。
- リサイズの高速化にはImageMagickが必要です。他の画像処理ライブラリを使用している環境ではまずImageMagickを用意していただく必要があります。
- 使用するImageMagickによっては期待した動作にならない可能性があります。テスト画像のアップロードなどを通して動作確認を行うことをお勧めします。
- 互換性がある程度約束されているコールバックなどではなく、Movable Type本体の処理を上書きしていますので、将来のMovable Typeでそのまま使用できるかということについては難しくなる可能性があります。また、同様の実装を行っている他プラグインと同時に使用できない可能性があります。
- ダイナミックパブリッシングには対応していません。
さいごに
弊社では開発用のサーバを含め、サーバにアクセスできるユーザが限定されている環境で使っています。
使い方に気を配りつつとはなりますが、ぜひ使ってみてください。