かれこれ,もう1カ月以上の間が開いてしまいましたが, 前回 は,Yahoo! JAPAN が提供している 関連検索ワードWebサービス を利用した「連想ゲーム」のウェブアプリケーションを作成してみました。

 Yahoo! JAPAN でも,同社の提供する WEB サービス API を利用した アプリケーションを募集するコンテストが開催されていましたが, 同様のマッシュアップ系のコンテストは,各社から多数が開催されています (表1)。

表1:主なマッシュアップ系コンテスト

コンテスト名応募期間上位入賞賞金最優秀作品
TAGGY 『TAGGY Mash Up Contest 2007』2007年4月26日~
2007年6月30日
グランプリ
賞金30万円
準グランプリ
賞金10万円
(開催中)
Yahoo! JAPAN 『Yahoo! JAPAN WEB API コンテスト』2007年2月23日~
2007年4月30日
グランプリ
賞金30万円
準グランプリ
賞金10万円
(未発表)
インフォテリア 『c2talk カレンダーコンテスト』2007年2月1日~
2007年3月21日
Gold賞
賞金50万円
Silver賞
賞金10万円
京都歳時記
サン・マイクロシステムズ,リクルート 『Mash up Award 2nd』2007年1月23日~
2007年3月12日
最優秀賞
賞金50万円
優秀賞
賞金20万円
出張JAWS
(ジョーズ)
価格.com 『価格.com WEBサービスコンテスト』2006年11月15日~
2007年1月15日
最優秀賞
賞金30万円
優秀賞
賞金20万円
EatSpot
サン・マイクロシステムズ,リクルート 『Sun×RECRUIT Mash up Award』2006年6月5日~
2006年7月31日
最優秀賞
賞金50万円
優秀賞
賞金10万円
みんなの
水遊びMAP
DeNA 『Webサービス・プログラミングコンテスト2006』2006年4月14日~
2006年6月30日
最優秀賞
賞金10万円
優秀賞
賞金3万円
焼酎Wiki

 まさに,百花繚乱。 これらのコンテストは, 様々なマッシュアップ・サイトが次々に登場してくる一つのトリガになっていると言えそうです。

TAGGY Search API

 現在は,株式会社 TAGGY により TAGGY Mash Up Contest 2007 が開催されています(図1)。 TAGGY は,各種 CGM サイトなどのコンテンツやタグを横断的に検索できるサービスです。 その TAGGY の WEB サービス API である TAGGY Search API を利用したマッシュアップ・アプリケーションが対象のコンテストです。 今回は,その API の具体的な使い方について,サンプル・コードを交えてご紹介します。

図1:TAGGY

 まず,TAGGY Search API へのリクエストは以下の形式になります。(リスト1)

リスト1:APIリクエスト例 ⇒デモ
http://taggy.jp/media/new/jsonp.do?encoding=UTF-8&callback=callback&media=blog&query=Ajax&limit=20&offset=0

 最初のエンコーディング(encoding=UTF-8)は,文字化け防止のため UTF-8 が良いでしょう。 コールバック(callback=callback)は,JSONP 取得完了後に自動的に呼び出される関数名を指定します。 メディア(media=blog)は,ニュース・動画・ブログ・SBM・写真・ポッドキャストの6種から検索対象を選択します。

 クエリー(query=Ajax)は,検索文字列を指定します。 記号や日本語コードなどが含まれる場合は,URL エンコードする必要があります。

 最後のリミット(limit=20)とオフセット(offset=0)で,検索結果を取得する件数・開始位置を指定できます。 詳しくは, ドキュメント を参照してください。

 対するレスポンスは,以下の JSONP の形式で返ってきます(リスト2)。 JSONP ですので,コールバック関数が自動的に呼び出されます。 XML・JSON などの解析処理も不要なので,JavaScript 中での処理が非常に手軽です。

リスト2:APIレスポンス例
callback({
  "Entry":[
    {
      "identifier":   "記事の一意なID",
      "media":        "メディアの種類",
      "title":        "記事のタイトル",
      "link":         "記事へのURL",
      "description":  "記事の詳細説明",
      "date":         "記事の日付",
      "creator":      "記事の投稿者",
      "subjects":     [{"subject":"タグ1"},...,{"subject":"タグN"}]
    },
    {
      // 中略
    }
  ],
  "Count":  "検索にヒットした件数"
});

 Entryの配列内に,検索結果1件ごとの連想配列(オブジェクト)が並ぶ形になります。 そのオブジェクトを引数として,コールバック関数 callback が呼び出されます。