2007年12月22日の投稿

2007-12-22
晴れ

画像があるときのページ分割

ゆりこ による 00:50:03 の投稿
カテゴリー: WordPressハック
タグ:

拙作の WordPress 携帯対応プラグイン Ktai Style は、携帯端末の表示容量に応じてページ分割する機能があります。しかし、分割位置は XHTML のサイズのみで決定していて、画像を埋め込んだとき (img 要素があるとき)、その画像サイズは考慮していません。

i-mode では、画像を含めたページサイズに上限があって、このサイズを「キャッシュサイズ」と呼んでいます。EZweb の WAP 2.0 (XHTML 対応) の場合は、XHTML のみのサイズ制限と画像を含めたときのサイズ制限、それぞれが存在します。前者は「9KB程度まで」と決められていて、後者は端末のメモリ容量によって異なるようです (3G だと100KB ぐらい)。SoftBank は、PDC 端末では画像を含めたページサイズが 6KB (4-3 シリーズ)、または 12KB (6-5 シリーズ) となっていますが、3G では 100KB 程度までに緩和されているようです。端末によってサイズが違うのは問題ないのですが、EZweb のように2種類の制約があるのはちょっと難儀ですね。

また、画像サイズを考慮したページ分割を行なおうとすると、画像1枚だけでキャッシュサイズを越えてしまう場合に困ります (分割できない)。画像を縮小する手がありますが、複数の画像があったとき、適切に縮小するのは非常に困難です。

そこで、Ktai Style の次期バージョンでは、以下のアルゴリズムで対応することにしました。

  • ページ分割位置は XHTML のサイズのみで決定する。(従来の方法)
  • インライン画像があるとき (画像に class=”ktai” を付与しているとき) は、画像サイズを取得して、端末に応じたキャッシュサイズを越えていないか確認し、越えていれば画像を alt 文字列に置き換える。

この方法だと、class=”ktai” が有効にならない場合があるという問題はありますが、どんな端末でも問題なく動作するという利点があります。3G 端末ならば、キャリア問わずキャッシュサイズは 100KB 程度ありますので、画像が文字列に置換されることはないでしょう。古い端末の場合、意図した表示にならないだけで。

ということで、バージョン 0.98 では、画像を埋め込んだテンプレートでも問題なく動作するようになりますので、利用者のみなさんには、上手に画像を使ったかっこいいテーマを開発していただければ、と思います。