Google Books API利用のためのAPIキー作成手順

# はじめに

Google Books API を利用する際の API キーを作成する手順についてまとめます。

## 目次

[1. API キーの作成](#1-api-キーの作成)
[2. Books API の有効化](#2-books-api-の有効化)
[3. API 制限の追加](#3-api-制限の追加)
[Google Books API を Postman でテスト](#google-books-api-を-postman-でテスト)

# 公式ドキュメントの確認

Google Books API の使用方法については、公式ドキュメントを参照します。

https://developers.google.com/books?hl=ja

https://developers.google.com/books/docs/v1/using?hl=ja#auth

https://cloud.google.com/docs/authentication/api-keys?hl=ja

# API キーは必要

Google Books API を Postman でテストしてみると、リクエストに API キーを利用していなくても取得できますが、ドキュメントには以下の記載があり API キーは必要とのことなので、ドキュメントに従って API キーを設定します。

> **API キー:** OAuth 2.0 トークンを提供しないリクエストでは、API キーを送信する必要があります。キーによりプロジェクトが識別され、API アクセス、割り当て、レポートが提供されます。
> 

> • リクエストに承認が必要でない場合（一般公開データについてのリクエストなど）、アプリケーションは API キーまたは OAuth 2.0 トークンのいずれか、または両方を提供する必要があります。
> 

記載を見つけられませんでしたが、API キーを送信しない場合は使用の制限があるのかもしれません。

また、API キーの他に OAuth 2.0 トークンについて以下の記載があります。

> ・リクエストに認証が必要な場合（個人の個人データのリクエストなど）、アプリケーションはリクエストに OAuth 2.0 トークンを渡す必要があります。
> 

今回は検索のみリクエストする（認証が必要な場合ではない）想定であるため、API キーのみを設定することにします。

# 1. API キーの作成

[ドキュメント](https://cloud.google.com/docs/authentication/api-keys?hl=ja) に従って、API キーを作成します。

API コンソールで 「[認証情報](https://console.cloud.google.com/apis/credentials?hl=ja)」ページを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/6648f525-23d0-9b37-2456-0ac5f85e8583.png)

「[認証情報を作成](https://console.cloud.google.com/apis/credentials?hl=ja)」 > 「API キー」をクリックして、コンソールで API キーを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/66c3fc1f-5859-6580-d8b6-cfa1c4794356.png)

API キーが作成されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/0d227a02-d190-7be4-f477-1e59562c4c51.png)

# 2. Books API の有効化

API キーの制限を追加するため、Books API を有効化します。

続いて、API コンソールで 「[有効な API とサービス](https://console.cloud.google.com/apis/dashboard?hl=ja)」を開き、「API とサービスを有効にする」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/a270a8cd-f412-0bb5-4393-80d65891f4dc.png)

「Books API」を検索して、選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/86d78401-69a1-7d27-1834-de8cd21aa60f.png)

「有効にする」を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/2c4fc104-6223-295c-e4d3-8c1a15278bb2.png)

ステータスが有効になっていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/cf78c4e1-cb53-bd17-d960-fb3bba46f4bd.png)

# 3. API 制限の追加

「[認証情報](https://console.cloud.google.com/apis/credentials?hl=ja)」ページの API キーで作成された「API キー 4」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/30d5639e-4df8-5b19-0c56-de40f3511fab.png)

開かれた編集ページで「キーを制限」をクリックして、「Select APIs」から Books API を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/ff86d6f9-e676-62c7-d879-b38be526fd7f.png)

# Google Books API を Postman でテスト

[Postman](https://www.postman.com/) を利用して、Google Books API のリクエストをテストしてみます。

### リクエスト

```:リクエスト
https://www.googleapis.com/books/v1/volumes?q=ノラネコぐんだん&startIndex=0&maxResults=1&key=yourAPIKey
```

クエリ パラメータは以下の内容にしました。

| パラメータ名 | 値 | 説明 |
| - | - | - |
| q | ノラネコぐんだん | 検索ワード |
| startIndex | 0 | 開始インデックス |
| maxResults | 2 | 最大取得件数 |
| key | yourAPIKey | 作成した API キー |

作成した API キーをクエリ パラメータに追加します。API キーは URL に埋め込んでも安全であるとのことで、エンコーディングの必要はありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/41784219-efd1-685e-a17e-f095dcd9ac2a.png)

### レスポンス

「ノラネコぐんだん」のワードで検索された、最初の 2 件の書籍データが取得されます。

```json:レスポンス
{
  "kind": "books#volumes",
  "totalItems": 324,
  "items": [
    {
      "kind": "books#volume",
      "id": "mN2sNAEACAAJ",
      "etag": "GIAlHu98DEQ",
      "selfLink": "https://www.googleapis.com/books/v1/volumes/mN2sNAEACAAJ",
      "volumeInfo": {
        "title": "ノラネコぐんだんパンこうじょう",
        "authors": [
          "工藤ノリコ"
        ],
        "publisher": "Hakusensha/Tsai Fong Books",
        "publishedDate": "2012-11",
        "description": "ノラネコぐんだんは、おいしそうなパンが気になり、ワンワンちゃんのパンこうじょうにしのびこみました。食いしん坊のノラネコぐんだんが見よう見まねでパンづくりに挑戦、大騒動を巻き起こします。",
        "industryIdentifiers": [
          {
            "type": "ISBN_10",
            "identifier": "459276157X"
          },
          {
            "type": "ISBN_13",
            "identifier": "9784592761570"
          }
        ],
        "readingModes": {
          "text": false,
          "image": false
        },
        "pageCount": 1,
        "printType": "BOOK",
        "maturityRating": "NOT_MATURE",
        "allowAnonLogging": false,
        "contentVersion": "preview-1.0.0",
        "imageLinks": {
          "smallThumbnail": "http://books.google.com/books/content?id=mN2sNAEACAAJ&printsec=frontcover&img=1&zoom=5&source=gbs_api",
          "thumbnail": "http://books.google.com/books/content?id=mN2sNAEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api"
        },
        "language": "ja",
        "previewLink": "http://books.google.co.jp/books?id=mN2sNAEACAAJ&dq=%E3%83%8E%E3%83%A9%E3%83%8D%E3%82%B3%E3%81%90%E3%82%93%E3%81%A0%E3%82%93&hl=&cd=1&source=gbs_api",
        "infoLink": "http://books.google.co.jp/books?id=mN2sNAEACAAJ&dq=%E3%83%8E%E3%83%A9%E3%83%8D%E3%82%B3%E3%81%90%E3%82%93%E3%81%A0%E3%82%93&hl=&source=gbs_api",
        "canonicalVolumeLink": "https://books.google.com/books/about/%E3%83%8E%E3%83%A9%E3%83%8D%E3%82%B3%E3%81%90%E3%82%93%E3%81%A0%E3%82%93%E3%83%91%E3%83%B3%E3%81%93%E3%81%86%E3%81%98.html?hl=&id=mN2sNAEACAAJ"
      },
      "saleInfo": {
        "country": "JP",
        "saleability": "NOT_FOR_SALE",
        "isEbook": false
      },
      "accessInfo": {
        "country": "JP",
        "viewability": "NO_PAGES",
        "embeddable": false,
        "publicDomain": false,
        "textToSpeechPermission": "ALLOWED",
        "epub": {
          "isAvailable": false
        },
        "pdf": {
          "isAvailable": false
        },
        "webReaderLink": "http://play.google.com/books/reader?id=mN2sNAEACAAJ&hl=&source=gbs_api",
        "accessViewStatus": "NONE",
        "quoteSharingAllowed": false
      },
      "searchInfo": {
        "textSnippet": "ノラネコぐんだんは、おいしそうなパンが気になり、ワンワンちゃんのパンこうじょうにしのびこみました。食いしん坊のノラネコぐんだんが見よう見まねでパンづくりに挑戦、 ..."
      }
    },
    {
      "kind": "books#volume",
      "id": "A_L8xAEACAAJ",
      "etag": "kMe1bk8iK1E",
      "selfLink": "https://www.googleapis.com/books/v1/volumes/A_L8xAEACAAJ",
      "volumeInfo": {
        "title": "ノラネコぐんだんコミック",
        "authors": [
          "工藤ノリコ"
        ],
        "publishedDate": "2019",
        "industryIdentifiers": [
          {
            "type": "ISBN_10",
            "identifier": "4592762495"
          },
          {
            "type": "ISBN_13",
            "identifier": "9784592762492"
          }
        ],
        "readingModes": {
          "text": false,
          "image": false
        },
        "pageCount": 143,
        "printType": "BOOK",
        "maturityRating": "NOT_MATURE",
        "allowAnonLogging": false,
        "contentVersion": "preview-1.0.0",
        "panelizationSummary": {
          "containsEpubBubbles": false,
          "containsImageBubbles": false
        },
        "language": "ja",
        "previewLink": "http://books.google.co.jp/books?id=A_L8xAEACAAJ&dq=%E3%83%8E%E3%83%A9%E3%83%8D%E3%82%B3%E3%81%90%E3%82%93%E3%81%A0%E3%82%93&hl=&cd=2&source=gbs_api",
        "infoLink": "http://books.google.co.jp/books?id=A_L8xAEACAAJ&dq=%E3%83%8E%E3%83%A9%E3%83%8D%E3%82%B3%E3%81%90%E3%82%93%E3%81%A0%E3%82%93&hl=&source=gbs_api",
        "canonicalVolumeLink": "https://books.google.com/books/about/%E3%83%8E%E3%83%A9%E3%83%8D%E3%82%B3%E3%81%90%E3%82%93%E3%81%A0%E3%82%93%E3%82%B3%E3%83%9F%E3%83%83%E3%82%AF.html?hl=&id=A_L8xAEACAAJ"
      },
      "saleInfo": {
        "country": "JP",
        "saleability": "NOT_FOR_SALE",
        "isEbook": false
      },
      "accessInfo": {
        "country": "JP",
        "viewability": "NO_PAGES",
        "embeddable": false,
        "publicDomain": false,
        "textToSpeechPermission": "ALLOWED",
        "epub": {
          "isAvailable": false
        },
        "pdf": {
          "isAvailable": false
        },
        "webReaderLink": "http://play.google.com/books/reader?id=A_L8xAEACAAJ&hl=&source=gbs_api",
        "accessViewStatus": "NONE",
        "quoteSharingAllowed": false
      }
    }
  ]
}

```

> **API キー:** OAuth 2.0 トークンを提供しないリクエストでは、API キーを送信する必要があります。キーによりプロジェクトが識別され、API アクセス、割り当て、レポートが提供されます。
> 

とある通り、API コンソールではリクエストの件数などが確認できるようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/ab55c5de-91d4-9ca3-f471-c221ec92dea5.png)

# おわりに

Google Books API を利用する際の API キーを作成する手順についてまとめました。

ありがとうございました。