水曜日, 12月 22, 2004

Blogサーバーの要件

今日はBlogサーバーやトラックバックの仕組みをいろいろ調べていた。自作でトラックバックサーバーのようなものを作った人が「そんなに難しいものじゃないんですよ」と言っていたが、ファンクションを切り出してみるとそのとおりで、意外にシンプルだった。

トラックバックサーバーとは実のところ、アクセスカウンターを提供しているサーバーのようなものだ(少なくとも私にはそう思える)。トラックバックサーバーの機能要件は下記の3つに集約される。


  1. トラックバックPING URLをクライアントを教える機能
    これはエントリーのHTMLソースの中に、トラックバックPINGを受付けるURLを記述しているRDFタグを含ませること

  2. トラックバックPINGを受付ける機能
    トラックバック元はPOSTメソッドによってタイトル、URL、要約、トラックバックURLをを渡してくるので、それをDB等に格納する

  3. 受けたトラックバックの一覧を出力する機能
    エントリーごとに、受信したトラックバックの一覧を任意のフォーマット(HTML,RSS,JavaScript)で出力する



こうしてみてみると、Blogのエントリーで表示されているトラックバックは3の機能で出力されたものをインクルード表示しているに過ぎず、Blogのエントリ管理とトラックバックの管理は結構独立している感がある。tb-standaloneこんなのといった独立したトラックバックサーバーがあるが、スケーラブルなものを作るには収納先をDBにする必要がありそうだ。後者はDBに対応しているみたいだが、Perlができないと実装が難しそう・・・。

Blogサーバー本体に関する私の最大の関心事は、いかにエントリー作成を自動化するかということにある。懸念事項の一つであった、エントリーURLの事前予測不可能性はmt_entryのbasenameをいじってやることで解決できそう。一方、エントリーを流し込むには、XML-RPCを使う、ローカルファイルからAPIを使ってでDBに直接インポートしてしまう、またはDBに直接エントリーを流し込んでしまう、等の手段がとれることが分かったのだが、果たしてどれがよいのだろう?大量のエントリを流しこむときに、エントリ作成→記事ID取得→DBに接続してbasename書き換え、なんて処理を数百回も行うのは、はたして現実的なのだろうか?