AmazonWebサービス入門【PHP】

AmazonWebサービス(Product Advertising API)に入門する。

目標

キーワードなどに連動して、人気のランキングを出力するブログパーツを作る。
→サンプルサイト

まず

http://www.ajaxtower.jp/ecs/を見ながら、勉強と下準備。
amazonAPIを利用するには、
・Amazonアソシエイト・プログラムへの参加
・Access Key ID
・Secret Access Keyの取得
が必要。
アソシエイトは参加済みなので、API参加し、IDとKEYを取得。
手順に従い、リクエストコードを取得↓

http://ecs.amazonaws.jp/onca/xml? Service=AWSECommerceService
&AWSAccessKeyId=[AccessKeyId]
&AssociateTag=[AssociateID]
&Operation=ItemSearch
&SearchIndex=Books
&Title=HarryPotter
&Version=2009-07-01
&Timestamp=2012-11-13T10%3A38%3A55.000Z
&Signature=QhXHRaqbahhbyDIHwL4hWDi9WHJNlbwALLQJ2OQNVmY%3D

これをurlに入れると、XMLで出力される。タイムスタンプと署名は毎回取得しなければいけないらしく、そこんとこが厄介そう。
最終目標としては、amazonのリンクを作ってくれる、ウェブサービスを提供したい。

Services_Amazon

PEARのライブラリ『Services_Amazon』ならAmazon APIを簡単に使えるらしい。
ので、下記サイトを参考に作ってみた。
PEARの導入参考:http://blue-spiral.matrix.jp/20110528-pear-in-sakura.html
PHP処理プログラムコード初心者向け参考:http://nplll.com/archives/2011/06/_pearservices_amazon.php
PHP処理プログラムコード参考:http://or2.to/2012/04/service-amazon-2.html
入力フォーム参考:「Amazones」(http://aokobe.sakura.ne.jp/php/amazones.php)

最終コード

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . '絶対パス');
require_once('Services/Amazon.php'); // インクルードファイル
header("Content-type: application/x-javascript");//js
$amazon = new Services_Amazon('XXXXXX', 'XXXXXX', 'XXXXXX-22');// 『Services_Amazon』の定形
$amazon->setBaseUrl('http://ecs.amazonaws.jp/onca/xml'); // 検索範囲:日本のamazon
$category = $_GET['category'];//JavaScriptで飛ばしてくる変数。
$param = $_GET['param'];
$key = $_GET['key'];
$id = $_GET['id'];
$number = $_GET['number'];
$select = $_GET['select'];
$sort_select = $_GET['sort_select'];
if(!empty($key)){//もしキーワードがあれば検索。
$result = $amazon->ItemSearch($category, array('Keywords' => $key, 'ResponseGroup' => 'ItemAttributes, Images'));
}
elseif($sort_select == 'daterank'){//もしキーワードが空ならリリース日順。
$result = $amazon->ItemSearch($category, array('BrowseNode' => $param, 'Sort' => 'daterank', 'ResponseGroup' => 'ItemAttributes, Images'));
}
elseif(empty($key)){//もしキーワードが空ならランキング。
$result = $amazon->ItemSearch($category, array('BrowseNode' => $param, 'Sort' => 'salesrank', 'ResponseGroup' => 'ItemAttributes, Images'));
}
	for( $i = 0; $i <  $number; $i++ ){
		$asin = $result['Item'][$i]['ASIN'];
		$gazolink = "<div class='azimg'><a target='_blank' href=http://www.amazon.co.jp/exec/obidos/ASIN/".$asin."/".$id."/ref=nosim/><img src='".$result['Item'][$i]['LargeImage']['URL']."'></a></div>";
		$titlelink = "<div class='aztitle'><a target='_blank' href=http://www.amazon.co.jp/exec/obidos/ASIN/".$asin."/".$id."/ref=nosim/>".$result['Item'][$i]['ItemAttributes']['Title']."</a></div>";
		if ($result['Item'][$i]['ItemAttributes']['Title'] == "") {break;}//タイトルが空白なら、繰り返しがBREAK。
//▼//$selectで表示方法を分岐。
		if($select == 'txt'){//テキストだけ
			$mix = "<div class='az'>".$titlelink."</div>";
		}elseif($select == 'img'){//画像だけ
			$mix = "<div class='az'>".$gazolink."</div>";
		}else{//全部
			$mix = "<div class='az'>".$gazolink.$titlelink."</div>";
		}
//▲//
		$output = $output.$mix;//ループさせるための自己読み込み
	}
echo "document.write(\"$output\")";
?>

