Jan 11

細々とメンテナンス中の自家製レストランリスト、過去に行ったレストランを再訪しようと思って参照するついでにyelpのレビューを見たくなることがしばしばある。

その都度ぐぐるのは効率悪いので、ある時期から元データには外部リンク情報を記入できるようにして、気がついたときにyelpの該当ページへのリンクを足すようにしていたのだが、さらにふと思い立って調べてみると、昨今のweb 2.0企業(死語)の例に漏れず、yelpもREST形式で叩けるAPIを公開しているらしい(しかも結構前から)。

ということで早速登録してAPIデビュー。どうも特定の店の情報を入手するためというよりは、ある条件に該当する(通常複数の)店のリストを得ることを念頭においているインタフェースのようだけど、ここでの用途としては検索結果に曖昧さがあっては困る。ということで、個別のレストランを一意に識別できるもっとも手軽なIDだと思われる電話番号を使って検索するAPIを利用することにした。

使い方はAPI解説ページにもある通り簡単で、応答もシンプルなJSON形式なので利用するのも楽。

以下はこのAPIを叩いて、yelpのratingを動的に入手して表示できるようにするスクリプトを使った例。”see rating”部分をクリックするとRESTのリクエストが飛び、戻ってきたJSONのデータを元に、JSONP方式のcallback経由でDOMツリー内の”see rating”部分をyelpのrating画像で置き換えている。

  HALU
  375-M Saratoga Avenue, San Jose, CA 95129 (map)
  408-246-3933
  Yelp: (reviews / see rating)

APIの利用条件には以下のようなDisplay Requirementsが付いているが、この例はそれを満たしている…はず。

  • yelpのlogoを明示してwww.yelp.comにfollowableなリンクを張ること
  • ratingは数字だけではなくグラフィック表示すること
  • reviewページへのリンクを付けること

というわけで、自家製レストランリストの方も上の要領で改訂した。ついでに、これもAPI経由でほとんどのレストランにyelpのリンクを付けるようにした。以下はそのサンプル。

ここの”see rating”をクリックすると、上の例と同様の仕組みで以下のように書き変わる:

この画像はChromeでの表示例だけど、少なくともChrome, firefox, safariあたりではどうも微妙に文字と画像の高さがずれてしまうのがちょっと不満。CSSを少しいじってみたんだけどいまいちうまくいかず、あまり本質でないところに凝ってもしょうがないということでこの部分はとりあえず放置。

より本質的な点でちょっと悩ましいのは、初心者(?)のうちはRESTのリクエストが一日あたり100 回に限定されていること。まあ通常の利用方法からするとこれを超えるようなことはまずないとは思うのだが、ちょっと新しい実験をしたいというような場合に不便。一応1万回に引き上げる要求を出せるようなので、API Overviewページにあるようにbizdev@yelp.com宛にリクエストしてみたが、予想通りというか、ほとんど門前払いの自動応答が返ってきた:

We appreciate your taking the time to write in, and we can assure you that the business team at Yelp will read your email. We’re getting a lot of partnership inquiries lately, so unfortunately we can’t meet with or even respond individually to every proposal… even many good ones. If we can meet to discuss your proposal, a member of our BD team will reach out directly.

仮にもgoogleが買おうかというくらいのサービスなのだから、こんな個別リクエストを人間の手で精査して許可を出すようなやり方がスケールするはずもないと思うのだが…。google familyの一員になれば、あり余るman powerで処理されるようになるか、あるいはもっと現実的な方法で自動的に制限が緩まるかすることを期待しよう。

もう一つの懸念は、googleのお買い上げ後は、APIもgoogle流の手が入って互換性のない方式で改訂されちゃわないかということ。そうなるとせっかく書いたスクリプトも改訂しないといけなくなってしまうので、できればお買い上げ後もAPIの互換性は提供してほしいものである。

こんなことまでするならもう自前のリストなんて使わないで全部yelpのリンクにしたら?という突っ込みがありそうだが、これは趣味でやってることだからいいんです!

追記: これを書いた次の日に、yelpのPartner Relations担当の人から返事が来て、早速リクエスト数の制限を上げてもらえたらしい(未確認)。意外にすばやい対応に感心した。

コメントを投稿 / Submit Comments


Warning: Undefined variable $user_ID in /usr/home/jinmei/src/itheme/comments.php on line 74



(あれば / Optional):