Skip to content

Latest commit

 

History

History
207 lines (145 loc) · 7.87 KB

README.ja.md

File metadata and controls

207 lines (145 loc) · 7.87 KB

RakutenWebService

Gem Version Coverage Status

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をサポートしています。

使用方法

事前準備: アプリケーションIDの取得

楽天ウェブサービス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_idaffiliate_id はそれぞれ、環境変数RWS_APPLICATION_IDRWS_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クラスは、childrenparentといったジャンル階層を辿るインターフェースを持っています。

  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

サポートしているAPI

楽天市場API

楽天ブックス系API

楽天Kobo系API

楽天レシピ系API

楽天GORA系API

楽天トラベル系APIs

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request