(最終更新日:2009/8/2)
APIで取得した商品情報をphpで一覧表示する
前回は、ヤフオクWeb APIのリクエストURLについて説明しました。
今回は、phpを使ってAPIのレスポンス結果からヤフオク商品情報を一覧表示してみます。
リクエスト例は前回と同じリクエストを使います。(ヤフオクのカテゴリ「空気清浄器」からキーワード「中古」に関連するヤフオク商品のうち価格が最大で3万円の商品。)

今回は、phpを使ってAPIのレスポンス結果からヤフオク商品情報を一覧表示してみます。
リクエスト例は前回と同じリクエストを使います。(ヤフオクのカテゴリ「空気清浄器」からキーワード「中古」に関連するヤフオク商品のうち価格が最大で3万円の商品。)
http://auctions.yahooapis.jp/AuctionWebService/V1/Search?appid=あなたのID&category=2084006906&query=%e4%b8%ad%e5%8f%a4&sort=end&order=a&thumbnail=1&aucmaxprice=30000
下の画像はレスポンス結果のサンプルです。

phpのサンプルプログラム(simplexml_load_file())
APIのレスポンスは上記画像を見ても解かるとおり、xml形式で返ってきます。
xml形式の情報をphpで処理するにはsimplexml_load_file()という便利でシンプルな関数がありますので、この関数を以下のサンプルプログラムでは利用しています。
また、レスポンスには様々な情報がありますが、サンプルプログラムでは商品名称、商品の画像、現在の価格、入札件数、終了時刻、詳細情報URLの6つのみを使用しています。
その他のレスポンスに関しては、ヤフオクWeb APIのマニュアルページを参考にしてください。
Yahoo!オークション検索Web APIマニュアルページ
それでは、以下にphpのサンプルプログラムを示します。
ソース中にコメントを書き込んでいるんで、phpの基礎を知っていればこのソースも簡単に理解できると思います。
そして、下のように関数getAndDispFunc()を呼び出して利用します。
xml形式の情報をphpで処理するにはsimplexml_load_file()という便利でシンプルな関数がありますので、この関数を以下のサンプルプログラムでは利用しています。
また、レスポンスには様々な情報がありますが、サンプルプログラムでは商品名称、商品の画像、現在の価格、入札件数、終了時刻、詳細情報URLの6つのみを使用しています。
その他のレスポンスに関しては、ヤフオクWeb APIのマニュアルページを参考にしてください。
それでは、以下にphpのサンプルプログラムを示します。
<?php
function getAndDispFunc( $keyword ){
//リクエストURL作成
$requestUrl = "http://auctions.yahooapis.jp/AuctionWebService/V1/Search?";
$requestUrl .= "appid=あなたのID";
$requestUrl .= "&category=2084006906"; //カテゴリ「空気清浄機」
$requestUrl .= "&query=" . urlencode( $keyword ); //検索キーワードをUTF-8でURLエンコード
$requestUrl .= "&sort=end&order=a"; //ソート
$requestUrl .= "&thumbnail=1"; //画像ありの商品の絞り込み
$requestUrl .= "&aucmaxprice=30000"; //最大価格
//APIリクエスト実行
$xmlData = @simplexml_load_file($requestUrl);
//APIレスポンスXMLよりHTMLに変換
$retHtml = "";
$retHtml .= "<table>\n";
$iLoop = 0;
foreach ($xmlData->item as $itemValue) {
if( $iLoop % 2 == 0 ){
$retHtml .= "<tr><td>\n";
} else {
$retHtml .= "<td>\n";
}
//タイトル
$retHtml .= $itemValue->title . "</br>\n";
//画像
$retHtml .= "<div class=\"oImg\"><img src=\"" . $itemValue->img . "\" alt=\"" . $itemValue->title . "\" /></div>\n";
//現在の価格
$retHtml .= "</br>現在の価格 : " . $itemValue->price . "</br>\n";
//入札件数
$retHtml .= "入札件数 : " . $itemValue->bids . "件</br>\n";
//終了時刻
$retHtml .= "終了時刻 : " . $itemValue->endtime . "</br>\n";
//リンク
$retHtml .= "<img src=\"/img/button/triangle_blue.gif\"><a href=\"" . $itemValue->url . "\">ヤフオクで詳細を見る、購入する</a></br>\n";
if( $iLoop % 2 == 1 ){
$retHtml .= "</td></tr>\n";
} else {
$retHtml .= "</td>\n";
}
$iLoop++;
}
if( $iLoop % 2 == 1 ){
$retHtml .= "<td></td></tr>\n";
}
$retHtml .= "</table>\n";
echo $retHtml;
}
?>
ソース中にコメントを書き込んでいるんで、phpの基礎を知っていればこのソースも簡単に理解できると思います。
そして、下のように関数getAndDispFunc()を呼び出して利用します。
<?php getAndDispFunc( "中古" ); ?>
引数には要求するキーワードを指定しています。実行結果
上のサンプルプログラムの実行結果は下のようになります。
富士通ゼネラル プラズマイオンUV脱臭機 DAS-301V 08年 中古
ヤフオクで詳細を見る、購入する
|
値下げ出品□ナショナル空気清浄機□中古品取説あり□National
ヤフオクで詳細を見る、購入する
|
ツインバード タイマー付き空気清浄機 AC-4354型 中古
ヤフオクで詳細を見る、購入する
|
●◆HITACHI日立 空気清浄機 EP-V12 中古品 その①★382
ヤフオクで詳細を見る、購入する
|
【質屋伏古】ルックスジャパン 空気清浄機 AC3 中古
ヤフオクで詳細を見る、購入する
|
中古品☆ホワイト☆ シャープ プラズマクラスター IG-B20
ヤフオクで詳細を見る、購入する
|
中古品 車用 IG-BC15
ヤフオクで詳細を見る、購入する
|
業務用空間清浄システム VW-VF8A 中古品 ウィルスウオッシャー
ヤフオクで詳細を見る、購入する
|
三菱 空気洗浄機 MA-803 03年製 中古品
ヤフオクで詳細を見る、購入する
|
トヨトミ 空気清浄機(ETK-20E)<中古品>
ヤフオクで詳細を見る、購入する
|
◆ZOJIRUSHI/象印 ◆PA-QD13◆空気清浄機/ホワイト◆中古品◆
ヤフオクで詳細を見る、購入する
|
札幌発!アムウェイ空気清浄機用フィルタ(粒子用)E-2528-J 中古
ヤフオクで詳細を見る、購入する
|
TOSHIBA 東芝 空気清浄機 CAF-P5 中古特価!早期終了!
ヤフオクで詳細を見る、購入する
|
MITSHUBISHI (三菱) 加湿器付き 空気清浄機 中古品 MA-265
ヤフオクで詳細を見る、購入する
|
■三洋 空気清浄機用 中古リモコン /SANYO ABC-K1A【RA-SN01】
ヤフオクで詳細を見る、購入する
|
■□【中古】SHARPシャープ FU-M40CX-5 空気清浄機□■
ヤフオクで詳細を見る、購入する
|
Just Clean オゾン殺菌・脱臭機 JC-400 中古
ヤフオクで詳細を見る、購入する
|
★☆三菱☆空気清浄器・加湿器MA-516SV☆’06年製☆中古品☆★
ヤフオクで詳細を見る、購入する
|
◎1◎セラヴィ 空気清浄機 Watering Air Refresher 中古品
ヤフオクで詳細を見る、購入する
|
★中古美品インフルエンザ予防に!加湿空気清浄機 KC-W65(白)★
ヤフオクで詳細を見る、購入する
|
I07732★PANTONE MAGIC BALL/GOLD マジックボール M 中古
ヤフオクで詳細を見る、購入する
|
札幌発 中古空気清浄機
ヤフオクで詳細を見る、購入する
|
☆トヨトミ マイナスイオン発生空気清浄機 ETK-1 中古
ヤフオクで詳細を見る、購入する
|
National/ナショナル★空気清浄機,中古美品、5000、から
ヤフオクで詳細を見る、購入する
|
◇AMWAY アムウェイ アトモスフィア空気清浄機 05年製 中古並品A
ヤフオクで詳細を見る、購入する
|
◇AMWAY アムウェイ アトモスフィア空気清浄機 07年製 中古並品Q
ヤフオクで詳細を見る、購入する
|
☆シャープ FU-P60CX 空気清浄機 除菌イオン 中古品☆
ヤフオクで詳細を見る、購入する
|
植物を使った空気清浄 ANDREA アンドレア ホワイト《中古品》
ヤフオクで詳細を見る、購入する
|
象印/空気清浄器/PA-QD13/08年製/中古/美品!
ヤフオクで詳細を見る、購入する
|
コーウェイCAIRS(ケアース)空気清浄器・AP-1004AH 中古品
ヤフオクで詳細を見る、購入する
|
HELLO KITTY 空気清浄機 AC-4313-KT 中古動作OK!
ヤフオクで詳細を見る、購入する
|
▲高性能空気清浄機 クリエア 日立 EP-CV1000 08年製 中古品▲
ヤフオクで詳細を見る、購入する
|
[I136]ナショナル空気清浄器 F-P03S2 中古品です♪
ヤフオクで詳細を見る、購入する
|
5010[r+]National空気清浄機エアーリッチF-P15MZ卓上用 中古品
ヤフオクで詳細を見る、購入する
|
8667[r+]Nationalナショナル除菌除湿乾燥機ホワイトF-YZB60中古
ヤフオクで詳細を見る、購入する
|
★★空気清浄機 ツインバード ファンディタイニーE 中古★★
ヤフオクで詳細を見る、購入する
|
DAIKIN ダイキン 空気清浄機 ACM6C-N (中古)
ヤフオクで詳細を見る、購入する
|
中古 プラズマクラスター空気清浄機(12畳) FU-G250CX
ヤフオクで詳細を見る、購入する
|
●◆HITACHI日立 空気清浄機 EP-V12 訳あり 中古品 その②
ヤフオクで詳細を見る、購入する
|
象印(ZOJIRUSHI)製 空気清浄機 PA-RA14、完動品中古
ヤフオクで詳細を見る、購入する
|
【アロボ ALOBO】400円相当ソリューション中古ラベンダー
ヤフオクで詳細を見る、購入する
|
★☆SHARP プラズマクラスターイオン発生機 中古品☆★
ヤフオクで詳細を見る、購入する
|
F230 即決 中古★東芝 空気清浄機用リモコン CAF-R2
ヤフオクで詳細を見る、購入する
|
即決●TWINBIRD コンパクト空気清浄機 AC-4311●中古
ヤフオクで詳細を見る、購入する
|
National 加湿空気清浄機 アクアリフレ EH4000 02年製 中古品
ヤフオクで詳細を見る、購入する
|
ツインバード 空気清浄機 AC-4357 中古品 12畳用 新生活に
ヤフオクで詳細を見る、購入する
|
【中古美品】Panasonic ナノイー発生器 F-GME03 グリーン
ヤフオクで詳細を見る、購入する
|
中古★サンヨー空気清掃機ABC-HP14☆完動品!
ヤフオクで詳細を見る、購入する
|
中古 真っ白 空気清浄器
ヤフオクで詳細を見る、購入する
|
★アムウェイ空気清浄器E-2526-J 中古品 Amway
ヤフオクで詳細を見る、購入する
|
必要なphpの知識
上でも書きましたが、基本的なphpの知識(変数、if,forなどの制御構文)が必要になってくると思います。
ネットにあるphpのプログラミング講座を見る、または初心者用のphp入門書を1冊購入すれば充分でしょう。
ネットにあるphpのプログラミング講座を見る、または初心者用のphp入門書を1冊購入すれば充分でしょう。
ウェブサービス(API)にはキャッシュ機能を使うべき
今回のヤフーWeb APIに限らずウェブサービス全般に言える事ですが、ウェブサービスを利用する場合はなるべくキャッシュ機能をつけましょう。
キャッシュ機能を利用することでHP作成者、HPに訪問してくれるユーザ、ウェブサービスを提供しているサイト全てにメリットがあります。
キャッシュ機能をつければ、同じリクエストなら毎回リクエストする必要がなくなり、サーバへの負荷がなくなりますし、スピードも速くなります。
また、ウェブサービスには大体「○秒に○回までのリクエストを上限にする」という規約があります。
それらを考慮するとキャッシュ機能は必須です。
Cache_Liteの詳細、使い方については別ページで説明していますのでそちらを参考にして下さい。
phpのキャッシュ機能にpearのCache_Lite()を使用する
キャッシュ機能を利用することでHP作成者、HPに訪問してくれるユーザ、ウェブサービスを提供しているサイト全てにメリットがあります。
キャッシュ機能をつければ、同じリクエストなら毎回リクエストする必要がなくなり、サーバへの負荷がなくなりますし、スピードも速くなります。
また、ウェブサービスには大体「○秒に○回までのリクエストを上限にする」という規約があります。
それらを考慮するとキャッシュ機能は必須です。
(と言っておきながら上の例ではキャッシュ機能をつけていませんが…。まずは余計なコードをつけずになるべく簡略化したかったからです。)
そして、phpではキャッシュ機能が作れるpearモジュールCache_Liteがあります。Cache_Liteの詳細、使い方については別ページで説明していますのでそちらを参考にして下さい。
