テックアカデミー第9回メンタリング:Google Map API使えるの?

2018年4月2日

プログラミングスクールのテックアカデミーで勉強してRubyを少し使えるようになってきたので、自作のアプリを作ろうと張り切っているところです。

WEBアプリ内でGoogleの地図を使おうと思っているのですが、APIが豊富にあり、どれを使えばよいかわからなくて検討していました。

自分のアプリはAPIを使って店舗(ショップ)情報として、名称、住所、IDなどを取得して、地図表示させたいと思っています。

それでテックアカデミーの講師にメンタリングで相談したので、その時のレポートを【ほぼ自分用に】まとめた備忘録です。

Google Map APIどれを使えばよいか?

最適なAPIを見つける
https://developers.google.com/maps/get-started/?hl=ja

このページを見るとAPIとそれぞれの概要が書かれていて、この中から探していきました。

GoogleのAPIで使えそうなのを3つ発見、

①Google Maps Embed API
②Google Places API Web Service
③Google Place API Javascriptライブラリ

どれを使えばよいかわからないので更に調べました。

Google Maps Embed API

→iframeを使って検索ワードにヒットした地図とマーカーを埋め込む。前回の記事で実現できました。

これは使うかもしれません。しかもこのAPIは回数無制限で課金なしで使えるのです。
https://developers.google.com/maps/documentation/embed/?hl=ja

次の2つが似てて、同じことが出来るように見えるけど違いがわからなくて調べていました。

Google Places API Web Service

https://developers.google.com/places/web-service/?hl=ja

URLに検索ワードを入れてGETで送ると、JSON形式で店舗リストをとることができました。
JSON形式は結構入り組んでいて複雑なので構文を解析してアプリ内で使えるような形にしないといけなそうです。

やり方は別途記事にします。

Google Place API Javascriptライブラリ

https://developers.google.com/places/javascript/?hl=ja

→画面下部にいくとデモがあるけど、これはJavascript言語。表示させようとするHTMLでこのJSを記述すれば画面上に地図を表示できる様子。

これによると地図+ピン表示ができるように見えるが、このままだと店舗のJSONは取れないので工夫が必要になると思われます。

テックアカデミーの講師の方に聞いた所、サンプルコードのこの部分。

  service.nearbySearch(request, function(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        var place = results[i];

ここのresultsでユーザーの検索結果の場所情報が入っていて
地図上のマーカーポイントを配置しているようなので、resultsから店舗情報一覧を取得できるのではという話でした。

けど自分はまだJavascriptを習ってないので難しそう。

Google Map APIを使う料金の課題

1番目のEmbed APIは課金されないので何回リクエストを投げても大丈夫ですが、②と③のAPIは1日のリクエスト数制限があります。

マップのロードは1日25000回まで無料で、

APIのリクエストは無料だと24時間で1000回で、さらにクレジットカード情報を登録して本人確認すれば24時間あたり150,000件の無料リクエストが出来るようです。(クレカは登録するけど、課金はされない)

150,000件を超えると、その部分は1000件ごとに$0.5がかかってきます。
地図やAPIの使用制限

さらに、テキスト検索サービスだけ使用量が10倍になります。
https://developers.google.com/places/web-service/usage?hl=ja

つまり24時間で100回のリクエスト、本人確認すれば15000回のリクエスト‥という事でしょうか。

ところで、このリクエスト数の使用制限や料金の面は大丈夫ですか?

そうですね、それは僕も気になっていたのです。1日100リクエストということは月間で3000回。多くても月間3000人しか使ってもらえないWEBアプリになっちゃいます。

本人確認すれば1日15000回だから、30日だと45万回。45万人しか見れない。どうせなら月間100万人以上に使ってもらえるようなWEBアプリ作成を目指しているので。

月間100万人というと1日33000人。超過分は1日$9(約1000円)の費用がかかってきます。月間3万円をGoogleに支払わないといけません。もし200万PVいったら、さらに追加で5万円かかっちゃう感じ。

アドセンス広告を貼ればいくらか回収できると思いますが、運営するほどに費用がかかるのは避けたい。

100万PVでアドセンス報酬はだいたい30万円だそうで。そうすると利益が20万ちょい出るじゃん。クリックされるかわからない皮算用なので見込みは薄い。

まぁそもそも100万PVも行くのか?という話もありますが。

僕だったら先に都内だけ、とかエリアを絞ってやりますね。また毎回APIにリクエストを投げるのではなく、予め自分のDBに店舗情報を手動で入れておくような取り組みからスタートしてはいかがでしょうか。

いまの設計だとAPIにだいぶ依存する形になっていてあまりオススメじゃないですね。

あとGoogle Mapじゃなくて、Yahoo地図なら確か無料でしたし。オープンストリートマップも検討されると良いと思います。

なるほど、ちょっとAPIを使いすぎないように検討してみます。

Google Map APIはなるべく使わない方向で検討

これからまた調査の日々が始まりそうです。

ここまで来るのにAPIをRubyで叩いて使えるか調べてきたのですが、また振り出しに戻って検討する事から始めないと、運用スタートしてから手戻りするのは避けたいですからね。

講師の方によきアドバイスを頂きましたので、頑張ろうと思いました。

てことで、皆さんもプログラミング頑張っていきましょう!

テックアカデミーはこちら↓