Web上にある様々なデータサービスのサーバーから、API(Application Programming Interface)を使って、データを取得し利用することができます
WebサーバーにアクセスするためのインターフェースがWebAPIですね
ぐるなびWebサービスのぐるなびAPIを例に、簡単なWebAPIの使い方を紹介してます
WebAPIを簡単phpプログラミングで使う
WebAPIを使ってWebサービスが提供しているデータを取得して、Webサイトの記事に挿入したり、ページを作成することができます
WebAPIをPHPの簡単なプログラムで利用してみよう
WordPressでサイトを運営していますが、WordPressもPHPを利用していますから、WordPressとPHPで作成するプログラムは融合しやすいと思います
PHPに対応しているサーバーであれば、PHPで作成したプログラムを動かすことが可能です
WordPressを利用しているサーバーであれば、PHPのプログラミングに使えることが多いのです
わりと簡単なPHPプログラムで、WebAPI利用の練習をすることができます
こちらは、WordPress内からWebAPIを呼んでいるのではなく、サーバー上のディレクトリにPHPで作成したindex.phpを置いて、index.phpの中からWebAPIで情報を取得する関数を呼び出してページを生成している簡易で軽いサイトです
ぐるなびWebサービスのぐるなびAPIを使っているもので、レストラン情報をフリーワード検索してきます
レストラン検索(自作サイトです)
ぐるなびWebサービスのぐるなびAPIについては、こちらに使い方の導入編を書いてますので参考にしてください


WebAPI PHP 簡単プログラミング事例
WebAPIのPHPでの使い方 ぐるなびAPIを使ってみよう
ぐるなびAPIのレストラン検索APIを使用したPHPの自作プログラム例です
ぐるなびのレストラン検索のWebAPIに、検索してくる店舗数と、何ページ目かと、フリーキーワードを渡すと、ぐるなびAPIはJSON(JavaScript Object Notation)形式のテキストファイルを返してくれる関数です
ぐるなびのレストラン検索のWebAPIが返してくるテキストファイルの中身は、指定した条件で検索を行ってヒットした店舗のレストラン情報のテキストデータ列です
返ってきたテキストファイルの中身を、PHPのプログラムの中で使えるように配列に入れて使います
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// START function gurunavi_search_restlist_v3($hit_per_page=30, $offset_page=1, $freeword) { $ret = FALSE; $search_url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?" . "keyid=" . GURUNAVIAPI_ACCESS_KEY . "&hit_per_page=" . $hit_per_page . "&offset_page=" . $offset_page . "&freeword=" . urlencode_rfc3986(mb_convert_encoding($freeword, "UTF-8", INTERNAL_ENC)); $json = json_decode(mb_convert_encoding(@file_get_contents($search_url, false, ARR_CONTEXT_OPTIONS), "UTF-8", INTERNAL_ENC)); if ($json !== FALSE) { $ret = array(); $n = 0; foreach ($json->rest as $shop) { // 中略 $ret[$n]['id'] = (string)$shop->id; $ret[$n]['name'] = (string)$shop->name; $ret[$n]['address'] = (string)$shop->address; // 中略 $n++; } if (count($ret) <= 0) { $ret = FALSE; } } return($ret); } // END |
WebAPIの使い方 APIの呼び出し方
WebAPIの呼び出し方は、指定されたURLにパラメータを付けてアクセスすることで行います
例えば、ぐるなびのレストラン検索APIの場合のURLはこちらです
URL:https://api.gnavi.co.jp/RestSearchAPI/v3/
このURLの後ろにAPI仕様に記載されているパラメータを付けてアクセスします
1 |
https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=[アクセスキー]&hit_per_page=30&offset_page=1&freeword=ラーメン |
指定のURLの後ろに「?」を付けて、その後にパラメータを「&」でつなげていきます
keyidは、WebAPI利用者ごとに割り当てられるIDで、ぐるなびWebサービスに登録するともらえます
hit_per_apge=30は、最大30件の店舗情報を返してくださいという検索件数指定のパラメータです
offset_page=1は、ヒットした検索結果の中から最初の30件(hit_per_pageの件数)を返してくださいということ
freeword=ラーメンは、検索ワードを「ラーメン」にして検索してくださいです
PHPプログラム内では検索ワード「ラーメン」の文字列は、文字コードUTF-8でURLエンコードして使うことになります
上記のPHPのプログラムの中でAPIにアクセスするURLを作っているのがこの部分です
1 |
$search_url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?" . "keyid=" . GURUNAVIAPI_ACCESS_KEY . "&hit_per_page=" . $hit_per_page . "&offset_page=" . $offset_page . "&freeword=" . urlencode_rfc3986(mb_convert_encoding($freeword, "UTF-8", INTERNAL_ENC)); |
このURLをブラウザに入力すると返ってくるテキストファイルの内容がブラウザに表示されますから、WebAPIがどんなものなのか実感できると思います(keyidがないとできないのでまずはAPIテストツールを使ってみてください)
Webサービスからデータを取得するWebAPIはこのような感じで、指定のURLに必要なパラメータをくっつけてアクセスするとテキストファイルが返ってくるというものです
このテキストファイルをPHPのプログラムの中で使えるようにして、Webページなどに利用するわけです
フリーワード検索ではなく、店舗IDで店舗指定して指定店舗だけの情報を取得する場合のレストラン検索APIのパラメータの設定はこのようになります
関数のパラメータで店舗IDを渡すようにして、レストラン検索APIでIDを設定して情報取得します
店舗IDは、フリーワード検索などで検索して取得する店舗情報のリストの中に入っています
1 2 3 |
$search_url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?" . "keyid=" . GURUNAVIAPI_ACCESS_KEY . "&id=" . $rest_id; |
WebAPIの使い方 JSONファイルの利用方法
WebAPIで返ってくるテキストファイルは、Webサービスによって、JSONだったりXMLだったり、どちらか選べたりするのですが、ぐるなびAPIの場合は、JSONのみです
レストラン検索APIのURLにパラメータ付きでアクセスし、返ってきたテキストファイルを配列に入れるというのがこの部分です
1 |
$json = json_decode(mb_convert_encoding(@file_get_contents($search_url, false, ARR_CONTEXT_OPTIONS), "UTF-8", INTERNAL_ENC)); |
$search_urlのURLにアクセスするとテキストファイルが送られてきますので@file_get_cotents関数は、指定ファイル($search_url)を文字列として読み込みます
返ってくるJSONファイルの中身の仕様は、ぐるなびのAPI仕様をみてください
こちらの記事も参考にしてください

