Google Crisis Response(Google)
災害に関する情報源や、行方不明者情報の収集と検索を行う『パーソンファインダー』を初めとするツールの提供が行われています。

2012年6月30日 土曜日

Amazon アソシエイト(アフィリエイト)で価格を表示する条件

Filed under: AmazonLink,アフィリエイト
タグ:, , ,
時間:19時59分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

現在開発中の AamzonLink で価格表示が出来るようにすることを検討しています。取得することは問題なく出来るのですが、規約などでいろいろと条件が定められていて良くわからないのでまとめてみることにしました。Amazon ではアフィリエイトのことをアソシエイトと呼んでいますが、一般的ではないので以降ではアフィリエイトと表記します。

ここでのまとめは一個人の考えによるもので、きちんと公式に確認が取れたわけではありません。参考にするのは構いませんが、内容についての保証はできないことを承知の上でお願いします。

価格の表示条件

アフィリエイトとしての価格表示については、「Amazonアソシエイト・プログラム・リンク設定要件」の「すべてのリンクに適用される一般要件」として次のように書かれています。

製品の価格および在庫は、随時変化します。乙が乙のサイトに掲載した商品の価格および在庫には変動があるため、乙のサイトでは、以下の場合に限り、価格および在庫を表示できるものとします。(a)甲が価格および在庫のデータを表示しているリンクを提供する場合、または(b)乙がProduct Advertising APIを経由して商品の価格および在庫のデータを取得し、かつ当該データに適用されるライセンス契約に定める要件を乙が遵守している場合。さらに、乙が乙のサイトにて商品の価格を「比較」形式(価格比較ツールまたはその他のエンジンの使用による場合を含む。)にて、アマゾン・サイト以外のウェブサイトまたはその他の手段を通じて提供される、同じ、または類似の製品の価格とともに表示することを選択する場合は、乙は、アマゾン・サイトで提供される商品の、「新品」の最低価格、および甲が乙に提供している場合は「中古商品」の最低価格の両方を表示しなければなりません。それ以外の場合は、乙は乙のサイトに価格情報を含めることはできません。

整理しますと、価格と在庫状況を表示する場合は、次の条件 (a) (b) のどちらかを満たす必要があります。

条件 (a)

Amazon が価格および在庫のデータを表示しているリンクを提供している。

これは、下記のようなものを指すと思われます。インラインフレームで Amazon の用意したページを埋め込むものです。



条件 (b)

Product Advertising API によって取得した情報を表示する場合。今回調査の対象となるのはこちらです。Product Advertising API は、一定の条件の下で Amazon が提供している商品情報から必要な情報を取り出して利用するための仕組みです。

こちらの場合は、さらに条件が加わります。その条件とは、楽天など Amazon 以外での販売価格と比較することを目的として利用する場合に、新品および中古の最低価格が Amazon から提供されている限り表示しなくてはならないと言うものです。

現時点では私はこのような使い方をすることは考えていないのですが、想定はしておくべきかもしれません。販売価格はOfferSummary レスポンスグループで取得できるようです。

Product Advertising API で取得した情報の保存期限

Product Advertising API への情報取得要求は、間隔と回数に制限があります。この制限に収めることと表示までの時間短縮を目的として、AmazonLink は現在24時間キャッシュとして保存するようにしています。

Product Advertising API ライセンス契約(日本語参考訳)」の「4. 利用条件」には次のようにあります。

(n) お客様は、画像で構成される商品関連コンテンツを格納またはキャッシュしてはいけませんが、画像で構成される商品関連コンテンツへのリンクを、24時間まで格納することができます。お客様は、画像で構成されていないコンテンツを、データキャッシュの目的で、24時間まで格納することができますが、それをした場合は、その後直ちに Product Advertising API にリクエスト送信を行うか、または新しいデータフィードを取り込み、お客様のアプリケーション上の商品関連コンテンツを刷新することにより、商品関連コンテンツを直ちに刷新し、再表示しなければなりません。別途当方より通知されない限り、お客様は、個別の Amazon Standard Identification Number (以下、「ASIN」といいます)を、本ライセンス契約の終了まで、期間の制限なく格納することができます。前述に拘わらず、お客様のアプリケーションがクライアント アプリケーションを含む場合、かかるクライアントアプリケーションは、商品関連コンテンツを格納またはキャッシュしてはいけません。当方の要求があれば、お客様は、当方の要求から3営業日以内に、お客様が本ライセンス契約を遵守しているかを確認できるよう、かかるクライアントアプリケーションのコピーを当方に提供するものとします。
(o) お客様が商品関連コンテンツをデータフィードから取得する場合、または、お客様が Product Advertising APIに リクエスト送信をする、もしくはお客様のアプリケーション上の商品関連コンテンツを刷新する頻度が1時間に1回以下の場合は、お客様のアプリケーション上の価格情報または発送可能時期についての情報に隣接して時刻/日付のスタンプを含むものとします。ただし、お客様が、アプリケーション上に表示された価格情報および発送可能時期についての情報を同日中にリクエストおよび刷新した場合は、スタンプの日付部分を省略することができます。許容されるメッセージの例は以下のとおりです。

  • Amazon.co.jp 価格: JPY 3,200 (01/07/2008 14:11 JST 時点 -詳細はこちら-)
  • Amazon.co.jp 価格: JPY3,200 (14:11 JST時点 -詳しくはこちら-)

