現在Tumblrに関する3つのユーティリティ・サービスを提供しています。

Tumblr Tag Cloud Maker | Tumblrにタグクラウドを設置するスクリプト
Tumblr Thumnails | Tumblrのサムネイルを作成するスクリプト
Tumblr Binder | TumblrのRSSをBindして提供するサービス

サーバ引っ越しを機にこれらのサービスをメンテナンスしているのですが......タグクラウドサービスの継続は少し難しそうです。また、サムネイルサービスについても場合によっては機能を縮小することになるかも知れません。

非常に残念なのですが、ご理解いただければと思います。
終了/機能縮小の原因はTumblr APIの不調とユーザーのPost数の増加です。


Tag Cloud Makerの仕組み

タグクラウドを自前で作ろうと思った理由は、それまで出ていたサービスが非常に遅かった/重かったからです。それらのサービスがしていたのは、指定されたユーザーのAPIを叩いて頭から順に取得していき、全てのPostを取得できたらタグを解析してクラウドを作成して返す、という作業でした。そんなことをアクセスごとにやられたんではTumblrもたまらないでしょうが、APIを使ったマッシュアップを考えると確かにそれしか方法はありませんでした。

Tag Cloud Maker」での作業も大筋では違いがありませんが、ユーザーの全Postを取得する作業は登録時に一度だけ行ってDBに格納し、差分はバッチ処理で追加していくという仕組みになっていました。登録時にはコストがかかるけれども、タグクラウドの呼び出し自体は高速に出来るよ、ということです。デメリットは変更に極端に弱いということですが、それは速度と天秤に掛けて捨てることにし、その代わりにDBならではの機能(様々なルールでの呼び出し)を付加しています。


Tag Cloud Makerの継続が難しい理由

で、既存の登録済みユーザーについては今でもある程度動いていると思うのですが、新規ユーザーは恐らく殆ど登録不可能な状態になっていると思います。というのも、TumblrのAPIは現在非常に不安定な状態にあり、平均で10回に1回、酷いときには10回に4回程度の頻度でデータの取得に失敗します(503が返る)。また1ユーザあたりのPost数が増えたため登録時点で10,000Postを越えているユーザーも珍しくなくなり、結果、登録までに10分以上掛かるようになってしまいました。昔は30秒くらいだったんですが。差分の定期更新でも30分以上掛かる計算になります。

APIの組み立てや呼び出しを工夫したり、取得するPost数を制限したりといろいろ試してみたのですが、Tumblrでユーザごとのタグを吐いてくれるようなAPIが出来ない限り(それさえしてくれればAPIのマッシュアップだけで済むのに...)、これ以上は難しそうです。



Thumbnailsの仕組み

Thumbnails」はその名の通り、photoタイプのエントリだけをピックアップしてサムネイル表示するサービスです。似たようなサービスはたくさんあって、サムネイルを表示させるだけならAPIをマッシュアップするだけで簡単に作れます。APIにはtypeを指定してPostを取得するオプションがあるので。

しかし僕はただサムネイルを作成するだけではなく、それにタグと期間を加えたいと考えました。つまり、特定のタグが付いた特定の期間のPostをピックアップする感じです。Tumblrのまとめエントリなどで使用しています。

[Tumblr] Tumblr 2009年12月まとめ 【犬/猫】 - nplll: Mutter

タグだけならば、これもAPIのオプションを使って簡単に実現できるのですが、期間となると対応のしようがありません。ということでこの部分に関してはTag Cloud MakerのDBを流用しています。すなわち、APIではなくあらかじめ保存しておいたDBからタグと期間を指定してPostを抜き出しているわけです。

...というわけで、Tag Cloud Makerと同じ問題が生じます。

「機能の縮小」というのは日付指定機能の削除、です。


Thumnailsで日付を指定する他の機能はないのか

試してはいませんが、出来るかも知れないアイディアはあります。

例えばtype=photoで指定してAPIを頭から順に叩いていき、指定期間内のPostが取得できたら終了するような仕組みです。指定期間が古くなればなるほど、範囲が広くなればなるほど、表示に時間が掛かることになりますが、一応実現は可能です。tagオプションを併用すれば、僕がまとめエントリで使っているようなサムネイルなら作れそうです。

本当は公式API側で期間をしていさせて欲しいんですけど...多分無理でしょうねぇ。



Binderは特に影響はありません。

ちなみに「Binder」の方は仕組みがシンプルであるために、APIが不調であることを除けばさほど影響はありません。RSSを合成する際にTypeを指定する機能を追加した次バージョンをベータテスト中です。1週間ほどテストして問題が出なければ、リリースインの予定です。



今後の予定

「Binder」リリースインまでに何か妙案が浮かばない場合は、ひとまずTag Cloudはサービス終了、Thumbnailsは機能を削除したバージョンへの移行を開始することになります。

あーTumblrがなにか奇跡的なAPIの機能拡充を図ってくれれば良いんですけど。

ビジネスモデルが成り立ってるとは思えないし(Tumblrの収入って何なんでしょうかね?)、あんまり希望は持てませんけれどもね...