WebAPIの使い方 取得データをPHPプログラム内へ
WebAPIで取得したJSONファイルをPHPプログラム内の変数$jsonに入れました
変数$jsonの中身をPHPプログラムの中で利用できるように配列$retに代入していきます
$json->restはレストラン情報の配列なので、$shopに代入してから、配列$ret[][]にforeachで反復処理して代入し直していくという処理になっています
$jsonに入っているデータ分の反復代入処理を行うことで、この関数は配列$ret[][]を戻り値として返します
1 2 3 4 5 6 7 8 9 10 |
$ret = array(); $n = 0; foreach ($json->rest as $shop) { // 中略 $ret[$n]['id'] = (string)$shop->id; $ret[$n]['name'] = (string)$shop->name; $ret[$n]['address'] = (string)$shop->address; // 中略 $n++; } |
WebAPIの使い方 Webページへの表示
WebAPIで検索結果を取得したレストラン情報のリスト中から、以下の情報を表示させるPHPプログラムの抜粋です
上記の関数の中で配列$ret[][]を戻り値にしましたが、この戻り値を$restsに代入しています
・レストランイメージ画像 ’shop_image1’
・レストランのサイトへのリンクつきレストラン名称 ’url’ ’name’
・住所 ’address’
・アスセス(路線・最寄り駅、出口、徒歩時間など)
’line’ ’station’ ’station_exit’ ’walk’
WebAPIを呼び出す自作の関数(gurunavi_search_restlist_v3)からの戻り値の配列$restsの中身をforeachでループして順次echo();で表示させています
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php //中略 $rests = gurunavi_search_restlist_v3($hit_per_page, $page_no, $freeword); foreach ($rests as $rest) { echo('<h2>' . $rest['name'] . '</h2>'); echo('<center>'); echo('<img src="' . $rest['shop_image1'] . '" alt="' . $rest['name'] . '" width="192">'); echo('</center>'); echo('<br />'); echo('<b><a href="' . $rest['url'] . '" target="_blank" rel="nofollow noopener">' . $rest['name'] . '</a></b> '); echo("<b>住所</b> " . $rest['address'] . "<br />"); echo("<b>アクセス</b> " . $rest['line'] . ' ' . $rest['station'] . ' ' . $rest['station_exit'] . " 徒歩" . $rest['walk'] . "分 " . "<br />"); } //中略 ?> |
WebAPIの使い方 使えるWebサービス例
なじみのあるサービスでもWebAPIが使えるサービスがけっこうあります
WebAPI 提供サービス例の一覧
こちらは、商品情報やレストラン情報、旅行情報、観光スポット、口コミなど身近な情報を提供しているWebAPIのサービスです
ぐるなび、楽天、グーグル、ヤフー、リクルート、アマゾンなど馴染みの深い情報提供サービスです
利用目的や商用利用の可不可、アフィリエイト利用条件などそれぞれのWebサービスの利用規約がありますから、利用規約に従って利用しましょう
ぐるなびWebサービス(無料)
Rakuten Developers(無料)
Google Maps Platform(有料)
Yahoo!デベロッパーネットワーク(無料)
リクルートWebサービス(無料)
AmazonアソシエイトのProduct Advertising API(無料)
楽天やアマゾンはアフィリエイトのURLもWebAPIで取得できますから、アフィリエイトもできます
ぐるなびやYahoo!は、アフィリエイトに利用するならバリューコマースを利用するのがおすすめです
ヘッダーにタグを埋め込めば、リンクを自動的にアフィリエイトリンクに変換するLinkSwitch機能と組み合わせることで簡単にアフィリエイトできます

WebAPIの使い方 おすすめレンタルサーバー
WebAPIを使うためのプログラミングを行う際に使うサーバーについてです
WordPressが使えて、PHPでWebプログラミングするなら、WordPressとPHPが利用できるサーバーが必要です
ロリポップ!サーバーをおすすめしてます