また、お客様は、下記の免責事項を、価格情報または発送可能時期についての情報のそばに記載するか、またはハイパーリンク、ポップアップ、スクリプト・ポップアップその他類似の方法で提供しなくてはなりません。「価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。商品の販売においては、購入の時点で [Amazon.co.jp または Javari.jp の適用ある方] に表示されている価格および発送可能時期の情報が適用されます。」上記の例において、「詳細はこちら」および「詳しくはこちら」などとすれば、エンドユーザーが免責事項を読むよう仕向けることができます。

(n) では、画像の保存は禁止、ASIN は契約が続く限り永遠に、そのほかのデータは24時間まで保存が可能とあります。価格情報は画像ではありませんので、24時間の保存が可能であると解釈しています。

(o) では、価格情報と発送可能時期の表示について書かれています。1時間以上前に取得した情報を使用する場合には、次の記述をすることが必要になります。

  • 情報の取得日時(価格・発送可能時期の近く)
  • 免責事項の表示

なお、条約の書き方がわかりにくいので判断が難しいのですが、大元と思われる「Amazon.com Product Advertising API License Agreement」では次のように書かれていることから、免責事項の記述は取得日時の記述に加えて(Additionally)の事項であると判断しています。

Additionally, you must either include the following disclaimer adjacent to the pricing or availability information or provide it via a hyperlink, popup box, scripted popup, or other similar method: “Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [amazon.com or endless.com, as applicable] at the time of purchase will apply to the purchase of this product.” In the above examples, “Details” and “More info” would provide a method for the end user to read the disclaimer.

まとめ

Amazon アフィリエイトで価格表示をする場合の条件。

  • 新品・中古の最低価格を含める。
  • 取得した情報を1時間以上使用する場合は、取得時間と免責事項を併記する。

ここから、AmazonLink に導入する場合は次の機能を実装することになります。

  • 新品・中古価格・取得日時を表示するためのコード。
  • 日時の書式とキャッシュ有効時間を設定する項目。

実装時期は試験運用中の現行バージョンを公開した後になりそうです。このサイトで価格が表示されるようになっていたらそろそろと言うことで。

Comments (0)

2011年2月19日 土曜日

WordPress の HTTP API

Filed under: WordPress,プログラミング
タグ:, , , , ,
時間:12時49分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

WordPress には、Snoopy という HTTP 通信用のライブラリが以前から使われています。自前で用意するには結構大変なので、拙作の AmazonLink でも利用しています。

WordPress 2.7.0 では、これに変わるものとして HTTP API が導入されました。ライブラリの変更ではなく、WordPress の持つ機能の1つという扱いです。

導入された段階では実験的な扱いでしたが、次第に多くの部分で使われるようになり、WordPress 3.0 でついに Snoopy が非推奨扱いとなっています。HTTP API が十分熟したと判断したのでしょう。

これを機会に、AmazonLink でも導入してみることにしました。現時点では Snoopy と併用するか完全に切り替えてしまうかは検討中ですが、最終的には完全な切り替えを行うことになると思います。

Snoopy の場合は別のライブラリということで、ファイルのインクルードを行い、Class のオブジェクトを取得し、実際に使用するという3段階の作業が必要です。

  1. include_once(ABSPATH.'wp-includes/class-snoopy.php');
  2. $Snoopy = new Snoopy();
  3.  
  4. $url = 'http://www.example.com';
  5. $Snoopy->fetch($url);
  6. $content = $Snoopy->results;

