JSONPサービスのディレクトリ

このブログでは、ずいぶん前に作った「JSONで使えるサービス一覧」というエントリが今のところずっと人気エントリらしいです。最近いっぱいJSONPサービスは出てきてるっぽいので、もしかして少しでもこのエントリが役に立ってくれていたならうれしいことです。

でも、そもそもブログの1エントリだったことですし、ずっとページをメンテしてないので、もはやJSONP情報のディレクトリとして扱うには古いと言わざるを得ません。でもメンテも大変なので、できればユーザ参加型でメンテしたいところです。

おそらくこういうののためにたぶんWikiとかがあるのかもしれないですが、なんか別の方法を使ってみたくなって作りました。

で、作ったのが、こんなの。

http://www.geocities.jp/stormriders999/jsonpdirectory.html

JSONPディレクトリサービスなので、JSONP(HTML+JavaScriptのみ)でできています。はてなブックマークを無茶に使ってます。

処理の流れとしては、

  1. はてなブックマークJSON APIで、登録用のページ(http://www.geocities.jp/stormriders999/jsonpregister.html)をブックマークしているユーザ名を取得。これが登録ユーザであるとみなす。
  2. それぞれの登録ユーザに対して、「jsonpService」タグの付いたブックマークのRSSを、Google AJAX FeedのJSONPインターフェースを使って取り込む。これが各ユーザが申請したJSONPサービスのURLであると見なす。
  3. JSONPのサービスURLにはパラメータとして「{}」の記述でパラメータを埋め込める。たとえばこんな感じ。
http://www.example.com/service?username={username}&count={count:10}

本来ならユーザ登録などさせなくても、全体で「jsonpService」タグが付いたRSSを取り込めば良さそうなものなのですが、はてブRSSが配信しいている上限が20件くらいなのと、パブリックタグのフィードはatomでは提供されていない(ページングができない)ので、使えませんでした。ここでははてブを利用したユーザ登録制にすることで全体としての登録の上限を回避しています。

ちなみにジオシティーズでやってるのは、サーバサイドプログラム使ってないよということのアピールのつもりでもあり。

しかしSBMをこういう用途に使うのは、ちょっと気が引けます。登録してあるURLはWebサービスの情報なので、ブックマークのリンクをクリックしても普通はただのエラー画面になるので。まあ運が良ければJSONくらい返ってくるかも。