rakuten_web_serviceは、 Rubyから楽天が提供しているAPIに簡単にアクセスできるSDK(Software Development Kit)です。
English version is here.
- Ruby 2.7 またはそれ以上のバージョンであること
bundlerを利用したアプリケーションの場合、Gemfileに以下の1行を追加します。
gem 'rakuten_web_service'
そしてbundle
コマンドでインストール。
bundle
もしくは、gem
コマンドにより
gem install rakuten_web_service
とすることでインストールできます。
現在rakuten_web_serviceは下記のAPIをサポートしています。
楽天ウェブサービスAPIを利用の際に、アプリケーションIDが必要です。 まだ取得していない場合は、楽天ウェブサービスAPIのアプリケーション登録を行い、アプリケーションIDを取得してください。
RakutenWebService.configure
メソッドを使い、Application IDとAffiliate ID(オプション)を指定することができます。
RakutenWebService.configure do |c|
# (必須) アプリケーションID
c.application_id = 'YOUR_APPLICATION_ID'
# (任意) 楽天アフィリエイトID
c.affiliate_id = 'YOUR_AFFILIATE_ID' # default: nil
# (任意) リクエストのリトライ回数
# 一定期間の間のリクエスト数が制限を超えた時、APIはリクエスト過多のエラーを返す。
# その後、クライアントは少し間を空けた後に同じリクエストを再度送る。
c.max_retries = 3 # default: 5
# (任意) デバッグモード
# trueの時、クライアントはすべてのHTTPリクエストとレスポンスを
# 標準エラー出力に流す。
c.debug = true # default: false
end
'YOUR_APPLICATION_ID'
と 'YOUR_AFFILIATE_ID'
は、実際のアプリケーションIDとアフィリエイトIDに置き換えてください。
application_id
と affiliate_id
はそれぞれ、環境変数RWS_APPLICATION_ID
とRWS_AFFILIATE_ID
を定義することでも設定できる。
items = RakutenWebService::Ichiba::Item.search(keyword: 'Ruby') # Enumerable オブジェクトが返ってくる
items.first(10).each do |item|
puts "#{item['itemName']}, #{item.price} yen" # Hashのように値を参照できる
end
RakutenWebService::Ichiba::Item.search
などsearch
メソッドはページングのためのメソッドを持ったオブジェクトを返します。
items = RakutenWebService::Ichiba::Item.search(keyword: 'Ruby')
items.count #=> 30. デフォルトで1度のリクエストで30件の商品情報が返ってくる
last_items = items.page(3) # 3ページ目の情報を取る
# 最後のページまでスキップする
while last_items.next_page?
last_items = last_items.next_page
end
# 最後のページの商品名を表示
last_items.each do |item|
puts item.name
end
# 上記の処理をより簡潔に書くと以下のようになる
items.page(3).all do |item|
puts item.name
end
Genreクラスは、children
やparent
といったジャンル階層を辿るインターフェースを持っています。
root = RakutenWebService::Ichiba::Genre.root # ジャンルのルート
# children はそのジャンルの直下のサブジャンルを返す
root.children.each do |child|
puts "[#{child.id}] #{child.name}"
end
# ジャンルの情報を引くため、ジャンルIDを用る
RakutenWebService::Ichiba::Genre[100316].name # => "水・ソフトドリンク"
ranking_by_age = RakutenWebService::Ichiba::Item.ranking(:age => 30, :sex => 1) # 30代女性 のランキングTOP 30
ranking_by_age.each do |ranking|
# 'itemName'以外の属性については右記を参照 https://webservice.rakuten.co.jp/documentation/ichiba-item-ranking#outputParameter
puts ranking.name
end
ranking_by_genre = RakutenWebService::Ichiba::Genre[200162].ranking # "水・ソフトドリンク" ジャンルのTOP 30
ranking_by_genre.each do |ranking|
puts ranking.name
end
categories = RakutenWebService::Recipe.small_categories
# 全種類の小カテゴリーを表示
categories.each do |category|
category.name
end
recipes = categories.first.ranking
# カテゴリーに対応するレシピを表示
recipes.each do |recipe|
recipe.title
end
- Rakuten Ichiba Item Search API
- Rakuten Ichiba Genre Search API
- Rakuten Ichiba Ranking API
- Rakuten Product API
- Rakuten Ichiba Tag Search API
- Rakuten Books Total Search API
- Rakuten Books Book Search API
- Rakuten Books CD Search API
- Rakuten Books DVD/Blu-ray Search API
- Rakuten Books ForeignBook Search API
- Rakuten Books Magazine Search API
- Rakuten Books Game Search API
- Rakuten Books Software Search API
- Rakuten Books Genre Search API
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request