これに対して、HTTP API の場合は自動的にオブジェクトを取得してくれるので、いきなり実行することができます。WordPress に組み込まれているおかげです。

  1. $url = 'http://www.example.com';
  2. $result = wp_remote_get($url);
  3. $content = $result['body'];

ほかにもいろいろな機能が含まれています。残念ながら本家 Codex でもドキュメントが充実しているとは言えない状況ですので、興味のある方は実際のコードを参照してみてください。ファイルは wp-includes/http.php です。Codex 以上の説明があり、かなり参考になると思います。

ちなみに、自動的にオブジェクトを取得してくれる仕組みですが、内部でそのための関数を呼び出しています。

  1. /**
  2.  * Retrieve the raw response from the HTTP request using the GET method.
  3.  *
  4.  * @see wp_remote_request() For more information on the response array format.
  5.  *
  6.  * @since 2.7.0
  7.  *
  8.  * @param string $url Site URL to retrieve.
  9.  * @param array $args Optional. Override the defaults.
  10.  * @return WP_Error|array The response or WP_Error on failure.
  11.  */
  12. function wp_remote_get($url, $args = array()) {
  13.     $objFetchSite = _wp_http_get_object();
  14.     return $objFetchSite->get($url, $args);
  15. }

その関数の定義はこちら。プライベート関数なので直接利用するのは厳禁です。

  1. /**
  2.  * Returns the initialized WP_Http Object
  3.  *
  4.  * @since 2.7.0
  5.  * @access private
  6.  *
  7.  * @return WP_Http HTTP Transport object.
  8.  */
  9. function &_wp_http_get_object() {
  10.     static $http;
  11.  
  12.     if ( is_null($http) )
  13.         $http = new WP_Http();
  14.  
  15.     return $http;
  16. }

注目するべきは、10行目の static $http; という部分。関数から出てもこの変数は維持され、再利用が可能になります。このような手法をメモ化と言うようです。10年以上プログラムを扱ってきましたが、単語自体知りませんでした。まだまだです。

PHP のメモ化については、次のサイトを参考にしました。

ベンチマーク結果を見るとかなりの高速化が期待できそうです。HTTP 通信を行うプラグインが複数動く場合には効果的かもしれません。最近はコアでも通信を行っているようですし。

Comments (0)

2010年11月6日 土曜日

AmazonLink 2.0.0 beta4 リリース

Filed under: AmazonLink
タグ:, , ,
時間:14時19分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

AmazonLink 2.0.0 beta4 をリリースしました。

今回の最重要更新項目は、Product Advertising API でレビュー情報が取得できなくなると言う仕様変更への対応です。本文だけ取得できなくなるのだと思っていたため、対応作業の開始が遅れていました。

現在は移行期間としてレビューの取得が出来ていますが、今月9日からはレビューページのアドレスのみが取得できます。このサイトでも行っているように、インラインフレームで埋め込むと言う形になります。

仕様上では24時間はそのアドレスが使えるはずですが、24時間たたずに無効になってしまうことが多いようです。解消してからにしたかったのですが、残り日数がわずかなので暫定でリリースすることにしました。

また、表示される内容がかなり大きなページになるため、埋め込む方はデザインに悩むことになるかもしれません。小さな表示については Amazon.co.jp 側で検討ということのようなので、種類が増えたら対応していきたいと思います。

そのほかには、簡単なドキュメントを同梱するようにしました。プログラム中に書いていた更新履歴もそちらに移動しています。

Comments (1)

2010年4月3日 土曜日

AmazonLink 2.0.0 beta3 リリース

Filed under: AmazonLink
タグ:,
時間:17時39分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

AmazonLink 2.0.0 beta3 をリリースしました。

今回のリリースのメインは、コードを1行に表示した場合に1つめしか変換されなかったバグの修正です。自分の古い記事で偶然私が見つけたのとほぼ同時期に、テンプレート方式に移行した方が記事にしていたのに気がついたのと、Twitter で @boka_kabo さんから報告をいただきました。

そのほか、Powerd by のリンク先をカテゴリーページではなく専用の固定ページに変更しました。このことはすでに先月記事にしていますが、これはなんだろうと見に来てくれた方に概要を伝えるためのポータル的な役割を持たせています。

2010年4月10日追記

WordPressが認識する部分のバージョンが古いままでした。本日11時40分以降ダウンロードした場合は正しいファイルになっています。

