WebAPI

PHPでWebAPIを呼び出し 簡単なプログラムで使ってみよう

PHPでWebAPIを呼び出し

簡単なプログラムでWebAPIを使ってみよう

Web上にある様々なデータサービスのサーバーから、API(Application Programming Interface)を使って、データを取得し利用することができます

WebサーバーにアクセスするためのインターフェースがWebAPIですね

Yahoo!デベロッパーネットワークのAPIを例に、PHPプログラムでの簡単なWebAPIの呼び出し方を書いておきます

PHPでWebAPI呼び出し 簡単プログラミングを始めよう

PHPプログラムでWebAPIを呼び出して、Webサービスが提供しているデータを取得し、Webサイトで利用したり、記事に挿入したり、ページを作成することができます

簡単なところからプログラムを作成して試し、イメージをつかんでみてください

PHPでWebAPI呼び出し Yahoo!デベロッパーネットワーク

Yahoo!デベロッパーネットワークのAPIは無料で利用できます

以前は、ぐるなびWebサービスのWebAPIを利用していましたが、ぐるなびWebサービスの無料サービスが終了したので、Yahoo!デベロッパーネットワークのAPIを利用してしました

ぐるなびWebサービスは飲食店の情報でしたが、Yahoo!のAPIはYahoo!ロコの飲食店(PayPayグルメ)以外にも、Yahoo!ロコのショッピング、レジャー、旅行、暮らし、生活で利用する施設の検索が可能です

こちらに使い方の導入編を書いてますので参考にしてください

PHPでWebAPI呼び出し 簡単プログラミング事例

ぐるなびWebサービスのぐるなびAPIを使って、レストラン情報をフリーワード検索しているプログラムを例に解説します

ぐるなびAPIは有料化、法人対象になりましたが、WebAPIの使い方は他のAPIでもあまり変わりはないので、ぐるなびAPIを例にして記載しています

PHPでWebAPI呼び出し ぐるなびAPIを使ってみよう

ぐるなびAPIのレストラン検索APIを使用したPHPの自作プログラム例です

ぐるなびのレストラン検索のWebAPIに、検索してくる店舗数と、何ページ目かと、フリーキーワードを渡すと、ぐるなびAPIはJSON(JavaScript Object Notation)形式のテキストファイルを返してくれる関数です

ぐるなびのレストラン検索のWebAPIが返してくるテキストファイルの中身は、指定した条件で検索を行ってヒットした店舗のレストラン情報のテキストデータ列です

返ってきたテキストファイルの中身を、PHPのプログラムの中で使えるように配列に入れて使います


// 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

利用するPHPの関数はphp.netで使用方法を確認することが多いです

PHPの細かい仕様を覚えていなくてもPHPマニュアルの言語リファレンス、関数リファレンスを辞書的に利用して確認しています

PHPマニュアル

PHPでWebAPI呼び出し APIの呼び出し方

WebAPIの呼び出し方は、指定されたURLにパラメータを付けてアクセスすることで行っています

例えば、ぐるなびのレストラン検索APIの場合のURLはこちらです

URL:https://api.gnavi.co.jp/RestSearchAPI/v3/

このURLの後ろにAPI仕様に記載されているパラメータを付けてアクセスします

https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=[アクセスキー]&hit_per_page=30&offset_page=1&freeword=ラーメン

指定のURLの後ろに「?」を付けて、その後にパラメータを「&」でつなげていきます

keyidは、WebAPI利用者ごとに割り当てられるIDで、ぐるなびWebサービスに登録するともらえます

hit_per_page=30は、最大30件の店舗情報を返してくださいという検索件数指定のパラメータです

offset_page=1は、ヒットした検索結果の中から最初の30件(hit_per_pageの件数)を返してくださいということ

freeword=ラーメンは、検索ワードを「ラーメン」にして検索してくださいです

PHPプログラム内では検索ワード「ラーメン」の文字列は、文字コードUTF-8でURLエンコードして使うことになります

上記のPHPのプログラムの中でAPIにアクセスするURLを作っているのがこの部分です


$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がどんなものなのか実感できると思います

Webサービスからデータを取得するWebAPIは、このような感じで指定のURLに必要なパラメータをくっつけてアクセスするとテキストファイルが返ってくるというものです

このテキストファイルをPHPのプログラムの中で使えるようにして、Webページなどに利用するわけです

フリーワード検索ではなく、店舗IDで店舗指定して指定店舗だけの情報を取得する場合のレストラン検索APIのパラメータの設定はこのようになります

関数のパラメータで店舗IDを渡すようにして、レストラン検索APIでIDを設定して情報取得します

