-
entry001133
comments
先週の木曜日に、ぐるなびがレストラン検索の API を公開しました。
所定の URI に所定のパラメータを渡して HTTP で叩くと、検索結果の XML が返ってきます。 非常にシンプル。 で、こいつを PHP でラップしたライブラリを作りました。
大したことはやっていないのだけれど、いかんせんリクエスト・パラメータとレストランの属性値の数が多く、手数だけはかかってしまいました。
このライブラリを使うと、こんな感じのアプリがお手軽に作れます。
ぐるなびWebサービスWeb サービスのマニュアルはここで提供されています。
ぐるなびが提供する API を呼ぶには、ユーザー登録をした上でアクセスキーを手に入れる必要があります。 このため、JavaScript などでクライアント・サイドから呼ぶには適しません。 提供されている API は現在のところ五種類です。
- レストラン検索API
- エリアマスタ取得API
- 都道府県マスタAPI
- 大業態マスタ取得API
- 小業態マスタ取得API
このうち検索を行うのは一つ目の「レストラン検索API」のみで、他の四つは常に固定の結果を返します。 業態絞込み検索を行う場合などに、検索画面の表示に使うことができます。
GNavi.phpGNavi.php は上記の仕様をラップします。 主に以下の5つの API を提供します。
- GNaviRestSearchAPI クラス
- レストラン検索です。「2-3-1.レストラン検索API」をラップします。いくつかの検索パラメータ(後述)を受け取ります。検索結果 GNaviRestSearchResult を返します。
- GNaviAreaSearchAPI クラス
- エリアマスタの取得です。「2-3-2.エリアマスタ取得API」をラップします。検索パラメータは不要です。検索結果 GNaviAreaSearchResult を返します。
- GNaviPrefSearchAPI クラス
- 都道府県マスタの取得です。「2-3-3.都道府県マスタAPI」をラップします。検索パラメータは不要です。検索結果 GNaviPrefSearchResultを返します。
- GNaviCategoryLargeSearchAPI クラス
- 大業態マスタの取得です。「2-3-4.大業態マスタ取得API」をラップします。検索パラメータは不要です。検索結果 GNaviCategoryLargeSearchResult を返します。
- GNaviCategorySmallSearchAPI クラス
- 小業態マスタの取得です。「2-3-5.小業態マスタ取得API」をラップします。検索パラメータは不要です。検索結果 GNaviCategorySmallSearchResult を返します。
エラー処理各 API クラスの call メソッドは、リクエストがエラーを返した場合は GNaviError クラスのオブジェクトを返します。
GNaviError クラス プロパティ $code エラーコード プロパティ $message エラーメッセージ プロパティ $desc エラー内容 各プロパティは「利用案内 2-2. エラー仕様」に準じています。
2-3-1.レストラン検索API GNaviRestSearchAPIコンストラクタ $api = GNaviRestSearchAPI($keyid) $keyid ぐるなびから発行されたアクセスキー 戻り値 $api GNaviRestSearchAPI のインスタンス 検索の実行 $result = call($gNaviRestSearchAPIParams ) $gNaviRestSearchAPIParams GNaviRestSearchAPIParams クラスによる検索条件 戻り値 $result GNaviRestSearchResult クラス 検索条件は GNaviRestSearchAPIParams クラスで渡します。 基本的には利用マニュアルにある「リクエストパラメータ」をラップしたものですが、coordinates_mode / latitude / longitude はまとめて GeoPoint 型で渡してください。 測地系の違いを吸収します。
GNaviRestSearchAPIParams クラス プロパティ $id 店舗ID プロパティ $name 店舗名 プロパティ $name_kana 店舗名読み プロパティ $tel 電話番号 プロパティ $address 住所 プロパティ $area 地方コード プロパティ $pref 都道府県コード プロパティ $category_l 大業態コード プロパティ $category_s 小業態コード プロパティ $equipment 設備・サービス プロパティ $location 緯度経度。GeoPoint 型。 プロパティ $range 上記 $location からの距離範囲 プロパティ $sort ソート順 プロパティ $offset 検索開始位置 プロパティ $hit_per_range ヒット件数 プロパティ $offset_page 検索開始ページ 検索結果は GNaviRestSearchResult クラスとして戻ります。 以下のクラスを経由して検索結果を取り出せます。
GNaviRestSearchAPIParams クラス プロパティ $restList Restaurant クラスの配列。 プロパティ $total_hit_count 全該当件数 プロパティ $hit_per_page 一ページあたりの表示件数 プロパティ $page_offset 現在のページ番号 Restaurant クラス メソッド getId() 店舗IDを返す。 メソッド getUpdateDate() 情報更新日時を返す。 メソッド getName() 店舗名を返す。 メソッド getNameKana() 店舗名を仮名で返す。 メソッド getLocation() 店舗の緯度経度を GeoPoint 型で返す。 メソッド getCategory() フリーワードカテゴリーを返す。 メソッド getUrl() PCサイトURLを返す。 メソッド getUrlMobile() 携帯サイトURLを返す。 メソッド getShopImage() 店舗画像のURLの配列を返す。 メソッド getQrcode() QRコードのURLを返す。 メソッド getAddress() 店舗住所を返す。 メソッド getTel() 電話番号を返す。 メソッド getFax() FAX番号を返す。 メソッド getOpenTime() 営業時間を返す。 メソッド getHoliday() 休業日を返す。 メソッド getLine() 最寄駅の路線名を返す。 メソッド getStation() 最寄駅名を返す。 メソッド getStationExit() 最寄の駅出口を返す。 メソッド getWalk() 徒歩の所要時間を返す。 メソッド getNote() 備考を返す。 メソッド getPrShort() PR文(50文字以内)を返す。 メソッド getPrLong() PR文(200文字以内)を返す。 メソッド getAreaCode() エリアコードを返す。 メソッド getAreaName() エリア名を返す。 メソッド getPrefCode() 都道府県名を返す。 メソッド getPrefName() 都道府県コードを返す。 メソッド getCategoryL() CategoryLarge クラスのオブジェクトの配列を返す。 メソッド getCategoryS() CategorySmall クラスのオブジェクトの配列を返す。 メソッド getBudget() 平均予算を返す。 メソッド getEquipment() 設備を返す。 メソッド getMobileSiteFlag() モバイルサイトありフラグを返す。 メソッド getMobileCouponFlag() モバイルクーポンありフラグを返す。 メソッド getPcCouponFlag() PCクーポンありフラグを返す。 2-3-2.エリアマスタ取得API GNaviAreaSearchAPIコンストラクタ $api = GNaviAreaSearchAPI($keyid) 引数 $keyid ぐるなびから発行されたアクセスキー 戻り値 $api GNaviAreaSearchAPI のインスタンス 検索の実行 $result = $api->call() 戻り値 $result GNaviAreaSearchResult クラス GNaviAreaSearchResult クラス プロパティ $areaList Area クラスのオブジェクトの配列。 Area クラス プロパティ $code 地域コード プロパティ $name 地域名 サンプル・コード
// 地域一覧を表示 $keyid = "xxxxxxxx"; $api = new GNaviAreaSearchAPI($keyid); $result = $api->call(); foreach ($result->areaList as $area) { echo ($area->code . ":" . $area->name); }2-3-3.都道府県マスタAPI GNaviPrefSearchAPIコンストラクタ $api = GNaviPrefSearchAPI($keyid) 引数 $keyid ぐるなびから発行されたアクセスキー 戻り値 $api GNaviPrefSearchAPI のインスタンス 検索の実行 $result = $api->call() 戻り値 $result GNaviPrefSearchResult クラス GNaviPrefSearchResult クラス プロパティ $prefList Pref クラスのオブジェクトの配列。 Pref クラス プロパティ $code 都道府県コード プロパティ $name 都道府県名 プロパティ $areaCode この都道府県が属する地域の地域コード サンプル・コード
// 都道府県一覧を表示 $keyid = "xxxxxxxx"; $api = new GNaviPrefSearchAPI($keyid); $result = $api->call(); foreach ($result->prefList as $pref) { echo ($pref->code . ":" . $pref->name . ":" . $pref->areaCode); }2-3-4.大業態マスタ取得API GNaviCategoryLargeSearchAPIコンストラクタ $api = GNaviCategoryLargeSearchAPI($keyid) 引数 $keyid ぐるなびから発行されたアクセスキー 戻り値 $api GNaviCategoryLargeSearchAPI のインスタンス 検索の実行 $result = $api->call() 戻り値 $result GNaviCategoryLargeSearchResult クラス GNaviCategoryLargeSearchResult クラス プロパティ $categoryLargeList CategoryLarge クラスのオブジェクトの配列。 CategoryLarge クラス プロパティ $code 大業態コード プロパティ $name 小業態名 サンプル・コード
// 大業態一覧を表示 $keyid = "xxxxxxxx"; $api = new GNaviCategoryLargeSearchAPI($keyid); $result = $api->call(); foreach ($result->categoryLargeList as $categoryLarge) { echo ($categoryLarge->code . ":" . $categoryLarge->name); }2-3-5.小業態マスタ取得API GNaviCategorySmallSearchAPIコンストラクタ $api = GNaviCategorySmallSearchAPI($keyid) 引数 $keyid ぐるなびから発行されたアクセスキー 戻り値 $api GNaviCategorySmallSearchAPI のインスタンス 検索の実行 $result = $api->call() 戻り値 $result GNaviCategorySmallSearchResult クラス GNaviCategorySmallSearchResult クラス プロパティ $categorySmallList CategorySmall クラスのオブジェクトの配列。 CategorySmall クラス プロパティ $code 小業態コード プロパティ $name 小業態名 プロパティ $categoryLCode この小業態が属する大業態の大業態コード サンプル・コード
// 小業態一覧を表示 $keyid = "xxxxxxxx"; $api = new GNaviCategorySmallSearchAPI($keyid); $result = $api->call(); foreach ($result->categorySmallList as $categorySmall) { echo ($categorySmall->code . ":" . $categorySmall->name . ":" . $categorySmall->categoryLCode); }
このライブラリを使用する場合はぐるなびWebサービスの利用規約、ガイドラインに従ってください。
MTEntryMore