Aikの技術日記

技術的な進捗とか成果とかを細々と投稿するブログです。時々雑記も。

Youtube Analytics and Reporting API使ってみた - Part1:基礎知識編

はじめに

こんにちは、筆者です。

いきなりの自分語り恐縮ですが、実は私のYoutubeチャンネルがそろそろ1周年を迎えるので…。
せっかく1年間やってきたことだし、自分の活動を振り返るためYoutube Data APIまとめGoogle APIのOAuth認証方法まとめやら色々調査して来た次第でした。

Youtube Data APIは分析するには取れるデータが少なすぎるし、
Youtube Analytics and Reporting APIを使うにはOAuth認証をしなければならないと、
面倒なことが色々ありましたが…ようやくYoutube Analytics and Reporting APIに手を出せたということで。

そして分かってはいましたが、このAPI…発行の仕方や概念等々、なかなか癖があるAPIでして。
記事等にまとめながらじゃないと理解できそうにないな…ということで、
自分への備忘録がわりにAPIの発行方法や概念等々をまとめていければと。

本当は1記事にまとめようと思いましたが、記事量が膨大になりそうなので…。
「基礎知識編」「Youtube Analytics API編」「Youtube Reporting API編」の三部構成としようかと。

初回となる当記事では「基礎知識編」として、当APIの基礎知識や概念、認証方式や必要スコープについて見ていきます。
それではいきましょう。

Youtube Analytics and Reporting API基礎知識

具体的なAPIの仕様や発行方法…の前に、まずは基礎知識や主要な概念を固めましょう。
※公式Docsはこちら: developers.google.com

まずは、当APIの大まかな分類から…。

Analytics APIとReporting APIの違い

APIの名前に「and」と付いているように、このAPIは大きく分けて「Youtube Analytics API」と「Youtube Reporting API」の2つに分かれます。
どちらもYoutube Data APIよりもより深いYoutube関連のデータを取得できるのは同じですが…。

ざっくりいうと:

  • Youtube Reporting API: リクエスト発行後、データが非同期で払い出される
    • .csv形式のデータを後からDL可能
    • 大量のデータを受け取れる
    • バッチ実行のユースケースに向いている、リアルタイムに今のデータを閲覧するには不向き
  • Youtube Analytics API: リクエスト発行後、データが即受け取れる
    • 大量のデータを受け取れはしない

…という感じです。
他サービスのAPI同様、欲しいデータをすぐJSON形式で受け取るなら「Youtube Analytics API」一択になります。
大量データを一気に分析したいなら、「YouTube Reporting API」を使って.csvファイルを加工して…としたほうが良いでしょう。

他にも細かな差異がありますが、それは後述。

概念説明:メトリクス、ディメンション

APIでは、さまざまなデータを「メトリクス(指標)」と「ディメンション」の組み合わせで取得できるよう構成されてます。
それぞれ何を示すかというと…:

  • メトリクス: データ量
    • 取得する値のカテゴリを指す
      • SQL句でいうSELECT [カラム名] FROMカラム名を指定するイメージ
    • 例: 動画再生数、評価数など
    • 必須指定
  • ディメンション: データ集計条件
    • 取得する値の軸を指す
      • SQL句でいうGROUP BYで指定する項目みたいなイメージ
    • 例: 動画投稿日時、所属国など
    • 空指定可能

この説明だと分かりにくいですが、実はこの形式かなり自由度が高く…。
さらにフィルターやソート条件も追加できるので、
ディメンションとメトリクスの組み合わせ+フィルターやソートを駆使することで、様々なデータを取得できます。

公式のサンプルクエリを例に見ていくと:

# 自チャンネルの動画の日毎の再生時間、視聴回数
dimensions=day
metrics=views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained
sort=day

# 指定国にて再生数が多い動画TOP10
dimensions=video
metrics=views,estimatedMinutesWatched,likes,subscribersGained
filters=country==JP
maxResults=10
sort=-views

# 自チャンネル内部で最も再生された動画TOP10
dimensions=video
metrics=estimatedMinutesWatched,views,likes,subscribersGained
maxResults=10
sort=-estimatedMinutesWatched

# 自チャンネルの指定再生リストの再生回数等統計情報
metrics=views,playlistStarts,estimatedMinutesWatched,viewsPerPlaylistStart
filters==isCurated=1;playlist==PLAYLIST_ID

# モバイル端末からの1日の視聴回数
dimensions=day,operatingSystem
metrics=estimatedMinutesWatched,views
filters=deviceType==MOBILE
sort=day

…など、様々な角度から多様な結果が受け取れることが分かるかと。
イデア次第で色んな情報を取れると思うので、クエリ構築力が試されそうです…。

認証方式、必要なスコープについて

最後に、認証方式とスコープについて触れておきましょう。

Youtubeに限らずGoogle系のAPIの認証方式は、大きく分けて「APIトークン式」と「OAuth認証式」がありますが…。
APIOAuth認証式」のみ対応 となっているため、実装する場合はOAuth認証の準備をしなければなりません。

OAuth認証の準備の仕方については、手前味噌ですが筆者が以前書いた記事を参考に: aik0aaat.hatenadiary.jp

また、OAuth認証時には「自作のアプリがGoogle上のどのリソースへアクセスできるか」スコープ(権限)指定をしないといけません。
これは各GoogleAPIによって必要なスコープが定められており、
Youtube Analytics and Reporting APIでは下記のスコープを要求されます:

  1. https://www.googleapis.com/auth/yt-analytics.readonly
    • 再生数や評価数など、基本的な情報へアクセス可能となる
  2. https://www.googleapis.com/auth/yt-analytics-monetary.readonly
    • 収益関連の情報へアクセス可能となる
  3. https://www.googleapis.com/auth/youtube,https://www.googleapis.com/auth/youtubepartner
    • Youtubeでは自分のチャンネル/動画/再生リスト等を分析用にグルーピングする機能が存在し、APIからグループへの操作が可能
    • 当スコープを付与することで、グループ関連の操作が可能になる

単なる分析目的であれば、1と2のスコープを付与すれば十分です。
企業チャンネル等で複数のVtuberを抱えている際には、分析用のグルーピング機能は役立つかもなので…その場合は3も付与しておけば良いでしょう。

おわりに

今回はYoutube分析の鉄板APIYoutube Analytics and Reporting API」について、
基礎知識や概念、認証方式や必要スコープについて見ていきました。

正直言うと、筆者はサクッとデータを取ってサクッと分析したいと思ってたので…。
色々ややこしい概念が多くあり、これは大変なAPIだと思う次第です…特にディメンションとかメトリクスとか。

調査しながら「記事にまとめていかないと分からなくなっちゃう」と思い、
当記事を作りましたが…まとめながら筆者の理解も進んだので良かったですが。

まぁYoutubeというデカいプラットフォームを分析尽くすなら、これくらいしないと逆に仕様がややこしくなるのでしょうかね。
収益化も出来ますし、簡単な分析ではあらゆるユーザーのユースケースに対応出来ないと判断されたのかもと思ったり…。
実際、ディメンションとメトリクスの組み合わせであらゆるデータを取れますしね。

もし簡単な分析機能しかいらないなら、Youtube Data APIを使うのも良いと思います。
Youtube Data APIについては、手前味噌ですが筆者が以前書いた記事があるので参考になれば: aik0aaat.hatenadiary.jp

…少し余談が長くなりました…。
当シリーズの次回記事ではYoutube Analytics APIについて深掘りしていこうと思います。
それでは|д゚*)