楽天ウェブサービス API を利用して取得したデータは最新に保つなど重要な規約まとめ

楽天APIを使って商品をレコメンドする機能を作ろうと思っています。そのため楽天 API についていろいろ調べましたのでここでまとめておきます。要点をまとめていますが、他にももちろんあります。ここでは開発の際に一番知っておくべきことだけをまとめています。
【楽天ウェブサービス】RAKUTEN WEBSERVICE

楽天の API のリクエスト上限について

Q. 各APIの利用制限を教えてください。
A. 1デベロッパーIDにつき、1秒に1回以下のリクエストとしてください。

1秒に1回以下のリクエストということは1日に86400回以下のリクエストをしても良いということですね。

ただ、ユーザーのアクセスによってリクエストが発生するようなコントロールできないものでは1秒間に10回のリクエストが発生しかねないので、API へのリクエスト回数を自分で制限する必要がありそうです。

データのキャッシュに関して

デベロッパーは、一般的に以下の期間であれば、データをキャッシュする目的で楽天グループ(以下、「当社」とする。)の知的財産を格納することができます。
・商品の価格情報、および販売可能情報:24時間
・その他の情報:3か月間

つまり24時間経過すれば、商品の価格情報を非表示にする、もしくは価格情報の横などにアラートメッセージを出す(この方法は問題があるかもしれない)などして価格情報が違うということを証明すればいいのかな。また3ヶ月以上経過している場合はページ丸ごと削除、あるいはアクセス不可にするなどして対応すればい良いのかなと思います。

また、データを削除しろと命令をされれば、ただちに削除しなければいけません。楽天のコンテンツなので仕方ないですね。

表示されるデータの更新頻度に関して

デベロッパーは、アプリケーション上またはアプリケーション内に価格情報または販売可能情報を表示する場合、情報を少なくとも1週間に1回、各APIから新たに取得した情報に刷新し、再表示しなければなりません。

これは一般的に24時間以内にとありましたが。上記の内容を被りますのでこちらについては無かった事にしても良いのかな。楽天の方よろしければ教えてください。

データ取得日時の表示に関して

デベロッパーは、1時間に1回以上データを更新しない場合は、価格情報または在庫情報等の情報に隣接した位置に更新時刻・日時を記載しなければなりません。

一般的には1時間に1回も更新すると負荷が大変ですから(24時間にすれば負荷を24分の1にできるのは大きい)、商品を紹介するページには最終更新日時を表示するのが一般的な対応かもしれません。

また以下の記述を直接、あるいは子ページなどに記して商品データのすぐ下や上など隣接するように掲載しなければいけません。

このサイトで掲載されている情報は、●●(サイト名)の作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗(www.rakuten.co.jp)に表示されている価格が、その商品の販売に適用されます。

楽天 API を使ったサイト設計をする方法まとめ

最後に以上の点をまとめると、この API を使用する際は以下のような設計になるのかもしれません。間違ってたら教えてください。

  • 楽天APIで1分間に1度の商品データ取得をします。それによって新規データの格納を実現する。
  • API の実行回数をこちらでコントロールできるようにデータベースに実行ログ残す。
  • データの更新はユーザーアクセスによるものとする。
  • 最後に更新してから24時間経っていなければ API を実行しない。
  • ユーザーアクセスによってデータ更新の必要があるため API を実行しようとするが、最後に API が実行されてから1秒以上経っていないので更新できない場合は、ページに情報が期限切れとなっていることを表示する、もしくはページを表示しない。ページを表示しない場合はしばらく経ってからアクセスしてくださいと書くといいかも。

夜間更新など少し迷うところですが、叩けばクロールするスクリプトを書いておいて、1日中更新しても良いし、夜中にまとめて更新しても良いし、どちらでも良いかもしれませんね。

コメント

コメントは受け付けていません。