訂正前のファイルでも動作には問題ありませんが、気になる方は「AmazonLink.php」の差し替えまたは書き換えを行ってください。書き換える場合は7行目を次のようにします。

  1. <?php
  2. /*
  3. Plugin Name: AmazonLink
  4. Plugin URI: http://wppluginsj.sourceforge.jp/amazonlink/
  5. Description: Amazon.co.jp の商品情報を同一の設定で表示します。ブログのデザイン変更に簡単に対応できます。
  6. Author: よしとも
  7. Version: 2.0.0 beta3
  8. Author URI: http://blog.yoshitomo.org/
  9. */
Comments (6)

2010年3月22日 月曜日

AmazonLink の案内ページを作成

Filed under: AmazonLink
タグ:,
時間:22時02分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

AmazonLink の Powerd by 表示からのリンク先は現在記事カテゴリーになっていますが、これの変更先として固定ページを作りました。

ダウンロード案内ページは WordPress Plugins/JSeries、実際のダウンロードは SourceForge.jp、新しい情報の通知はこのサイトとばらばらになってしまっているので、ポータル的な案内ページの形に持って行きたいと思っています。

Comments (0)

2009年9月7日 月曜日

AmazonLink 2.0.0 beta2 リリース

Filed under: AmazonLink
タグ:,
時間:23時30分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

すでに昨夜の話になってしまいますが、AmazonLink 2.0.0 beta2 をリリースしました。ダウンロードは、いつものようにWordPress Plugins/JSeriesのサイトからどうぞ。

ページ投稿画面での検索フォーム追加や、AmazonLink コードの変更などをしています。また、アップグレードが進むとの予測から、急いで WordPress 2.8.4 での動作検証も行いました。2.8系は投稿画面の幅が狭くなっているため、ボタンなどのレイアウトも少し変えてあります。

AmazonLinkコードの変更ですが、商品ごとにテンプレートを変える機能を思いついたためです。テンプレートは複数行になる可能性が高いため、属性値とするには不向きです。そのため、コードに挟むことができるようにしました。

なお、内部で変換処理を行っているので、今までの形式も使用することはできます。

ASIN は Amazon Standard Item Number の略で、Amazon の商品コードです。

以前の形式
  1. [amazon]ASIN[/amazon]
新しい形式
  1. [amazon asin="ASIN"][/amazon]
  2. [amazon asin="ASIN" /]

現在は個別のテンプレートには対応できていませんが、TODOには入れておこうと思います。手を出しすぎると切りがないので、正式リリースまでは触らない予定です。

Comments (1)

2009年9月5日 土曜日

AmazonLink のテンプレート

Filed under: AmazonLink
タグ:, ,
時間:16時17分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

8月14日に公開となった AmazonLink 2.0.0 beta では、テンプレート機能によってある程度自由にデザインを作ることができるようになっています。

管理画面上の説明でどこまで伝わるのか自信がないので、現在このサイトで使用しているテンプレートを公開しようと思います。

  1. <table class="amazonLink" width="468">
  2.     <tr>
  3.         <td colspan="2">
  4.             <strong><span class="itemName"><a href="[DETAIL_PAGE_URL]">[ITEM_NAME]</a></span>[IF_AUTHOR/] <span class="author">[AUTHOR]</span>[/IF_AUTHOR]</strong><br />
  5.             [IF_PUBLISHER/]発売:[PUBLISHER][IF_RELEASE_DATE/] [RELEASE_DATE][/IF_RELEASE_DATE] [/IF_PUBLISHER]
  6.             販売数ランク:[SALES_RANK]
  7.         </td>
  8.     </tr>
  9.     <tr>
  10.         <td rowspan="3" width="[MEDIUM_IMAGE_WIDTH]" valign="top">
  11.             <a href="[DETAIL_PAGE_URL]"><img src="[MEDIUM_IMAGE_URL]" width="[MEDIUM_IMAGE_WIDTH]" height="[MEDIUM_IMAGE_HEIGHT]" alt="『[ITEM_NAME]』の商品写真" /></a>
  12.         </td>
  13.         <td valign="top">
  14. [IF_CREATOR/]
  15.             <ul class="creator">
  16. [CREATOR/]              <li>[CREATOR_ROLE][CREATOR_NAME]</li>
  17. [/CREATOR]
  18.             </ul>
  19. [/IF_CREATOR]
  20.         </td>
  21.     </tr>
  22.         <td valign="top">
  23. [IF_REVIEW/]
  24. 平均評価:<img src="/wp-content/themes/custom01/images/evaluation_[AVERAGE_RATING].gif" width="59" height="11" alt="[AVERAGE_RATING]">
  25.             <ul class="evaluation">
  26. [REVIEW/]               <li><img src="/wp-content/themes/custom01/images/evaluation_[REVIEW_RATING].0.gif" width="59" height="11" alt="評価:[REVIEW_RATING]"> [REVIEW_SUMMARY]</li>
  27. [/REVIEW]
  28.             </ul>
  29. [/IF_REVIEW]
  30.         </td>
  31.     </tr>
  32.     <tr>
  33.         <td valign="bottom">
  34.             <span class="powerdBy">[POWERD_BY]</span>
  35.         </td>
  36.     </tr>
  37. </table>

