楽天ウェブサービスには売れ筋ランキングを取得できる API が用意されており、PHP からでも簡単に呼び出せるように SDK が用意されている。
はじめに
楽天ウェブサービスの API を使用するためには「アプリ ID」というものを発行してもらう必要があるが、これは以下の記事で取得済みなので割愛する。
メモ 楽天ウェブサービスの API を使ってシンプルな商品リンクを作る
SDK の使い方
適当な場所に SDK を配置する。今回は vendor/rws-php-sdk/ というディレクトリに配置した。
PHPrequire_once('vendor/rws-php-sdk/autoload.php');
$client = new RakutenRws_Client();
$client->setApplicationId($rakuten_application_id);
$client->setAffiliateId($rakuten_affiliate_id);
$response = $client->execute('IchibaItemRanking', array(
'genreId' => 101205,
'imageFlag' => 1,
));
if ($response->isOk()) {
$rakuten = array();
foreach ($response as $i) {
$s = getimagesize($i['mediumImageUrls'][0]['imageUrl']);
if ($s) {
$w = $s[0];
$h = $s[1];
} else {
$w = 128;
$h = 128;
}
$rakuten[] = array(
'affiliateUrl' => $i['affiliateUrl'],
'imageUrl' => $i['mediumImageUrls'][0]['imageUrl'],
'imageHeight' => $h,
'imageWidth' => $w,
'itemName' => $i['itemName'],
);
}
}
$rakuten_application_id にアプリ ID (デベロッパー ID)、$rakuten_affiliate_id にアフィリエイト ID が入っているものとする。
genreId にジャンル ID を設定してやることでジャンルを限定できるようになっているので、テレビゲームのジャンル ID である 101205 を設定してみた。
ジャンル ID を調べる方法は API を使う方法もあるが、楽天ランキングのジャンル一覧から売れ筋ランキングのページを開いて、その URL の中に含まれている数字を見るのが簡単。
これで売れ筋ランキングの中で商品画像のあるものだけが $rakuten という配列に返ってくるので、その中から適当な商品を選んで装飾してブログのサイドバーなどに貼り付ければオッケー。
最新の API に対応させる
念のため SDK から最新の API を使用するように修正した。
rws-php-sdk\lib\RakutenRws\Api\Definition\IchibaItemRanking.php の 23 行目付近で versionMap を指定する箇所があり、そこに現時点での最新バージョン (version:2017-07-06) を追記する。
PHPclass RakutenRws_Api_Definition_IchibaItemRanking extends RakutenRws_Api_AppRakutenApi
{
protected
$autoSetIterator = true,
$isRequiredAccessToken = false,
$versionMap = array(
'2017-06-28' => '20170628', // 追記
'2012-09-27' => '20120927'
);
public function getService()
{
return 'IchibaItem';
}
public function getOperation()
{
return 'Ranking';
}
}
便利な使い方
売れ筋ランキング API はリアルタイムのランキングが取得できるらしいので、ブログに API を埋め込んでリアルタイムな情報を表示することもできそうだが、短い時間に API を叩きまくると一定時間利用できなくなる場合があると記載されているので要注意。
API で取得したデータをデータベースに保存しておいて、通常は API を使用せずデータベースから商品リンクを取ってくる仕組みにしておけば、API の制限に引っかかることもないだろう。
その場合、1 時間ごとなど定期的にデータベースを更新できれば良いのだがスタードメインに付いている無料レンタルサーバーだと cron を使うことができない。
それではどうしたかというと、PHP をウェブサーバー上のセキュリティをかけたディレクトリに配置しておいて、それをローカルのサーバーの cron で 1 時間ごとに wget するというパワープレイで実装した。
結論
スタードメインに付いている無料レンタルサーバーでも十分な気がしてきた。