Web APIを使うと個人や一企業での収集が難しいデータが簡単に手に入ります。多くは自社の保有するデータをオープンにするWeb APIが多いですが、中には翻訳や画像変換などの様々な機能をWeb APIとして公開しているものもあります。

こういったWeb APIを複数組み合わせることで、全く新しいアプリを作ることができます(なお、複数のWeb APIを組み合わせることをマッシュアップと言います)。

今回はそんなWeb APIの一つ、ホットペッパーAPIを使ったアプリの開発方法について紹介します。

ホットペッパーAPIの取得について

多くのWeb APIは、利用に際して認証が必要となっています。そうしないと無尽蔵にWeb APIをコールされてサーバに負荷がかかったり、他の利用者に迷惑をかける可能性があるからです。

ホットペッパーAPIも認証が必要な仕組みになっており、各自に配布されるAPIキーでの認証が必要となります。新規登録 | リクルートWEBサービスより取得してください。

アプリの概要

今回は位置情報を使って付近のレストラン情報を収集するアプリを作ってみたいと思います。イメージでは次のようになります。まずトップページがあります。

レストラン取得ボタンを押すと、ホットペッパーAPIからレストラン情報を取得して一覧表示します。

一覧の中から店舗名をタップするとレストランの詳細(今回は住所だけですが)を表示します。

それでは作っていきましょう。

Monacaで開発をはじめる

今回は「Onsen UI V2 JS Navigation」テンプレートをベースにしています。画面遷移(今回は一覧画面と詳細画面)の伴うアプリでは、このテンプレートをベースにするのが良いでしょう。

そしてCordovaプラグインとしてGeolocationをインストールします。このプラグインは標準で提供されていますので誰でもインストール可能です。

HTML5 APIのGeolocationを使うこともできますが、位置情報を取得する度に許可を求める確認ダイアログが出てしまいます。Cordovaプラグインであれば一度許可すれば次からはダイアログが出ません。

追加でjQueryをインストールしたら、準備は完了です。

HTMLについて

まず画面の実装について解説します。

画面遷移するために ons-navigator を使います。page要素は最初に表示するページの名前です。

一覧画面(list.html)は次のようになります。レストラン取得ボタンと、検索結果を表示する空の #shops を用意しておきます。

最後に一覧からタップした時に遷移する詳細画面(detail.html)です。店名、住所を表示する #shop-name#shop-address を用意しておきます。

JavaScriptの実装

では続いてJavaScriptの処理について紹介します。全体のコードは以下の通りです。

YOUR_API_KEYは自分のAPIキーに置き換えてください)

各処理内容の詳細について解説していきます。

最初の画面を表示した時の処理

一番最初の画面(#list-page)で行う処理は主に2つです。

  1. レストラン取得ボタンを押したら、ホットペッパーAPIをコールして結果を一覧表示する
  2. 一覧をタップした時に詳細画面に遷移する

レストラン取得ボタンを押したら、ホットペッパーAPIをコールして結果を一覧表示

ボタンが押されたら、 navigator.geolocation.getCurrentPosition を使って位置情報を取得します。

位置情報が取得できたら、位置情報を元にしてホットペッパーAPIにアクセスするためのURLを生成します。詳しくはホットペッパー | APIリファレンス | リクルートWEBサービスにて確認できますが、今回は次のようになります。

そしてAjaxを実行します。

処理が成功した場合、一覧が返ってきますのでリストに反映します。

なお、上記のWeb API実行処理はMonaca IDEのプレビュー画面では動作しません。Monacaデバッガーで確認を行ってください。

もしプレビュー画面でも確認をしたいという時には、以下のようにhttps通信を使って、フォーマットにはjsonpを指定してください。

レストラン名をタップした時の処理

続いて一覧からレストラン名をタップした時の処理についてです。ここではレストラン情報を次の画面に引き渡します。レストラン情報はpushPageの二つ目の引数にdataとして渡します。

詳細画面を表示した時の処理

次に詳細画面へ遷移した時の処理についてです。ここでは前の画面から渡されたレストラン情報を表示します。HTML側でid指定している部分に描画するだけです。


Web APIを使うことでアプリの可能性を飛躍的に向上させられます。他にもたくさんのAPIがありますのでぜひアプリ開発に組み込んでみてください。

今回のコードはmoongift/monaca_with_hotpepper_apiにアップロードしてあります。実装時の参考にしてください。