YouTube Data API V3で動画情報を取得する方法: プロジェクト作成からAPIキーの発行まで

## はじめに
Youtubeの動画リストサイトを構築する際に、Youtubeの動画情報を取得するYoutube Data API V3を利用しました。YouTube Data API V3は、YouTubeのデータをアプリケーションで利用するための強力なツールです。この記事では、Google Cloud Platformでのプロジェクト作成からAPIキーの発行までの手順を、初心者の方にもわかりやすく説明します。

## Google Cloud Platformでのプロジェクトの作成

#### Google Cloud Platform（GCP）にアクセス
[Google Cloud Platform](https://console.cloud.google.com/?hl=ja)にアクセスし、アカウントにログインします。

#### プロジェクトの作成
左上のプロジェクトボタンから「新しいプロジェクト」をクリックし、新しいプロジェクトを作成します。プロジェクト名と請求先アカウントを入力し、「作成」ボタンをクリックします。

![スクリーンショット 2023-11-17 14.02.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/5569c067-3330-dc8b-96f5-f1cc4592c021.png)

![スクリーンショット 2023-11-17 14.04.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/25ba49f5-25cf-9175-883b-5d44836eb5ff.png)

![スクリーンショット 2023-11-17 14.05.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/9f662ab4-5cea-bca3-2755-245f134c8376.png)

## YouTube Data API V3の有効化

#### APIとサービスにアクセス
プロジェクト作成後、GCPダッシュボードで「APIとサービス」を選択します。

![スクリーンショット 2023-11-16 18.36.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/4b5b4063-5362-0fa7-4db4-7e798c8a54e4.png)

#### APIとサービスのライブラリを表示
「APIとサービス」の左メニューにある「ライブラリ」を選択します。

![スクリーンショット 2023-11-16 18.40.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/44435f89-54c6-8f56-ac65-11f1d47044ae.png)

#### YouTube Data API V3を検索して有効化
ライブラリ画面にて「YouTube Data API V3」を検索し、それを選択して「有効にする」ボタンをクリックします。

![スクリーンショット 2023-11-14 13.43.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/7740b978-6e7e-279b-2fff-aef92c00ed96.png)

![スクリーンショット 2023-11-16 18.26.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/1a01d0d4-cb11-3842-5083-d4089c0c2580.png)

## APIキーの生成

#### 認証情報を作成
「APIとサービス」のページにて「認証情報を作成」ボタンをクリックします。

![スクリーンショット 2023-11-14 13.45.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/860696dc-cc14-bd71-a764-e742d4df0973.png)

#### 認証情報の種類
使用するAPIは「Youtube Data API v3」を、アクセスするデータの種類は「一般公開データ」を選択し、「次へ」をクリックします。

![スクリーンショット 2023-11-14 13.45.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/c23fdf5d-c581-bc72-ce23-09e36e6ff89e.png)

#### APIキーの生成
APIキーが生成されるので、完了をクリック。

![スクリーンショット 2023-11-14 13.45.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/0b14e152-2ebf-aefb-1a04-49d021b2c2a0.png)


## 認証情報の設定

#### APIキーの管理
生成されたAPIキーをクリックして、APIキーの設定にアクセスします。

![スクリーンショット 2023-11-16 19.02.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/316dafae-270e-75a5-fea2-f1f250d6847b.png)

![スクリーンショット 2023-11-16 19.09.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/77841afd-5e01-01ba-4a97-bfdef4731e44.png)

#### アプリケーションの制限
「アプリケーションの制限」セクションで、APIキーの使用を特定のウェブサイト、IPアドレス、アプリに制限できます。今回はウェブサイトを選択します。特定のウェブサイトのみAPIを使用する場合は、ADDをクリックし、ウェブサイトのURLを追加します。

![スクリーンショット 2023-11-16 19.11.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/d85f8d78-4c8b-3c7a-e1aa-aac39e73a823.png)

#### APIの制限
「APIキーの制限」セクションで、キーの使用を特定のAPIに制限することができます。ここではキーを制御するを選択し、セレクトボックスからYoutube Data API v3にチェックを入れます。

![スクリーンショット 2023-11-14 13.48.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/bf20155a-3780-97cc-42e0-6048324369ce.png)

![スクリーンショット 2023-11-14 13.48.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/487238/afae0fa8-a430-596d-1b16-3e6bf0122223.png)

#### 保存
設定を行った後、「保存」をクリックします。
これらの手順を実行することで、YouTube Data API V3を使用するためのプロジェクトの設定とAPIキーの生成が完了します。APIキーを安全に保管し、不正使用を防ぐために、制限設定を適切に行うことが重要です。

## データの取得
本例では、`get_details`という関数を紹介します。この関数は、YouTubeの動画URLとAPIキーをパラメータとして受け取り、YouTube APIを利用してその動画の詳細情報を取得します。

```php
function get_details($youtube_url, $api_key)
{
    // Video IDの抽出
    parse_str(parse_url($youtube_url, PHP_URL_QUERY), $url_parameters);
    $video_id = $url_parameters['v'];

    // API endpointの構築
    $endpoint = "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,statistics,snippet&id=" . $video_id . "&key=" . $api_key;

    // APIを叩く
    $response = file_get_contents($endpoint);

    // JSONをデコードして変数に格納
    $data = json_decode($response, true);
 
    return $data;
}
```

### コードの詳細

#### Video IDの抽出
parse_urlとparse_strを使用して、与えられたYouTube URLから動画のIDを抽出します。

#### APIエンドポイントの構築
抽出した動画IDを使用して、YouTube Data API V3のエンドポイントを構築します。

#### APIの呼び出し
file_get_contentsを使用してAPIにリクエストを送り、レスポンスを取得します。

#### JSONデータの処理
取得したJSON形式のレスポンスをprint_rで出力し、json_decodeでPHPの配列に変換します。

## 使用方法
この関数を使用するには、適切なYouTube動画のURLと有効なAPIキーが必要です。以下のURLから動画情報を取得し、取得したデータをjson形式で出力してみます。

https://www.youtube.com/watch?v=GevLJmILi2Y

```php:php
$youtube_url = "https://www.youtube.com/watch?v=GevLJmILi2Y";
$api_key = "YOUR_API_KEY";  // 実際のAPIキーに置き換えてください

$video_details = get_details($youtube_url, $api_key);
print_r(json_encode($video_details));
```

```json:json
{
  "kind": "youtube#videoListResponse",
  "etag": "qTltah0hkDJxDugZeKupYxqktkU",
  "items": [
    {
      "kind": "youtube#video",
      "etag": "9tzgSJKGsoC1-4QlsZ-lfyz0Zqw",
      "id": "GevLJmILi2Y",
      "snippet": {
        "publishedAt": "2023-03-25T10:00:10Z",
        "channelId": "UCRf_7nS9lxLZFfK6kJBvK5A",
        "title": "&#8203;``【oaicite:1】``&#8203;大人が履くべきスニーカー3選。プロが徹底解説します。",
        "description": "このビデオでは、2023年版の大人向けスニーカー3選についてプロが徹底解説します。白レザースニーカーやニューバランス2002RST、トレンドの革靴ライクなスニーカーなどが紹介されています。スタイリスト大山シュンによるファッションの基本についても語られています。",
        "thumbnails": {
          "default": {
            "url": "https://i.ytimg.com/vi/GevLJmILi2Y/default.jpg",
            "width": 120,
            "height": 90
          },
          "medium": {
            "url": "https://i.ytimg.com/vi/GevLJmILi2Y/mqdefault.jpg",
            "width": 320,
            "height": 180
          },
          "high": {
            "url": "https://i.ytimg.com/vi/GevLJmILi2Y/hqdefault.jpg",
            "width": 480,
            "height": 360
          },
          "standard": {
            "url": "https://i.ytimg.com/vi/GevLJmILi2Y/sddefault.jpg",
            "width": 640,
            "height": 480
          },
          "maxres": {
            "url": "https://i.ytimg.com/vi/GevLJmILi2Y/maxresdefault.jpg",
            "width": 1280,
            "height": 720
          }
        },
        "channelTitle": "スタイリスト大山シュンのメンズ服講座",
        "tags": ["大山旬"],
        "categoryId": "24",
        "liveBroadcastContent": "none",
        "localized": {
          "title": "&#8203;``【oaicite:0】``&#8203;大人が履くべきスニーカー3選。プロが徹底解説します。",
          "description": "このビデオでは、2023年版の大人向けスニーカー3選についてプロが徹底解説します。白レザースニーカーやニューバランス2002RST、トレンドの革靴ライクなスニーカーなどが紹介されています。"
        }
      },
      "defaultAudioLanguage": "ja"
    },
    "contentDetails": {
      "duration": "PT17M50S",
      "dimension": "2d",
      "definition": "hd",
      "caption": "false",
      "licensedContent": true,
      "contentRating": {},
      "projection": "rectangular"
    },
    "statistics": {
      "viewCount": "103720",
      "likeCount": "643",
      "favoriteCount": "0",
      "commentCount": "14"
    }
  }],
  "pageInfo": {
    "totalResults": 1,
    "resultsPerPage": 1
  }
}
```

### JSONデータの概要

#### kind と etag
kindはデータのタイプを示し、ここではyoutube#videoListResponseが指定されています。これは動画リストの応答データであることを示します。
etagは、このレスポンスの固有の識別子です。

#### items
この配列は取得した動画の情報を含みます。それぞれのアイテムは個別の動画に関するデータを持っています。

#### snippet
このオブジェクトには、動画に関する詳細情報が含まれています。

#### publishedAt
動画が公開された日時。

#### channelId
動画をアップロードしたチャンネルのID。

#### title
動画のタイトル。

#### description
動画の説明文。

#### thumbnails
動画のサムネイル画像。異なるサイズが用意されています。

#### channelTitle
チャンネルのタイトル。

#### tags
動画に関連付けられたタグ。

#### categoryId
動画のカテゴリID。

#### liveBroadcastContent
生放送コンテンツかどうかを示します。

#### contentDetails
動画の長さ(duration)、画質(definition)、次元(dimension)、字幕の有無(caption)などの詳細情報が含まれています。

#### statistics
動画の視聴回数(viewCount)、いいねの数(likeCount)、お気に入り登録数(favoriteCount)、コメント数(commentCount)などの統計情報。

#### pageInfo
取得した結果の総数(totalResults)と、1ページあたりの結果数(resultsPerPage)を示します。

## まとめ
この記事では、YouTubeの動画情報を簡単に取得する方法をご紹介しました。初めに、Google Cloud Platformで新しいプロジェクトを作り、YouTube Data API V3を使えるようにしました。それから、APIキーを作って、PHPの例を使って実際にYouTubeの動画情報を取得する方法を見てみました。

このやり方は、動画のウェブサイトやアプリを作るときにとても役立ちます。タイトルや説明、サムネイル、視聴回数、いいねの数など、色々な情報が手に入ります。これらのデータは、動画の分析やユーザーへのおすすめ、マーケティングなど、色々な場面で使えます。

YouTube Data API V3を上手に使うと、動画についてより深く知ることができ、ユーザーに新しい価値を提供する方法を見つけられます。ただし、APIキーを安全に扱い、Google Cloud Platformの設定には気を付けてください。