2007-03-06

BloggerPost 0.1.4 XML-RPC対応、ファンサカ記法などを実装

bloggerpost-0.1.4.tar.bz2

手元のマシンでMovable TypeとWordPressをインストールできたので、早速、BloggerPostのテストをしようと思ったのだが、なんと、WordPressではAtomでの投稿ができないことが分かった。ガーン。Movable Typeもソースコードを見てみると、Atomより、XML-RPCの方ができることが多い。まあ、これは分かっていたことだが。

WordPressは、日本では人気の面でMovable Typeの後塵を排しているものの、本国アメリカではNo.1の人気らしい。せっかく複数のブログサービスに対応したというのに、これでは、なんだか居心地が悪い。というわけで、XML-RPC対応を追加してみた。

しかし、「してみた」と言うのは簡単だが、実際は結構大変な作業だった。XML-RPC版そのものの実装はそれほど苦労はしなかったのだが、全体的にコードがAtom前提の作りだったので、これを修正するのが大変だった。ログやコマンドラインオプションも全部変更しなきゃならなかった。

XML-RPC版を実装してみて思ったのは、やっぱりAtomの普及はなかなか大変そうだなということ。XML-RPC版のAPIも拡張を繰り返していて、なかなか酷いキメラ具合なのだが、それぞれの関数は単純なので、サーバによって動作がズレることが少ない。Movable Type用に作ったもので、WordPressもTypePadもそのまま動いた。しかし、Atomのマルチ対応は、そんなに簡単じゃなかった。Atomの0.3 と1.0で違うところが多いし、まだまだ、0.3の実装が多い。しかし、同じ0.3でも、レスポンスのボディにどんなものが返ってくるか、各社まちまちで、新しいサーバーをテストするたびに、微調整しなければならなかった。HTMLのように、実装が標準に追い付くのに時間がかかるのだとすれば、気の遠くなるような話だ。

というわけで、今回のXML-RPC対応で、以下のサーバーで動作が確認できた。

  • WordPress
  • Movable Type(mt_atomでAtom版も一応使える)
  • TypePad(typepad_atomでAtom版も一応使える)
  • ココログ(TypePadと同じなので、ついでに)

確認はしていないが、XML-RPC対応しているサーバーだったら大体動くんじゃないかな。

それと、ついでにカテゴリー対応もした。Movable Typeのコードを見れたので、比較的簡単に実装できた。Atomでは、dc:subject要素を使えば良い。XML-RPCでは、mt.setPostCategoriesを使う。Movable Typeでは、タグとカテゴリーの併用ができる。

もう一つの新機能は、完全に趣味なのだが(いや、このBloggerPost自体趣味だが)、Yahoo! ファンタジーサッカーの自チームを簡単にブログに貼り付けられる機能。

Yahoo! IDがchatoraaichanzだとして、

bpyahoofs:chatoraaichanz:fp

と書くと,

位置選手チーム年俸fp
合計3億8900万63fp
GK松代 直樹G大阪4200万8fp
DF児玉 新清水3100万8fp
DF那須 大亮横浜FM2600万9fp
DFネネ浦和4000万7fp
MF遠藤 保仁(C)G大阪1億1500万12fp
MF成岡 翔磐田1200万-2fp
MF梶山 陽平F東京3000万1fp
MF安田 理大G大阪600万8fp
MF藤本 淳吾清水4300万6fp
FWマルケス横浜FM2800万3fp
FW平山 相太F東京1600万3fp

このようにテーブルで表示される。チームプロフィールは公開にしなければならない(でも、みんな、研究室を使うために、公開にしてるよね?)。記法の末尾のfpを消せば、テーブルのfpの部分も消える。年俸とfpは直近の結果から読みこんでいる。だから、リアルタイムで使わないといけないので、その点は少し不便。

あと、地味な機能だけど、bphttp記法というのを作ってみた。リンクをコンテンツのタイトルで置き換えてくれる機能だ。例えば、

bphttp://yu-u.blogspot.com/

と書くと、

<a href="http://yu-u.blogspot.com/">life is uneasy (for pancake)</a>

というHTMLに置き換えてくれるという機能。はてな記法に似たようなのがあったのでパクってみた。

しかし、そろそろフィルタは、ちゃんとHTMLをパーズして実行しないと駄目だね。ちょっといじる度に、デグレが怖くてビクビクしている。実はトラックバック機能実装のときに、概要を作るためにREXMLでパーズしているんだよね。色々な書式を許しているので、トラブルのが怖くて、本格的にREXMLを使うことは避けていたんだけど、BloggerはXHTMLしか受けつけないので、大丈夫なはず。できれば、Hpricotなんてのも使ってみたいのだが、あんまりgems に頼るとインストールが面倒臭くなるので、REXMLで我慢することにする。

UIの実装は難航している。やっぱり、UIは、やることが多い。なかなか、今までみたいにサクサク実装というわけにはいかないね。

0 件のコメント: