Help us understand the problem. What is going on with this article?

GoogleBooksAPIを使う

More than 3 years have passed since last update.

Googleでは多くのAPIが公開されています。
今回はGoogleBooksAPIを使って、本の情報を取得する方法についてまとめてみます。

URL

GoogleBooksAPIは以下のURLで公開されています。

https://www.googleapis.com/books/v1/volumes

ただし、このURLにアクセスしただけではエラーが返ってくるので、実際にデータを取得するときはパラメータを指定する必要があります。
例えば、qパラメータで森博嗣さんの本を探したいときは

https://www.googleapis.com/books/v1/volumes?q=森+博嗣

こんなふうに指定します。

パラメータ

パラメータに関するドキュメントはここにありますが、よく使いそうなものについて紹介します。

パラメータ名 意味
q 検索キーワードの指定
startIndex 取得開始Index(いわゆるOFFSET)
maxResults 取得数(いわゆるLIMIT)、最大40まで
callback JSONPのコールバック関数名
key APIキー

とりあえず、これだけあれば、キーワード検索結果をページングで表示したりはできるかと思います。
maxResultsの指定は最大40までなので、それ以上の結果を表示したい場合は複数回リクエストを投げる必要があります。

取得結果

結果はJSON形式で戻ってきます。
戻ってくるJSONのキーとデータ内容について書くと(ごく一部です)

{
    "kind":本の種類,
    "totalItems":条件に一致したデータ数,
    "items"[条件に一致したデータの配列
            {
                 "id":GoogleBooksAPI上でのID,
                 "volumeInfo":[本の情報
                               "title":タイトル,
                               "subtitle":サブタイトル,
                               "authors":[著者名配列],
                               "publishedDate":出版日
                               "description":概要
                              ]
            },{},…]
}

volumeInfoの中身は登録されていない情報もあるようなので、使用するときは要注意です。

totalItemsは同じ検索条件でもstartIndexやmaxResultsの指定で変化することもあるようなので、信頼性は低いです。
しかし、もしもstartIndexを結果数を超える値に指定したとしてもajaxリクエストすると、勝手に最後のアイテムを取得してきてくれるようなので、ページング時の不都合はないのではないかと思います(URLでリクエストした場合は帰ってこないようですがページャを実装した検索処理を作ってみたら、そういう動きになりました。詳細は不明)。

※4/30追記

totalItemsを超えたときの情報取得については、ページャのほうで最大数が変化することにより、現在参照中のページが切り替わり、そのタイミングで再度検索処理が実行されることによるものでした。

アクセス制限

このように本の情報を取得することができるGoogleBooksAPIですが、1つのAPIキーに対して、1000リクエスト/1日の制限がかけられています。
一応、申請すれば上限を増やすこともできるようですので、もし1000リクエストで足りないような場合は考えてみてはいかがでしょうか?

frost_star
まだまだ半人前プログラマー。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした