« MovableTypeのモブログ化(2) | メイン | ハンディカムのハイビジョン映像をDVDに »

MovableTypeのモブログ化(3)

引き続いてムーバブルタイプのモブログ化の記事です。条件や前提などに関しては、前の記事を辿ってご覧ください。前回から暫く時間が空いてしまいましたが、本日の夜半から実装に取り掛かり、朝方にほぼ完成してテストを終えました。以下、ソースコードを横目に実装の経過を追っていきます。

まず、メールをトリガにするところは前回の記事の段階で済ませてありました。モブログ投稿用のメールアドレスにメールが送信されると、Postfixは同じサーバ上の.phpスクリプトにメールの内容をパイプで渡します。.phpスクリプトから見ると、php://stdin の入力にメールの内容が渡されます。

まずはメールの内容を確認します。

  • boundaryがあるか?あれば、メールをboundaryで分割
  • boundaryがなければ、プレーンテキストのメールとみなして本文を取り出す
  • boundaryがある場合、boundaryで分割されたContent-Typeをチェックして、本文始め各添付書類に分ける
  • 添付書類がある場合、MovableTypeが動作する別サーバにリソースを置かなくてはならない。これは、スクリプトからftpを呼び出してリソースをアップロードする
ここまで難しいところは全くありませんが、メールの書式(例えば RFC2047:encoded-word の構文など)の知識は必要です。メールの解析が終わったら、その整合性をチェックします。おかしな(もしくは想定していない)Content-TypeのMIMEが送信されてきていないか?空メールが投稿されていないか?などに関して、動作させたい条件に合わせて厳重にチェックを行います。更に、改行文字を改行タグに変換する・添付書類を呼び出したりするためのHTMLタグ挿入など、本文の整形を行います。

続いて、整形した内容のムーバブルタイプへの投稿ですが、普通は XML-RPC APIを使用して送るのだと思います。が、今回は時間がありませんので、直接他のサーバにあるMovableTypeのmt.cgiを、httpで叩くことにしました(※APIが用意されていれば、それを使用するのが通常のアプローチだと思います。今回の当方のやり方はイレギュラーですが、XML-RPC APIを調べる時間が惜しかったのです)。こちらも、それほど難しくはありません。習得している技術への習熟や慣れ次第だと思います。が、もし今後CMSの用途でMovableTypeを拡張する今回のような案件があれば、その時は予算と時間を用意してXML-RPC APIを使用したアプローチを取るつもりです。

投稿をした後は、MTの再構築が必要になります。これも、XMLRPC-APIを使用すれば、再構築を指示するメソッドがあるのでしょうが、ここまでXML-RPCを使わなかった以上、やはりhttpでmt.cgiを叩きます。これで、ムーバブルタイプのモブログ化が完了しました。

最後に、どうもXML-RPCを使う気にならなかったのは、ajaxやPEARなどもそうですが、その使い方を覚えなきゃならない時間が惜しいのと、便利なものを使ってしまうと、それがなくては何も出来なくなってしまったり、根本的な深い理解に繋がらず、応用が全く利かなくなってしまう(んじゃないかと思ってしまう)からです。そんなわけで、当方はフルスクラッチの開発がほとんどです。第三者の可読性や開発効率を考えると、ライブラリ群を使うほうがいいのかもしれませんが。

About

2009年01月31日 06:59に投稿されたエントリーのページです。

ひとつ前の投稿は「MovableTypeのモブログ化(2)」です。

次の投稿は「ハンディカムのハイビジョン映像をDVDに」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。