店舗IDは、フリーワード検索などで検索して取得する店舗情報のリストの中に入っています

$search_url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?"
. "keyid=" . GURUNAVIAPI_ACCESS_KEY
. "&id=" . $rest_id;

PHPでWebAPI呼び出し JSONファイルの利用方法

WebAPIで返ってくるテキストファイルは、Webサービスによって、JSONだったりXMLだったり、どちらか選べたりするのですが、ぐるなびAPIの場合は、JSONのみです

レストラン検索APIのURLにパラメータ付きでアクセスし、返ってきたテキストファイルを配列に入れるというのがこの部分です

$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)を文字列として読み込みます

mb_convert_encoding関数は、テキストファイルの文字エンコーディングをUTF-8に変換しています

json_decode関数でJSON形式のファイルをデコードして、PHPの変数$jsonに入れています

返ってくるJSONファイルの中身の仕様は、API仕様を確認してください

PHPでWebAPI呼び出し 取得データをPHPプログラム内へ

WebAPIで取得したJSONファイルをPHPプログラム内の変数$jsonに入れました

変数$jsonの中身をPHPプログラムの中で利用できるように配列$retに代入していきます

$json->restはレストラン情報の配列なので、$shopに代入してから、配列$ret[][]にforeachで反復処理して代入し直していくという処理になっています

$jsonに入っているデータ分の反復代入処理を行うことで、この関数は配列$ret[][]を戻り値として返します

$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++;
}

PHPでWebAPI呼び出し Webページへの表示

WebAPIで検索結果を取得したレストラン情報のリスト中から、以下の情報を表示させるPHPプログラムの抜粋です

上記の関数の中で配列$ret[][]を戻り値にしましたが、この戻り値を$restsに代入しています

・レストランイメージ画像 ’shop_image1’
・レストランのサイトへのリンクつきレストラン名称 ’url’ ’name’
・住所 ’address’
・アスセス(路線・最寄り駅、出口、徒歩時間など)
’line’ ’station’ ’station_exit’ ’walk’

WebAPIを呼び出す自作の関数(gurunavi_search_restlist_v3)からの戻り値の配列$restsの中身をforeachでループして順次echo();で表示させています

<?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 />");
 }
//中略
?>

PHPでWebAPI呼び出し 簡単なWebAPI作例

PHPでWebAPI呼び出し 簡単なWebAPIの作例

お店・施設の検索サイト

URLにパラメータを渡してアクセスするとHTMLのレスポンスを返すサイトなので、一種の簡易的なWebAPIとも考えられます

Yahoo!APIを使用したお店の検索

下記に記載しているようなWebサービスは、レスポンスでjsonファイルやXMLファイルを返してきます

ブラウザでアクセスすると文字列が羅列表示されるだけです

ですから、プログラムでレスポンスを受けて、解析して処理し表示することになります

jsonやXMLではなく、HTMLに整形することによってWebページが表示されます

PHPでWebAPI呼び出し 使えるWebサービス例

なじみのあるサービスでもWebAPIが使えるサービスがけっこうあります

WebAPI 提供サービス例の一覧

こちらは、商品情報やレストラン情報、旅行情報、観光スポット、口コミなど身近な情報を提供しているWebAPIのサービスです

ぐるなび、楽天、グーグル、ヤフー、リクルート、アマゾンなど馴染みの深い情報提供サービスです

利用目的や商用利用の可不可、アフィリエイト利用条件などそれぞれのWebサービスの利用規約がありますから、利用規約に従って利用しましょう

ぐるなびWebサービス(無料サービス停止)

Rakuten Developers(無料)

Google Maps Platform(有料)

Yahoo!デベロッパーネットワーク(無料)

リクルートWebサービス(無料)

AmazonアソシエイトのProduct Advertising API(無料)

楽天やアマゾンはアフィリエイトのURLもWebAPIで取得できますから、アフィリエイトもできるようになっています

Yahoo!は、アフィリエイトに利用するならバリューコマースを利用することになります

バリューコマースのLinkSwitch機能と組み合わせることでアフィリエイトもできます

無料簡単登録 バリューコマース

WebAPIサービスを使う場合は利用条件を確認しましょう

PHPでWebAPI呼び出し 簡単なプログラムで利用してみよう

WordPressでサイトを運営していますが、WordPressもPHPを利用していますから、WordPressとPHPで作成するプログラムは融合しやすいと思います

PHPに対応しているサーバーであれば、PHPで作成したプログラムを動かすことが可能です

WordPressを利用しているサーバーであれば、PHPのプログラミングに使えることが多いのです

安い導入用のレンタルサーバーでも、簡単なPHPプログラムを作成して、WebAPI利用の練習をすることができます