テーブルの幅が固定であったりしますが、別のサイトにも流用可能かと思います。WordPress や プラグイン同様に GPL ライセンスとしますので、ご自由にお使いください。

Comments (2)

2009年8月14日 金曜日

AmazonLink 2.0.0 beta リリース

Filed under: AmazonLink,アフィリエイト
タグ:, ,
時間:18時33分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

JSeries サイトの更新はまだですが、先ほど AmazonLink 2.0.0 beta をリリースしました。
現在 SourceForge.JP の以下のアドレスからダウンロードができるようになっています。

http://sourceforge.jp/projects/wppluginsj/downloads/43119/AmazonLink-2.0.0beta.zip/

19時25分追記

Jseries サイトを更新しました。メジャーバージョンアップと言うことで、新規にページを作成してあります。
http://wppluginsj.sourceforge.jp/amazonlink2/

Comments (2)

2009年8月9日 日曜日

AmazonLink 2.0 beta もうすぐ・・・

Filed under: AmazonLink
タグ:, , , ,
時間:18時28分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

平日は忙しくてまったく時間はないわ、休日は平日できてないことをやってると終わってしまうわでほぼ停止状態でしたが、昨日と今日で AmazonLink を Amazon の Product Advertising API に対応させました。

ついでに WordPress 2.7 にも対応させたので、近いうちにベータ版として公開することができそうです。2.8 は未テストなので、対象外の予定です。

また、サイドバーでやってたアンケートの結果を元に、今回から動作環境条件として PHP 5.1 以上とします。これにより、Amazon とのやり取りの処理が PHP のネイティブ関数を使えるようになるので処理が早くできるはずです。PHP 4.x の環境しかない方はごめんなさい。

ベータ版として公開したあとの予定ですが、プログラムの整理と PHP 5.x らしい書き方への変更をしたいと思っています。一緒に WordPress 2.8 にも対応したいですね。

今後も使っていただけるという方は、Product Advertising API アカウントの取得をしておいてください。8月15日以降は、アカウントがないと投稿画面での検索ができなくなります。

Comments (0)

2009年5月10日 日曜日

”Amazon アソシエイト Web サービス”が”Product Advertising API”に

Filed under: AmazonLink,アフィリエイト,プログラミング
タグ:, , , , , , ,
時間:17時46分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

Amazon.co.jp からいろいろな情報を取得することができる”Amazon アソシエイト Web サービス”というサービスがありますが、”Product Advertising API”という名称に変わるとのことです。そして、情報のリクエストには署名による認証が必要になるとのこと。

拙作 WordPress プラグインの AmazonLink でもこのサービスを使用しているので他人事ではありません。

基本方式はほとんど変わらないとのことですが、認証で使用する電子署名の作成には、開発者登録をしたときに作成した Secret Access Key というものが必要になるようです。リクエスト時のデータによって変わるため、電子署名データだけをプログラムに埋め込んでおくことができません。また、Secret Access と言うくらいなのでこれを公開するのも駄目でしょう。

詳しい情報がまだ得られていないのでなんとも言えませんが、ただ使うだけの人にも開発者登録をしてもらわないと駄目になるかもしれません。

今のところは、たつをさんによる記事が一番詳しそう。

電子署名データの作成には RFC 2104-compliant HMAC with the SHA256 hash algorithm という変換処理のようなものが必要で、これを行うための関数である hash は PHP5 でないと標準では使用できません。PHP4 はすでに終了宣言が出ているのですが、まだ PHP5 が使用できないサーバーもあるので悩みどころです。

Comments (0)

HTML convert time: 0.320 sec. Powered by

Images is enhanced with WordPress Lightbox JS by Zeo