2011年12月20日火曜日

CoCafeの作り方(Googleプレイス編)

先日のエントリで、マップのUIについて書いた、CoCafeの作り方。
今回はGoogleプレイス編です。

CoCafeでは、位置情報から近くのカフェ情報を取得して表示しています。
カフェの情報は、Google Places APIを使って取得しています。

Google Places API は、1,000 リクエスト/日 の利用制限がありますが、
クレジットカードの登録により個人情報の登録をすれば、 100,000 リクエスト/日 を利用できます。
(クレジットカードの登録はするけど、請求は0円)
あと、行う必要があるのが powered by Google のロゴの表示 。
マップ上に表示するには、Googleマップの上で行わないといけない ようです。

お店の検索条件として以下のものが使える。
location (required):緯度・経度
radius (required):検索の範囲(m)
keyword (optional) :キーワード
name (optional):お店の名前
types (optional) :ここにあるタイプ。 | 区切りで複数指定可能。

なんとなくいけそうだな ってことで使用し始めたのですが......一回浮気しようとしたタイミングがありました。
理由は ... お店の情報が綺麗にカテゴリ分けされていない ため。

Googleプレイスでは、いろんなタイプでタグ付けされているのですが、cafe のタイプで検索しても、近くのスタバとかベローチェのお店が表示されない...
そのお店は登録されているのですが、設定されているタイプをみると establishment のタイプのみ。
いっぱいタイプがありすぎるのもどーかなーとも思うのですが、establishment だけってのも..なぁ...
とはいえ、establishment を入れるとほとんどの建物がひっかかちゃって、実用的にならない。

じゃぁ、カフェ とか スターバックス、ベローチェ、ルノアール... って有名どころの名前を一気にnameで条件指定して検索かけたらどうだろう?と試したのですが....
最初の方に指定されたキーワードのものが優先されてしまい、後のほうに指定したものは、引っかからなくなる。
Google検索と同じ感じで、はじめに指定されたキーワードの方が重要だ と認識される感じ。

1回の検索で返ってくるお店の数の上限が決まっていて、rate(評価)の高いお店から多分優先的に返すようなんですが、指定している範囲を超えて情報が返ってくるので、より 引っかからない度合いが顕著に...。

これを解決するには、取得したいお店名 ごとに1回のリクエストを投げて情報を取得するしかないのか... と一時期実装していたのですが、10数回一気にリクエストを投げることになり、API制限も気になってしまう結果になり断念。

そこで、食べログAPI はどうだろう? と問い合わせしてみました。
有料アプリになるかどうかはまだ判断しきれていないタイミングだったので、
> 個人で作成しているアプリだけど、200円程度の有料アプリになる可能性もあるがあるが、つかえるか?
という内容の問い合わせをしたところ
> 商用利用はお控え下さい
の返答が。
サイトをみると "法人の方は別途お手続きが必要" とあるのですが...返答メールの内容には、別途お手続きをしてください... 云々的な文言は一切なかったので個人だと対応もできないのかな。残念。

ぐるなびAPIはどうだろう? と見てみたのですが、
XMLのレスポンス...か...
でも!いい情報がとれるなら...と見てみたのですが、カフェ情報となるとやっぱり少なかった。
居酒屋とか食事メインの情報サイトですものねー。そうだよなー。 と断念。

# 結局、お店の登録内容や数が一番いいのは foursquare なんじゃないかとも思ったりもしますね...
# 試してないのですが、cafe ってカテゴリだけで近くを検索とかできるのかしら...
# OAuthで認証していないアカウントの場合の制限はどれくらいになるのかしら...

...で、Googleプレイス に戻って来ましたw

CoCafeでは、name(お店の名前)での検索をできるようにしているのですが、
お店の一部分を指定しても引っかからなかったり、英語表記のお店が引っかからない...と思ったら、カタカナにしたら引っかかったり...とちょっとイマイチ感。
Googleプレイスにお店の登録はあるのに、探しきれないという場面が多々あります。

Google Places API を改めてみると、Place Reportというのがある。
Places that have been added by your application can also be deleted, until they have been moderated. Once moderated and added into the full Place Search results, a Place can no longer be deleted. Places that are not accepted by the moderation process will continue to be visible to the application that submitted them.
と。
ちょうど近くにオープンした サンマルクカフェ が登録されていなかったようなので、登録してみた。
...が、自分だけが見れる登録情報の状態?で GoogleプレイスのURLも発行されない。
暫く日をマタイだ後.... Googleプレイスにサンマルクカフェが正式に入ってきた! ....が、自分が登録したサンマルクカフェも表示されて2重表示状態に!!! むぎゅー。自分が登録した方は自分で削除しましたよ otz

CoCafeとしては、Googleプレイスのデータベースをよりよいものにする情報を提供したい所ではありますが、今の状態だと、為す術がないですね...無念。

Googleプレイスの愚痴が多くなってしまっていますが...
お店がオープンした/閉店した というのも (タイムラグはありますが)反映されるし、
GoogleプレイスのWEBURLをみると、写真情報や評価/口コミも見れるし。
Googleマップで検索したお店の情報はGoogleプレイスの情報だと思うので、お店側も最新情報を載せよう!と思ってくれるだろうし。インフラとしてはとても最高。

正確な情報を、早いタイミングで更新するのはとっても無理だとは思うので、使用ユーザの手をうまーーく借りることができると良いんですけどもねー。
foursquareのお店情報って充実してるなー って思うのは、使用ユーザの手を借りているからなんだろうと思うので。

そうすると、2重登録は発生するし、
ユーザがお店を見つけられずに "閉店" としてしまって、訴えられることもあるでしょうが...
Googleさんなら出来るよ。がんばって!
• • •