おまえ、誰よ?
- Twitter, Qiita: @sato_ryu
- Facebook: Tatsuya Sato
何してんの?
- 某Rのつくインターネットサービス企業の情シスっぽいところ
- RubyやRailsとかスクラムとか
好きなエディタ
- vim
- Visual Studio Code
今日のお題: 自作gem
ということで宣伝に来ました。
rakuten_web_service
- 楽天ウェブサービスAPIのRubyクライアント
楽天ウェブサービス
- 楽天が提供するサービスの情報を取得するためのAPI群
- 楽天市場の商品
- 楽天トラベルの宿泊施設、空き情報
- 楽天ブックスの本、CD/DVD、雑誌
- Koboの本
- レシピのランキング
- ゴルフ施設の情報、コース情報
など。
動機: 他に良いのが無かった。
- 既にたくさんあった。
- けど、満足いくものはなかった。
- 最新のAPIに対応してない。
- Web APIを意識してコードを書かないといけない。
- そもそも、弊社から公式クライアント無いの
2013年夏、爆誕
公式クライアントに
使い方
準備: アプリケーションIDを設定
RakutenWebService.configuration do |c|
# アプリケーションID
c.application_id = 'YOUR_APPLICATION_ID'
# アフィリエイトIDを設定すればアフィリエイトも!
c.affiliate_id = 'YOUR_AFFILIATE_ID'
end
- IDの取得は楽天ウェブサービス から。
商品を検索してみよう。
require `rakuten_web_service`
items = RakutenWebService::Ichiba::Item.
search(keyword: 'BABYMETAL')
商品の情報を取ってみよう。
item = items.first
# オブジェクトっぽく
item.name #=> "BABYMETAL -来日記念限定盤ー (初回限定盤 CD+DVD) [ BABYMETAL ]"
# JSONを扱う気分でも
item['itemName'] #=> 同上
ページング
items = items.page(3) # 3ページ目
if items.has_next_page? #次があれば次のページに
items = item.next_page
end
# 面倒くさいときは#allで全部取ってくる。
items.all.each do |item|
puts "#{item.name} - #{item.price}円"
end
API間のスムーズな連携
- 商品検索、ジャンル情報、ランキングはそれぞれ別のAPI
- 違いを気にさせないインタフェース
# さっき検索した商品と同じジャンルのTOP3
item.genre.ranking.first(3)
ちょっと困ってること
開発のネタ探し
- 主要APIは対応済み
- トラベル、ブックマークが残ってる
- ユーザーの声を見つけたい。