Google Maps Web Services APIs のクライアントライブラリを使ってみよう
2016年9月30日金曜日
[この記事は、Brett Morgan, Developer Programs Engineer による Geo Developers Blog の記事 "Making the most of the Google Maps Web Service APIs" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]
アプリ開発の現場において、開発者が目指す堅牢なアプリと、必要最低限の機能のみを実現したコードの間に隔たりが存在する場合があります。したがって、こうしたコードがいったん製品に盛り込まれてしまった場合、後々、エラー発生の原因になることがあります。
Google Maps API チームでは、皆さんのアプリがスムーズにスケールするようにクライアント ライブラリを提供しています。対象となるプログラミング言語は Python、Java、Go で、いずれも世界中で大勢の開発者が利用する言語です。先日このクライアントライブラリに、新たに Node.js が加わりました。
モバイル アプリケーションを開発する場合、Places API for Android や Places API for iOS といったネイティブ API が使えるのであれば、こうしたものを利用することが推奨されます。とはいえ、実際には、Google Maps API Web Services(たとえば Elevation API)でしか手に入らないデータが必要になることもあります。先々のことを考えると、そうした場合にはこういったクライアント ライブラリを使うのが最善の方法となります。
次のようなケースでは、クライアント ライブラリの利用がおすすめです。
クライアント ライブラリは様々な場面で役立つことでしょう。たとえば、言語間でもっとも互換性のある形式で結果セットを返します。Java と Go のクライアント ライブラリには、各 API の潜在的な結果をタイプセーフな形で表現したものであるオブジェクト階層が含まれています。これにより、使い慣れたエディタで、コンパイラ時のエラーを確認しながら、コーディングすることが可能になります。
Google Maps API を利用しているアプリやウェブサイトは、300 万にものぼります。そこから得られた知見・経験により、ウェブサービスを利用する際の信頼性を確保するうえで重要なポイントがわかりました。Android や iOS から直接ではなく、サーバから API をコールするのです。この方法だと API キーを確保できるので、問題のあるアクターに割り当てを消費されることがありません。また、キャッシュを追加することで、よくあるリクエストを速やかに処理することもできます。
サーバのインスタンスはプロキシの働きをします。Android や iOS からリクエストがあると、そのリクエストを(アプリに代わって)Google Maps Web Service API に転送するのです。サーバ側のプロキシを作成するには、Google App Engine のインスタンスから Google Maps Web Service のクライアント ライブラリを使う方法がもっとも簡単です。詳しくは、Google I/O 2016 で披露された Laurence Morone のセッション、「Building Geo Services that Scale(スケールする位置情報サービスの開発)」の動画をご覧ください。
Google Maps API Web Services について詳しく知りたいという方は、こちらのドキュメントをご覧ください。こうしたAPIを利用し、またベストプラクティスを実施する方法として一番手っ取り早いのは、Google Maps Web Services のクライアント ライブラリを利用することです。Python、Java、Go、Node.js のクライアント ライブラリは、Github でダウンロードいただけます。
Posted by 丸山 智康 (Tomoyasu Maruyama) - Google Maps Solution Architect, Google Maps
アプリ開発の現場において、開発者が目指す堅牢なアプリと、必要最低限の機能のみを実現したコードの間に隔たりが存在する場合があります。したがって、こうしたコードがいったん製品に盛り込まれてしまった場合、後々、エラー発生の原因になることがあります。
Google Maps API チームでは、皆さんのアプリがスムーズにスケールするようにクライアント ライブラリを提供しています。対象となるプログラミング言語は Python、Java、Go で、いずれも世界中で大勢の開発者が利用する言語です。先日このクライアントライブラリに、新たに Node.js が加わりました。
モバイル アプリケーションを開発する場合、Places API for Android や Places API for iOS といったネイティブ API が使えるのであれば、こうしたものを利用することが推奨されます。とはいえ、実際には、Google Maps API Web Services(たとえば Elevation API)でしか手に入らないデータが必要になることもあります。先々のことを考えると、そうした場合にはこういったクライアント ライブラリを使うのが最善の方法となります。
次のようなケースでは、クライアント ライブラリの利用がおすすめです。
- リクエストが、いずれのウェブサービスに対してもデフォルトのレート制限で送られます。もちろん設定変更は可能です。
- API から 500 番台のエラーが返ってきた場合、クライアント ライブラリは自動的にリクエストをリトライします。リトライはエクスポネンシャル バックオフを使用しますが、これは断続的な失敗が生じる場合に有効です。
- クライアント ライブラリを利用すると、自由に入手できる API キーでの認証が簡単になります。Google Maps API プレミアムプランを利用されているお客様は、この API キーを使うか、または、クライアント ID とシークレットを使うことができます。
- Java と Go のライブラリは、API の応答ごとにネイティブなオブジェクトを返します。Python と Node.js のライブラリについては、API からストラクチャを受け取り次第これを返します。
クライアント ライブラリは様々な場面で役立つことでしょう。たとえば、言語間でもっとも互換性のある形式で結果セットを返します。Java と Go のクライアント ライブラリには、各 API の潜在的な結果をタイプセーフな形で表現したものであるオブジェクト階層が含まれています。これにより、使い慣れたエディタで、コンパイラ時のエラーを確認しながら、コーディングすることが可能になります。
Google Maps API を利用しているアプリやウェブサイトは、300 万にものぼります。そこから得られた知見・経験により、ウェブサービスを利用する際の信頼性を確保するうえで重要なポイントがわかりました。Android や iOS から直接ではなく、サーバから API をコールするのです。この方法だと API キーを確保できるので、問題のあるアクターに割り当てを消費されることがありません。また、キャッシュを追加することで、よくあるリクエストを速やかに処理することもできます。
サーバのインスタンスはプロキシの働きをします。Android や iOS からリクエストがあると、そのリクエストを(アプリに代わって)Google Maps Web Service API に転送するのです。サーバ側のプロキシを作成するには、Google App Engine のインスタンスから Google Maps Web Service のクライアント ライブラリを使う方法がもっとも簡単です。詳しくは、Google I/O 2016 で披露された Laurence Morone のセッション、「Building Geo Services that Scale(スケールする位置情報サービスの開発)」の動画をご覧ください。
Google Maps API Web Services について詳しく知りたいという方は、こちらのドキュメントをご覧ください。こうしたAPIを利用し、またベストプラクティスを実施する方法として一番手っ取り早いのは、Google Maps Web Services のクライアント ライブラリを利用することです。Python、Java、Go、Node.js のクライアント ライブラリは、Github でダウンロードいただけます。
Posted by 丸山 智康 (Tomoyasu Maruyama) - Google Maps Solution Architect, Google Maps