connet.lolipop.jp
はじめに
PHP言語を使って、楽天商品検索APIを利用した商品検索プログラム(Webアプリ)の作成について、ご紹介したいと思います。
楽天APIは初めていう方にご参考になればと思います。なお、当サイトは初級者様向きです。上級者様は読み飛ばしてください。
プログラム内容はできるだけ少ないコードで作ります。基礎的な一例として見て下さい。
準備
■プラットホーム
OS-Windows

■XAMPP
Webアプリケーションの開発をローカルに簡単に構築でき、フリーソフトウェアをパッケージと してまとめた、「XAMPP」フリーソフトを使用します。
・本家サイト
XAMPP
「XAMPP」の操作説明は省略します。

■プログラムコーディングにテキストエディターを用意
エディターならなんでもかまいませんが(メモ帳でも)、Windowsで動作するフリーエディタで高機能ながら高速で動作する Notepad++がお勧めです。

■楽天ウェブサービスのIDを用意
商品検索アプリ作成には、IDの取得が必須になります。
・アプリケーション ID(開発者)
・アフィリエイト ID(アフィリエイト)
IDをお持ちでない方は、こちらから取得することが出来ます。
Rakuten Developers

■API関連情報-Rakuten Developers
プログラムに設定する各種パラメーターの一覧です。
上述のサイトからでも確認できます。
API一覧
楽天市場系API -> 楽天市場商品検索API

■作成するファイルの保存場所
XAMPPアプリケーションのドキュメントルートに保存します。
たとえば、XAMPPをCドライブに配置している場合(ファイル名 例:sample.php)。
c:¥xampp¥htdocs¥sample.php
商品検索APIのプログラム設定方法と解説
■共通パラメーター
▸IDの指定
applicationId = 'アプリケーションID'
affiliateId = 'アフィリエイトID'

▸取得する商品情報のフォーマット形式を指定
format = xml -> ここではxml
format = json


■固有パラメーター
▸取得したい商品名を指定
keyword = '*****' -> UTF-8でURLエンコードした文字列

▸取得する商品の検索種別を指定
sort = '-reviewCount' -> ここではレビュー件数降順

▸取得ページを指定
page = 1 -> 初期値1ページ(1から100までの整数)

▸1ページの商品取得件数を指定
hits = 10 -> ここでは10件(1から30までの整数)


■リクエストURL
リクエストURLには、以下のようなかたちでパラメーターにデータを設定し、改行を入れないで一行にまとめます。
ここでは、パラメーターには利便性を考慮して変数で代入、URLを$rakutenUrlの変数にまとめてあります。
      $rakutenUrl = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?format=xml&keyword=".$url_word."&sort=".$url_sort."&page=".$page."&hits=".$hits_set."&applicationId=".$applicationId."&affiliateId=".$affiliateId;
      
■商品を取り出す
$contents = @file_get_contents( $rakutenUrl );


■XML形式に変換する
$xml = simplexml_load_string( $contents );


■XMLファイルから商品(Item)の情報を取得・表示する
      foreach( $xml->Items->Item as $item ) {
        $affiliateUrl = $item->affiliateUrl;
        $mediumImageUrl = $item->mediumImageUrls->imageUrl;
          |
          |
          // 商品情報の表示処理
      }
ソースコード
sample.php
<?php

// 初期化
$keyword = '';
$page = '';

// 検索入力キーワードのチェック
if (isset($_POST['searchtextbox'])) {
  $keyword = $_POST['searchtextbox'];
  // 空白入力
  $pattern="^(\s| )+$";
  if(mb_ereg_match($pattern, $keyword)) {
    // デフォルト設定
    $keyword='カニ';
  }
}

// 検索キーワードのデフォルト設定(初期値)
if ($keyword == '') {
  $keyword = 'カニ';
}

// ソートのデフォルト設定 - レビュー件数降順
$sort = '-reviewCount';

// 取得ページの初期設定
if ($page == '') {
  $page = 1;
}

// 1ページあたりの取得件数(商品数)
$hits_set = 10;

// 検索キーワード入力ボックス
$searchTextBox = '
<form action="" method="POST" name="form">
<input type="text" name="searchtextbox" value="'.$keyword.'" placeholder="キーワードで探す" style="width:240px;height:28px;vertical-align: top;">
<input type="submit" name="btn" value="Go" style="font-size:1.1rem;height:34px;vertical-align: top;">
</form>
';

// エンコーディング
$url_word = htmlspecialchars(urlencode($keyword));
$url_sort = htmlspecialchars(urlencode($sort));

// アプリID
$applicationId='●●●●●●';
// アフィリエイトID
$affiliateId='●●●●●●';

// 楽天リクエストURLから楽天市場の商品情報を取得
$rakutenUrl = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?format=xml&keyword=".$url_word."&sort=".$url_sort."&page=".$page."&hits=".$hits_set."&applicationId=".$applicationId."&affiliateId=".$affiliateId;

// レスポンス取得
$contents = @file_get_contents($rakutenUrl);

// XMLオブジェクトに変換
$xml = simplexml_load_string($contents);

print <<< aff
<!DOCTYPE html >
<html lang="ja">
<head>
<meta charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<TITLE>楽天商品検索APIを利用した商品検索サンプルプログラム</TITLE>
<meta name="Keywords" content=""> 
<meta name="Description" content="">
</head>
<body>
<div id="container" style="padding:10px 10px 40px;color:#1D56A5;">
<div style="font-size:1.6rem;">楽天商品検索APIを利用した楽天商品検索サンプルプログラム</div><br />
aff;

print '<br />';

// 検索キーワード入力ボックス
print '<table><tr><td >'.$searchTextBox.'</td></tr></table>';

// 商品表示
print '<table border="0"><tr>';
$i = 0;
foreach($xml->Items->Item as $item){
  $affiliateUrl = $item->affiliateUrl;
  $mediumImageUrl = $item->mediumImageUrls->imageUrl;
  $detail = $item->itemCaption;
  $detail = mb_substr($detail, 0, 30,"UTF-8") .'・・・';
	
  // 商品表示
  print '<td style="padding:10px;">
  <div><a href="'.$affiliateUrl.'" target="_blank"><img src="'.$mediumImageUrl.'"></a><br />'. $detail .' </div>
  </td>';
  
  $i++;
  if ($i%5 == 0) {
    print '</tr><tr>';
  }
}
print '</table>';
print '</div><!--end/container-->';
print '<br />';
print '</body></html>';
?>
プログラムを実行してみる
Webサーバーを起動します。
xamppディレクトリに「xampp-control.exe」という各種サーバーを管理するファイルがあります。
このファイルをダブルクリックして「XAMPP Controll Panel」を開いて下さい。
開いたパネルに「Apache」があります。これがWebサーバーです。

「Start」ボタンを押して「Apache」を起動させます。
起動を確認してから、ブラウザを開いてURL欄に以下のようにアドレスを入力します。
http://localhost/sample.php
問題なく動作するか確認してみて下さい。
楽天商品検索アプリの作成例
Search
Google


↟ このページの先頭へ