【rails6 apiモード】楽天APIのキーを取得してRakutenブックスから書籍データを取得する方法

今回はRails6apiモードで楽天APIのキーを取得してRakutenブックスから書籍データを取得する方法について紹介していきます。

Rakuten Developersでアカウントを作成

まずは以下のURLからRakuten Developersのサイトにアクセスし、右上のSign Inをクリックします。

Rakuten Developers

楽天ウェブサービス(WEB SERVICE)は、WEBアプリケーションを構築するデベロッパー向けのサイトです。楽天グループのデータや機能を開発者様、企業の皆様にAPIやSDKを通じて提供いたします。

楽天会員の方はメールアドレスとパスワードを入力してログインします。楽天会員ではない方は右のCreate a new Rakuten menbershipからアカウントを新規作成します。

IDを取得するためのアプリを登録する

アカウント登録が完了し、ログインしたら右上にあるNew Appをからアプリの登録をします。最初に英文の利用規約が表示されるので内容を確認しましょう。下にスクロールしていくとApplication Creation Formがありますので、こちらを記入していきます。

Application Creation Form

  • Application Name →アプリ名(書籍検索アプリなど)
  • Application URL→サイトのURL、ローカル環境であればhttp://localhost:3000/など
  • How did you find out about Rakuten Web Service or Rakuten APIs?どのように楽天サービス、または楽天API機能を知りましたか?という質問です。

入力が完了したらフォーム下部にある青いボタンを押下し、IDを作成します。

トップページからYour appsをクリックすると、以下の画面が表示されます。今回、railsの書籍検索で必要になるのはApplication IDApplication_secretですので、メモしておきましょう。

railsにrakuten_web_serviceを追加

実際にrailsで書籍データを取得できるか試していきます。gemファイルに以下を追加しコマンドでbundle installを実行します。

gem 'rakuten_web_service'

initializers配下にrakuten.rbを作成、API キーを設置する

bundle installを実行したらinitializers配下にrakuten.rbファイルを作成し、先ほど取得したアプリケーションIDとアフィリエイトIDを設置します。

initializers/rakuten.rb
RakutenWebService.configure do |c|
    c.application_id = '取得したアプリケーションID'
    c.affiliate_id = '取得したアフィリエイトID'
end

IDの設定が完了したら、書籍検索用のコントローラーを作成します。今回、APIモードなのでapi/v1/配下にBooksコントローラを配置します。

rails g controller api/v1/Books

ルーティングは以下のようになります。booksコントローラーでsearchメソッドを定義します。

```ruby
  namespace 'api' do
    namespace 'v1' do
      get "/search", to: "books#search"
    end
end

```

楽天APIで用意されているパラメーター

以下のURLでは楽天APIが用意しているパラメーター 一覧が用意されています。

楽天ウェブサービス: 楽天ブックス書籍検索API(version:2017-04-04) | API一覧

楽天ブックス書籍検索APIは、楽天ブックスで販売されている書籍の情報を取得することが可能なAPIです。デベロッパーは書籍のタイトルや著者名、出版社名などでの商品検索をはじめ、ジャンル別や在庫状態などでの絞り込み検索も可能となります。(楽天ブックス総合検索APIよりも詳細な検索が可能となっています。) リクエストURL(REST/JSON形式の場合) …

本のタイトル、著者名、ジャンル等で検索することができ、レビューの多い順。出版日が新しい順/古い順等のソートの設定もできます。

  • title 本のタイトル
  • author 著者名
  • publisherName 出版社
  • booksGenreId ジャンルID
  • sort sales:売れている本順 +releaseDate:出版日が新しい順 reviewCountt:レビューが多い順

Bookコントローラーを作成し、結果を取得してみる

今回、書籍検索をしたいので、RakutenWebService::Books::Book.search()を使用します。booksGenreId:として”001005″を設定します。001005はテクノロジー関連のジャンルidになります。書籍のジャンルidは楽天ブックスのサイトからカテゴリをクリックするとURLのパラメーター にidが含まれていますので確認してみてください。

楽天ブックス: 本・DVD・CD・ゲームの通販 オンライン書店

楽天ブックスは本・書籍・電子ブック・雑誌・洋書・DVD・ブルーレイ(Blu-ray)・CD・ゲーム・PCソフト・周辺機器の通販、オンライン書店です。送料無料でお届けします。

module Api
    module V1 
        class BooksController < ApplicationController
            def search
                @books = RakutenWebService::Books::Book.search(booksGenreId: "001005")
                 render json: { status: 'success', data: @books }  
            end
        end
    end
end

POSTMANからhttp://localhost:3000/api/v1/searchをGETしてみると、下の画像のようにテクノロジー関連のデータを取得することができました。