楽天ウェブサービス入門【PHP】

楽天ウェブサービスに入門する。
出力は「xml」と「json」が選べるらしいが、親しみのある「xml」をつかおう。
例によって、simplexmlで読もうとするが失敗。
うーん?わからん。
公式ページによると、SDKによるデータ取得がオススメらしい。
「SDK」とは、Software Development Kitの略で、その中の「Rakuten Web Service SDK for PHP」は、PHPアプリケーションから 楽天が提供しているAPIに、簡単にアクセスすることができる。(※PHP5.2.3以上)
つまりは、PHPライブラリの一種。
PHPのバージョンが心配だったが、PHP5.2.3以上。ミニバードやるじゃん。
見本通り書き呼び出し成功。
ただし、どうも楽天ウェブサービスでは大きい画像が取得できないらしい。
64×64の[smallImage]か128×128の[mediumImage]かの二択。悲しすぎる。
最後にブログパーツ化して、完成。

最終コード

<?php
header("Content-type: application/x-javascript");//js
$id = $_GET['id'];//JavaScriptで飛ばしてくる変数。
$number = $_GET['number'];
$select = $_GET['select'];
$key = $_GET['key'];
require_once dirname(__FILE__).'/sdk/autoload.php';//sdkをリクエスト
$client = new RakutenRws_Client();
$client->setApplicationId('XXXXXXXX');
$client->setAffiliateId($id);
if(empty($id)){//もしIDが空なら、XXXXXXXX
	$client->setAffiliateId('XXXXXXXX');
}
$response = $client->execute('ItemSearch', array(
  'keyword' => $key,
  'hits' => $number
));
//var_dump($response);
if ($response->isOk()) {
    // レスポンスを foreach でアクセスできます
    foreach ($response as $item) {
	$gazolink = "<a target='_blank' href=".$item['affiliateUrl']."><img src=".$item['mediumImageUrl']."></a>";
	$titlelink = "<div class='aztitle'><a target='_blank' href=".$item['affiliateUrl'].">".$item['itemName']."</a></div>";
//▼//$selectで表示方法を分岐。
		if($select == 'txt'){//テキストだけ
			$mix = "<div class='az'>".$titlelink."</div>";
		}elseif($select == 'img'){//画像だけ
			$mix = "<div class='az'>".$gazolink."</div>";
		}else{//全部
			$mix = "<div class='az'>".$gazolink."<br>".$titlelink."</div>";
		}
//▲//
		$output = $output.$mix;//ループさせるための自己読み込み
	}
}
echo "document.write(\"$output\")";
?>

2013年1月【読んだ本】

狼と香辛料〈17〉Epilogue (電撃文庫)
狼と香辛料〈17〉Epilogue (電撃文庫) 支倉 凍砂 文倉 十

アスキーメディアワークス 2011-07-08
売り上げランキング : 7752

Amazonで詳しく見る by G-Tools

久々に読み返す。
やっぱいいわ。もだえ苦しむおもしろさ。

WILL (集英社文庫)
WILL (集英社文庫) 本多 孝好

集英社 2012-03-16
売り上げランキング : 84226

Amazonで詳しく見る by G-Tools

『MOMENT』の続編。
主人公は葬儀屋森野。
面白い。これでもかっていうくらいに面白い。
余韻を残した『MOMENT』の最後も好きだけど、期待に応える『WILL』が素晴らしすぎる!!
次は、コメディータッチでパンクでロックなスピンオフも書いてほしいなw
それにしても本多孝好さん。曲者だわ。
思い返すと、『MOMENT』と『WILL』は大好きなのだけど、『真夜中の五分前』は糞だと思うし、『ALONE TOGETHER』はそこそこ。『FINE DAYS』はいまいち。『チェーン・ポイズン』は冗長で響かず。
自分の好みと合うのか合わないのかよくわからない作家さん。でも目に付くと買ってしまう不思議。多分好きなんだろう。

十二国記

小説

タイトル:月の影 影の海〈上〉―十二国記 (新潮文庫)

著者:小野 不由美

出版社:新潮社

発行日:2012-06-27

「お捜し申し上げました」──女子高生の陽子の許に、ケイキと名乗る男が現れ、跪く。そして海を潜り抜け、地図にない異界へと連れ去った。男とはぐれ一人彷徨(さまよ)う陽子は、出会う者に裏切られ、異形(いぎょう)の獣には襲われる。なぜ異邦(ここ)へ来たのか、戦わねばならないのか。怒濤(どとう)のごとく押し寄せる苦難を前に、故国へ帰還を誓う少女の「生」への執着が迸(ほとばし)る。シリーズ本編となる衝撃の第一作。

