PHPでISBNを用いて楽天ブックス書籍検索APIから本の情報を取得

ISBNを用いてAPIから本の情報を取得パート2！
[Mashup Award 10](http://mashupaward.jp/)に応募する際に楽天のAPIを使ってみました☆
ちなみに、応募した作品は[toshot](http://mashupaward.jp/works/253)です
※パート1は「[PHPでISBNを用いてAmazonAPIから本の情報を取得](http://qiita.com/na1412/items/1965d42a41b9eccd5126)」です

またまた、パラメータについての説明や書き方について詳しくは触れません(｡-人-｡)
が、できるだけ基本はコピペで、パラメータや設定についてはリンク先へ行ってもらえると取得できるようになってるつもりです…
※ISBNは本のバーコードの下にある数字のこと。今回は上段のバーコードの数字13桁(978…)を使う

※非常に残念ですが、[「api.rakuten.co.jp」で提供しているAPIの廃止について](http://rakuten-webservice.tumblr.com/post/77794559630/api-rakuten-co-jp-api)ということで、こちらの記事書き直さなきゃいけなくなりました。
app.rakuten.co.jpのAPIに切り替えるので少々お待ちください。
切り替え次第更新のお知らせを出させて頂きます(｡-人-｡)

##手順
1．事前準備(Amazonでキーの取得)
2．必要なパラメータの設定
3．パラメータを用いてリクエストURLの作成
4．楽天ブックス書籍検索APIから情報を取得

##1．事前準備
まずはじめに[楽天ウェブサービス](https://webservice.rakuten.co.jp/guide/)に[会員登録またはログイン](https://grp02.id.rakuten.co.jp/rms/nid/login)をして
・アプリID（デベロッパーID）
・application_seacret
・アフィリエイトID（アフィリエイトの際に必要）
を取得しておく。
楽天ウェブサービスの利用方法は[コチラ](https://webservice.rakuten.co.jp/guide/)

##2．必要なパラメータの設定
```php
/* ※は自分で設定してください */
define("APPLICATION_ID"     , '※アプリID');
define("APPLICATION_SEACRET", '※application_seacret');
define("AFFILIATE_ID"       , '※アフィリエイトID'); //アフィリエイトの際に必要
define("ACCESS_URL"         , 'https://app.rakuten.co.jp/services/api/BooksBook/Search/20130522?');
//BooksBook/Search/は楽天ブックス書籍検索APIを使用しているため
//20130522はバージョンを表している(基本的には最新でOK)

$params = array();
$params['format']              = 'json';
$params['applicationId']       = APPLICATION_ID;
$params['application_seacret'] = APPLICATION_SEACRET;
$params['affiliateId']         = AFFILIATE_ID; //アフィリエイトの際に必要
$params['isbn']                = '※欲しい本のISBN';
```
1で取得しておいたIDなどをそのままコピペ
また、欲しい本のISBNを設定

今回は[楽天ブックス書籍検索API](https://webservice.rakuten.co.jp/api/booksbooksearch/)を利用しているが、他にブックス系のAPIとして、[楽天ブックス総合検索API](https://webservice.rakuten.co.jp/api/bookstotalsearch/)や[楽天ブックスCD検索API](https://webservice.rakuten.co.jp/api/bookscdsearch/)など計9種類のAPIがあります。

##3．パラメータを用いてリクエストURLの作成
```php
$requestURL = ACCESS_URL;
foreach($params as $key => $param){
    $requestURL .= "&{$key}={$param}";
}
```
2で設定したパラメータをforeachでリクエストURLに付け足していく

##4．楽天ブックス書籍検索APIから情報を取得
```php
//結果がjson形式で帰ってくるのでdecodeし配列へ
$request = file_get_contents($requestURL);
$info 	 = json_decode($request, true);

//ここでvar_dump($info);とかで確認すると良いよ

// 出力パラメータを変数に
if (count($info) != 0) {
	foreach ($info as $key => $Items) {
		if ($key == "Items") {
			//出力パラメータの構造については下記で説明します
			$Item = $Items['0']['Item'];
			// 各情報を配列へ格納
			$title        = $Item['title']; //タイトル
			$author       = $Item['author']; //著者
			$manufacturer = $Item['publisherName']; //出版社
			$imgURL       = $Item['mediumImageUrl']; //本の表紙の中サイズのURL(サイズは小中大から選べる)  
			$bookURL      = $Item['itemUrl']; //本の商品ページ

			// DBで管理しやすいように文字コードの宣言やスペースの削除等を行う
			$title 	      = mb_convert_kana($title, "as", "UTF-8");
		}
	}
} else {
	//エラー
}

```
[json_decode](http://php.net/manual/ja/function.json-decode.php)の処理ですが、他のサイトでは[simplexml_load_string](http://php.net/manual/ja/function.simplexml-load-string.php)を使っているのが多かったのですが、エラーが解決出来なかったため[json_decode](http://php.net/manual/ja/function.json-decode.php)処理にしました。

取得したい情報は「出力パラメータ」と言い、[楽天ブックス書籍検索APIの出力パラメータ](https://webservice.rakuten.co.jp/api/booksbooksearch/#outputParameter)で確認できます。
必要に応じて適宜出力パラメータを呼び出してください。
phpであれば[var_dump](http://php.net/manual/ja/function.var-dump.php)で出力パラメータの中身が確認できるので、吐き出してみると良いと思います。

##おわりに
今回もDBへ繋ぎ込むためPHPを使いました！

また、Amazonと楽天のAPIでやってみて、率直な感想としては楽天の方がシンプルで簡単だった気がします。
楽天のAPIはまだまだたくさんありますが、今回のを少しいじれば他のAPIも触れると思います。

[Mashup Award 10](http://mashupaward.jp/)に向けて急いでやったので、コードは汚かったり見にくい部分があると思うけど、コピペしてパラメータや出力パラメータを適宜追加してもらえれば何かと使えるかなー…

という事で、以上『PHPでISBNを用いて楽天ブックス書籍検索APIから本の情報を取得』でした☆