ハイブリッド・サイト
APIを2種類使って、マッシュアップサイトを作りました。
バレンシアガのサイトです。
マッシュアップサイトというのは、複数のコンテンツを一緒に表示するサイトのことです。
と言っても表面上は、今までのサイトと同じで、ただズラズラっと商品情報が並んでいるだけです。
これのどこがマッシュアップになっているかというと、楽天ランキングAPIと、商品検索APIを同時に使って、ランキングと個別アイテムの情報を並べているんですね。
上の方に並んでいるのは、ランキング情報のページで、下の方のリストは、個別に自分で設定したキーワードです。
技術的には、二種類のモノを連結させただけですけど、なぜか今まで思いつきませんでした。
まあ、APIへのリクエスト回数の制約があるので、あまりたくさん組み合わすことができなかったと言うこともありますが。
公開日:2010年08月 08日
追伸と解説
webAPIを使ってサイトを作る場合、二つのサーバーを上手く使わないといけない。
二つのサーバーというのは、APIなどを提供する「webサービスサーバ」と、自分がホームページを置いている(レンタル)サーバーだ。
マッシュアップサイトを作る場合、
- 動画 → ユーチューブのサーバー
- 楽天市場の商品 → 楽天市場webサービス
- Yahoo!ショッピングの商品 → Yahoo!ショッピングのwebサービス
に、URLリクエストを送り、そのレスポンスを解析して、動画集リンクや商品情報をページにする。
なのでまず、情報を取得する場合に、ルール通りにURLリクエストを送らないと、ちゃんとしたレスポンスが返ってこない。
たとえば、大抵のwebサービスでは、アクセス制限を行っている。
アクセスキーというのを発行し、アクセスキーがないアクセスは、HTTPステイタスで「403 Forbidden」とか「400 Bad Request」というレスポンスを返してくる。
また、アクセス頻度も制限していて、例えばリクエストは、1秒間に1回未満と言う風に上限が決められている。
これを越えてアクセスすると、数回目に「503 Service Unavailable(503エラー)」が返ってきて、数十分くらい、リクエストを受け付けてくれなくなったりする。
そのため、CGIプログラムでは、URLリクエストを1回する度に1秒ほどスリープさせる様に作る。
一方、大抵のレンタルサーバーは、サーバー上で動かすプログラムは3分以内という風に決められていて、3分を超えると強制終了になることが多い。
となると、webサービスにリクエストできる回数の上限が決まってしまう。
3分というと180秒だから、最大180回しかURLリクエストを投げることが出来ないわけだ。
だから、webAPIの仕様が良くなくて、何度もリクエストを投げないといけないような場合は、サイトに載せるリストを30〜50くらいに制限しないといけなくなる。
楽天の初期のwebAPIは、パソコン用サイト向けのURLと、携帯電話用サイト向けのURLを、別々にリクエストしなくてはいけなかった仕様だったため、たとえば47都道府県別のページを作ろうとしても、東日本と西日本に分けないと作れなかったりしていた。
今は、パソコン用とか携帯用という区別がなくなったので、普通に作れるけどね。