{
    "status": "success",
    "data": [
        {
            "params": {
                "title": "行動を変えるデザイン",
                "titleKana": "コウドウヲカエルデザイン",
                "subTitle": "心理学と行動経済学をプロダクトデザインに活用する",
                "subTitleKana": "シンリガクトコウドウケイザイガクヲプロダクトデザインニカツヨウスル",
                "seriesName": "",
                "seriesNameKana": "",
                "contents": "",
                "author": "Stephen Wendel/武山 政直",
                "authorKana": "スティーブン ウェンデル/タケヤマ マサナオ",
                "publisherName": "オライリー・ジャパン",
                "size": "単行本",
                "isbn": "9784873119144",
                "itemCaption": "本書は、人々の行動、日常習慣を変える“行動変容”を促すプロダクトをデザインするために役立つ。主にヘルスケア(健康管理)、金融(資産管理)など、これまでITプロダクト(サービス、アプリなど)がなかなか使われてこなかった分野を対象に、ユーザーがやりたいと思っていたものの実行できなかった行動の実現を助けるプロダクトを作り出すために、行動経済学と心理学をもとにした実践的な視点や知識を提供する。",
                "salesDate": "2020年06月11日",
                "itemPrice": 3740,
                "listPrice": 0,
                "discountRate": 0,
                "discountPrice": 0,
                "itemUrl": "https://books.rakuten.co.jp/rb/16314414/",
                "affiliateUrl": "https://hb.afl.rakuten.co.jp/hgc/g00q0727.nc1o49f4.g00q0727.nc1o59b1/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16314414%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Frms%2Fmsv%2FItem%3Fn%3D16314414%26surl%3Dbook",
                "smallImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9144/9784873119144.jpg?_ex=64x64",
                "mediumImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9144/9784873119144.jpg?_ex=120x120",
                "largeImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9144/9784873119144.jpg?_ex=200x200",
                "chirayomiUrl": "",
                "availability": "1",
                "postageFlag": 2,
                "limitedFlag": 0,
                "reviewCount": 0,
                "reviewAverage": "0.0",
                "booksGenreId": "001005003003/001006019003"
            }
        },
        {
            "params": {
                "title": "見てわかる、迷わず決まる配色アイデア3色だけでセンスのいい色",
                "titleKana": "",
                "subTitle": "",
                "subTitleKana": "",
                "seriesName": "",
                "seriesNameKana": "",
                "contents": "",
                "author": "",
                "authorKana": "",
                "publisherName": "インプレス",
                "size": "",
                "isbn": "9784295008897",
                "itemCaption": "",
                "salesDate": "2020年06月12日",
                "itemPrice": 1980,
                "listPrice": 0,
                "discountRate": 0,
                "discountPrice": 0,
                "itemUrl": "https://books.rakuten.co.jp/rb/16286801/",
                "affiliateUrl": "https://hb.afl.rakuten.co.jp/hgc/g00q0727.nc1o49f4.g00q0727.nc1o59b1/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16286801%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Frms%2Fmsv%2FItem%3Fn%3D16286801%26surl%3Dbook",
                "smallImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8897/9784295008897.jpg?_ex=64x64",
                "mediumImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8897/9784295008897.jpg?_ex=120x120",
                "largeImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8897/9784295008897.jpg?_ex=200x200",
                "chirayomiUrl": "",
                "availability": "5",
                "postageFlag": 1,
                "limitedFlag": 0,
                "reviewCount": 1,
                "reviewAverage": "5.0",
                "booksGenreId": "001005008002/001009009006/001009009007"
            }
        },
        
      
        

Pythonの書籍データを取得したい場合はbookコントローラーでtitleにPythonを指定してあげると以下のように取得できます。

@books = RakutenWebService::Books::Book.search(title: "Python")
 "params": {
                "title": "Excel×Python最速仕事術",
                "titleKana": "エクセルパイソンサイソクシゴトジュツ",
                "subTitle": "",
                "subTitleKana": "",
                "seriesName": "",
                "seriesNameKana": "",
                "contents": "",
                "author": "金宏 和實",
                "authorKana": "カネヒロカズミ",
                "publisherName": "日経BP",
                "size": "単行本",
                "isbn": "9784822295936",
                "itemCaption": "入力、転記、集計、分析、書式設定、出力…PythonできればExcelが楽になる!何百回のコピペをゼロに。プログラミング初心者でも大丈夫。Pythonに自動化してもらおう!",
                "salesDate": "2019年11月23日",
                "itemPrice": 2398,
                "listPrice": 0,
                "discountRate": 0,
                "discountPrice": 0,
                "itemUrl": "https://books.rakuten.co.jp/rb/16133198/",
                "affiliateUrl": "https://hb.afl.rakuten.co.jp/hgc/g00q0727.nc1o49f4.g00q0727.nc1o59b1/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16133198%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Frms%2Fmsv%2FItem%3Fn%3D16133198%26surl%3Dbook",
                "smallImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5936/9784822295936.jpg?_ex=64x64",
                "mediumImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5936/9784822295936.jpg?_ex=120x120",
                "largeImageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5936/9784822295936.jpg?_ex=200x200",
                "chirayomiUrl": "",
                "availability": "1",
                "postageFlag": 1,
                "limitedFlag": 0,
                "reviewCount": 2,
                "reviewAverage": "4.0",
                "booksGenreId": "001006018002"
            }
        },
        {
            "params": {
                "title": "退屈なことはPythonにやらせよう",
                "titleKana": "タイクツナコトハパイソンニヤラセヨウ",
                "subTitle": "ノンプログラマーにもできる自動化処理プログラミング",
                "subTitleKana": "ノンプログラマーニモデキルジドウカショリプログラミング",
                "seriesName": ""

以上が楽天APIのidを取得してRakutenブックスから書籍データを取得する方法でした。

参考記事

https://www.tom08.net/entry/2016/08/29/133539

https://webservice.rakuten.co.jp/document/

>文系エンジニア大学生の技術ブログ

文系エンジニア大学生の技術ブログ

社会が多様化していく中、大学生の学生生活も多様であるべきと考えています。主にエンジニア向けにITやプログラミングなどの技術系と大学生向けに休学、留学、海外生活、トビタテ留学、長期インターンに関する記事を書いています。