« Empty|メイン|さア…… »

2006
12 15(金)

自家(レンタル)サーバーモブログ(moblog)導入顛末3・ハマるポイントと課題

[ MovableType/Blog]

(前回:導入顛末2・揃えるべきもの

前回までのあらすじ:余裕綽々、ヒトサマのスクリプトを丸々流用して自分の手柄のように鼻息も荒くメールを送ったところイキナリエラーで弾かれるという屈辱に枕を濡らしたOGRE、果たして反撃はなるのか!?

と、それは冗談として、このエントリーでは実際にハマったポイントと、オリジナルのpost2blogをカスタマイズしたポイントについて語ります。

何が起きているのかそのままではよく分からないので、スクリプトのDumperを復活させ、更にいくつか追加しました。デバッグ文としてprintf文を仕込み、標準出力にログを落とすようにします。.forwardの設定を変更し、出力をファイルにリダイレクトしてログとします。
やれやれ。

苦心の甲斐があってエラーの原因を判別できました。また、いくつか使用上の不具合があったので順番に解決していくことにします。

ハマるポイント1:投稿時のパスワード
スクリプトにはMovableTypeのユーザーIDとパスワードを設定しておくのですが、少なくともMT3.3では、普段Webなどで使うパスワードと、APIを使う場合のパスワードが別になっているのです。そしてこのAPIパスワードは普通は空、「API使用不可」に設定されています。MTのユーザ設定画面からAPI用のパスワードを設定する必要があり、これをスクリプトに設定しておく必要があります。

ハマるポイント2:写真とテキストの順番
post2blogスクリプトは、モブログというより「メールによる投稿」を主眼としている所があります。なので、メールソフトから複数の写真を添付して「↑この写真は…」などとやれるようになっています。
技術的に言えば、このようなメールは複数のMIMEパートでできており、post2blogはこのパートを順番に処理するようになっているのです。
ところが、そうすると別の問題が発生します。今回の目的はモブログなワケですが、たとえばDocomo のi-Modeメールの場合、添付ファイルのMIMEパートは必ず本文の「後」になります。すると、写真が必ず文章の末尾に付いてしまうのです。モブログのイメージ的には写真が「前」にあった方がいいのでこれは問題です。
とりあえずの逃げではありますが、MIMEパートが2つ(画像+本文)であった場合には、画像を強制的に先になるように組み替えました。
その後、fromを見てdocomoからであることを判別して場合にのみこの処理をする、と変えてみました。

ハマるポイント3:スパム対策
メールアドレスを複雑にすればある程度の対策にはなりますが、万が一有効なアドレスにスパムが来た場合、post2blogの性質上、どんなメールであってもブログにエントリされてしまいます。これは困ります。
そこで、スクリプトに埋め込む形ではありますが、特定のメールアドレス(たとえば携帯)からのメールだけを処理し、他は破棄するようにしました。メールヘッダのFrom:を見て判断します。もちろん、メールアドレスが完全に漏洩した場合、DOS攻撃を受ける可能性はあり、その対策にはなりませんが、まあ、やらないよりはマシ、でしょう。

ハマるポイント4:画像イメージの処理方法
このブログの場合、アップする画像はJPEGで、画像サイズを640×480に変換、圧縮率を40~50%程度にして容量を節約しています。また、普段の投稿に使っているectoは、画像アップ時にサムネイルを作成し、ブログ本文にはサムネイルをアップすることで読み込みを軽くするようにしています(クリックで元画像を表示)。
同じ事をスクリプトで処理しようとすると、元の画像ファイルをそのように加工する必要があるのですが、いろいろ調べてもImageMagick(perlのI/FはperlMagick)という追加機能(パッケージソフト)を使うのが一番手っ取り早いようです。
ところが、このImageMagickというのが導入だけで35MBも容量をくらうという大食いツールで、ンなもん入れた日にゃレンタルサーバが容量不足でパンクしちゃいます。仕方ないので今回は導入をあきらめ、「できるだけ大きなファイルをアップロードしないようにする」という運用回避をすることにしました。
このサーバではPHPのGDがデフォルトで使えるようなので、表示時にGDで縮小表示するようにしてみました。若干サーバ負荷は上がるかも…。

ハマるポイント5:画像の表示方式
post2blogのオリジナル・スクリプトでは、表示される最大のタテサイズが固定され、表示時には縮小表示されるようになっています。元の写真がタテ写真でもヨコ写真でもタテ写真用のサイズが適用されてしまうので、ヨコ写真が投下された場合に対応させました。つまり、640*480を最大サイズとした場合、ヨコ写真の場合はヨコが640、タテ写真の場合はタテが640となるように縮小されます。
また、サムネイル用のファイル作成はあきらめましたが、他のエントリーとのバランスを考え、ブログ本文に表示する場合は100*133で縮小表示するようにしました。ファイルのサイズが大きい(640*480で60Kぐらい)のが問題ですが…。

投稿者 ogre : 2006年12月15日 11:30



トラックバック(0)

トラックバックURL: http://www.the5thdimension.jp/cgi-bin/mt/mt-my-mod_12_track_back_ogre.cgi/789

コメントする