やっとめっけた、僕でも設置できたAmazon AWS (REST without nusoap) | めっけもん - ブログ -

やっとめっけた、僕でも設置できたAmazon AWS (REST without nusoap)

Website Publisherというサイトに、Amazon Web Services を使ったストア立ち上げ例がScriptサンプルまでついて説明されていた。 [ ページ ]  ページ読み終わるごとに、ページ一番下、右のところをクリックして合計4ページ。4ページ目にスクリプトの Source codeがある。

要は、nusoapを使わずに REST 方式 (ここでしろうとなりにメモッたページとか参照) で表示されるページを、phpで自前のURLやらドメイン上ですっきりと表示させる方法。これができるようになると、ブログとかサイトとかで、縦長、横長にベストセラーな商品とかをすっきり配置するための応用ができるんじゃないかと。とりあえず上のページで紹介されているのは、これのようにオールマイティーなカテゴリー表示はそのままではできない。どんな感じかというと、こんな感じ。紹介されていたサンプル・コードでは、modeやらが特定された形になっている。

Website Publisherのページにたどりつく前に、ITmediaに、WebサービスをAmazonで知るという特集ページをみていた。そこでは、AWS (Amazon Web Service)ではなく、 ECS (Amazon E-Commerce Service)を高度に使いたおすための説明ページだったので、ちょっと僕のレベルではすっとはいってこなかった。いずれにしても、RESTでひっぱってきたAmazonのデータ (XML) をそのままでXSLでみやすくする代わりに、phpを使った(でも、nusoapは使わずに)方法が詳しく、あるいはビギナーでも使えそうな(かなりコピペに近いレベル)scritptが載ったところを探していた、その過程で参考にしたページ。やっぱ、英語で理解しようとするのと、日本語でイメージつくるのとでは楽さ、理解度が違ってくるから。

Website Publisherのページで入手できるscriptは次の4つ。日本語で表示させるためにいじった箇所等のメモが以下。しろうとがめっけて試したということを少し書いただけなので、流し読み参考程度。というか本人の備忘録がわり。よぅ忘れるんだ、何いじったか。

aws-funcions.php
browse.php
product.php
search.php

この4つのファイルすべてが連携して作動する。 (ダウンロードするときは.txt形式になっているので、.php拡張子に変更必要)

設定(個別にいじる部分はあるけれど)の要になっているのが、 aws-functions.php。

英語で動作させることができたのを確認してから、日本語表示できるようにいじった。

1) aws-functions.php
$AssociatesID = ' ';
$DevToken = '';

アソシエイトidとデベロッパー・トークン(現在は発行されておらず、Subscrition IDを使う 取得はこちらから申し込める。

$ArraySearchString = array( の部分は、amazon.comとamazon.co.jpでは違うので、それぞれのサイトあるいはKitのガイドを参照して探す。

// --- Build XML Link ---
の $xmlFeed = の部分は、日本語 (amazon.co.jp) に替える時、

$xmlFeed = 'http://xml-jp.amznxslt.com/onca/xml3?t=' .$AssociatesID; // 日本語用のURLに変更
$xmlFeed .= '&locale=jp&mode=' .$Mode; // &locale=jpを追加

// --- Include the cache package ---
// IMPORTANT - enter the path to Lite.php

require_once("/home/.../Lite.php");

Lite.php というサーバー上にキャッシュを残せるスクリプトが、4ページ目の
Download Cache Lite からダウンロードできる。
結局その中にある Lite.phpだけ使うことになる。
require_once("内に Lite.phpまでのpathをいれる。

$options = array(
"cacheDir" => "cache/", // キャッシュの一時保存場所
"lifeTime" => 60*60*1 // キャッシュの寿命 左の場合は1時間
);

2) browse.php
このファイルは、10商品まで表示する。

// --- Set Mode ---

$Mode = 'electronics-jp'; // 日本語のmodeの中からaws-funcions.phpの$ArraySearchStringの箇所で指定した
// nodeと同類のものにしないと作動しない。表示させるカテゴリーの大枠が固定される

<html><head>と<title>の間に
文字化け対策で、
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
を挿入、search.php、product.phpの箇所でも同じ。

3) search.php
browse.phpの検索機能は、このファイルと連携している。
// --- Set Mode ---の箇所のmodeをほかのファイルと同じものにそろえる。
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

4) product.php
browse.phpとsearch.phpで表示される商品へのリンクが、このファイルと連携している。

// --- Set Mode ---の箇所のmodeをほかのファイルと同じものにそろえる。
<meta http-equiv="content-type" content="text/html; charset=UTF-8">


メモしたところに書き忘れがなければ、phpが使えるサーバーであれば、これでいけるはず。もし、文字化けするようであれば、ファイルをutf-8で保存しなおしてみる。

これで、ところどころ英語表示になっているところを日本語になおしたり、スタイルシートを調整したりしながら、好みの表示スタイルに変えていける。

ほんと、メモそのものな書き方。我ながらあっぱれ。


nusoapを使ったアマゾンお手軽検索版をこれに全面的に入れ替えできるかどうか、と

箱入り紹介の型入れできるかどうか、これらが次の課題。


[追記』 (2006.6.8)

// --- Set Mode --- 文字化け対策のところ、
見えてなかったので修正。

アマゾンの主要な node 別に対応できるよう、いくつもスクリプトをLite.phpと置いたせいだろうか、生成されるキャッシュの量がかなりなものになっていた。 100MB軽くこえるくらい。サーバーによりけりなのか、アクセスがそれなりにあったからだろうか?よくは分からないけれど、小さなキャパのレンタル・サーバーだとおっつかないので要注意。



[追記] (2005.10.14)

コメントスパムのipをコレクションしていたけれど、禁止ipは40個までしか登録できないのと、たぶん偽装しているとは思うから意味ないのかも知れない、で、いいかげん疲れてきたので、コメントをオフにした。