ファンタジーの超名作。
「人に薦めたくなる本」というのはなかなか出会えない。が、その希少な一冊。

アニメ

タイトル:十二国記 Blu-ray BOX3 「風の万里 黎明の空」

出版社:ジェネオン・ユニバーサル

ひとりの少女が試練に立ち向かいながら成長していく姿を、一大スケールで描く大河冒険ファンタジーアニメのBOX第3弾。鈴と祥瓊のふたりの少女と、王である陽子を軸に展開する「風の万里 黎明の空編」全18話を収録。

アニメも非常に良い。アニメ→小説でも両方十分楽しめる。世界観的には映像から入った方がいいかも。
アニメは特に「風の万里 黎明の空」が好き。楽俊の活躍とラストの清々しさが見どころ。たまらん!何回見ても良い名作。

ドラマCD

原作で飽き足らない人向け。

タイトル:「十二国記」 CDドラマ 十二国記夢三章

出版社:ビクターエンタテインメント

発行日:2003-02-21

小野不由美原作の人気アニメ「十二国記」のドラマCD。書き下ろしの、「十二国」の物語3編を収録。山田章博描き下ろしジャケット、特製トールケース仕様。

第一章 八麒麟
泰王登極のすぐ後くらいの話。つつがなく。
第二章 姉妹王
慶の先王の舒覚とその妹で偽王舒栄の話。
第三章 地に獣
『乗月』の前日譚。楽俊(ネズミ)と桓たい(クマ)の話。面白い。
どいつもこいつもひねくれやがって。

Blu-ray BOX特典ミニドラマ

Blu-ray……値は貼るけど、その価値はある。『赤楽篇』『大元篇』が特に良い。

タイトル:十二国記 Blu-ray BOX 1 「月の影 影の海」

出版社:ジェネオン・ユニバーサル

十二国記 Blu-ray BOX 1「月の影 影の海」特典ミニドラマ 赤楽篇

陽子が慶国の王となり、四年が経ったある日のこと。六太から、楽俊が雁の大学を卒業していたことを知らされた陽子は、なにも教えてくれなかった楽俊に会うために、景麒とともに巧に向かう。

「おいらの名は張清、字(あざな)は楽俊!」
赤楽4年の時分。『風の万里 黎明の空』が確か赤楽1年なので、それからしばらくしてからの話。ドラマCDオリジナル展開。楽俊と陽子が互いに気を使ってる微妙な距離感がイイ。ファンなら必聴!
十二国記 Blu-ray BOX 2「風の海 迷宮の岸」特典ミニドラマ 弘始篇

泰王と泰麒が姿を消して以降、度重なる災厄や妖魔に苦しみ続ける載の民を救ってほしい。載国将軍・李斎は命がけで黄海を渡り、景王陽子に願いを訴える。果たして陽子の決断は…?
TVアニメでは描かれなかったエピソードを収録。

『黄昏の岸 暁の天』のドラマCD
泰麒消失から6年後。決意と後悔と決意の話。
神のいる世界で生きる人々。人は自らを救うしかない。
十二国記 Blu-ray BOX 3「風の万里 黎明の空」特典ミニドラマ 平成篇

高里要の周囲で相次いで発生した奇怪な死。好奇の目と喧騒に晒された葬儀会場で新たな惨劇が起る。苦悩する要の前に現れた杉本優香までを闇が包み込もうとしたとき……。平成を舞台に描かれる新作CDドラマ!

アニメサイドの『魔性の子』。弘始篇の続き。
出鼻ですぐる君死んでやがる。教生の広瀬も出るけど、杉本さんも出てくる。電波な杉本さんも実は意外と好きだったりする。小説とちょっと違って面白い。
十二国記 Blu-ray BOX 4「東の海神 西の滄海」特典ミニドラマ 大元篇

雁国・霄山にある謀反人の墓前にて、陽子と楽俊は、尚隆と六太よりある昔話を聞いていた。尚隆が雁を妖魔に襲われることのない土地にすると約束をした五十年後のある日、六太は仙籍簿から更夜の名が消えていることに気づいたという。それが意味するものとは・・・。

恭国『図南の翼』もちょこっと出てくる。六太と更夜と珠晶の話。
時系列的には『図南の翼』の少し先。恭王の即位式。慶王即位の100年前くらい。図南アニメで見てーな。頑丘ぇ……

同人

ファンが多いので、二次創作も結構多い。
SS、夢小説、ニコニコ動画とか。色々探すのも楽しいかも。