YouTube API サービス - 必要な最低限の機能

注: YouTube デベロッパー ポリシーへの準拠では、API クライアントが YouTube API サービスの利用規約ポリシー(API TOS)の特定の部分に準拠していることを確認するためのガイダンスと例が提供されています。このガイドでは、YouTube が API 利用規約の特定の側面をどのように適用しているかについて説明しますが、既存のドキュメントに代わるものではありません。

このドキュメントでは、YouTube API サービスの特定の機能を実装またはアクセスを提供する API クライアント(「API クライアント」)の最小機能要件を定義します。

これらの要件とガイドラインは、API クライアントが YouTube ユーザー、コンテンツ所有者、広告主の利益を保護する一貫したユーザー エクスペリエンスを提供することを保証するものです。これらのルールは YouTube API 利用規約の不可欠な一部であり、API クライアントの開発と実装において遵守する必要があります。

既存の YouTube 機能でユーザー エクスペリエンスを向上させるため、このドキュメントの要件は変更される可能性があります。また、YouTube の新機能や更新された機能に応じて変更されることもあります。このような変更により、新しい要件に対応するために API クライアントの更新が必要になる場合があります。変更は利用規約の改訂履歴に記載されます。このドキュメントを頻繁に確認するか、RSS フィードを購読して、API クライアントに影響する可能性のある変更を迅速に把握できるようにしてください。

このドキュメントの要件に加えて、YouTube API サービスのポリシーに記載されているベスト プラクティスや、YouTube API サービスのドキュメントの他の箇所で説明されているベスト プラクティスに従うことを強くおすすめします。厳密には必要ない場合でも、これらのプラクティスは、API クライアントがエラーからより迅速に復元し、割り当てを割り当てる YouTube API サービスを使用している場合に割り当ての使用量を最適化するのに役立ちます。同時に、これらのプラクティスは YouTube エコシステムの健全性を確保し、何よりも API クライアントと YouTube アプリケーションのユーザーに可能な限り最高のエクスペリエンスを提供するために役立ちます。

YouTube 埋め込みプレーヤーと動画の再生

このセクションの要件は、埋め込み YouTube プレーヤーに固有のものです。YouTube API サービス ポリシーには、YouTube のオーディオビジュアル コンテンツを再生する API クライアントに関連するポリシーも含まれています。

API クライアントの ID と認証情報

YouTube 埋め込みプレーヤー(YouTube IFrame Player API を含む)を使用する API クライアントは、HTTP Referer リクエスト ヘッダーで識別情報を提供する必要があります。環境によっては、ブラウザが HTTP Referer を自動的に設定します。API クライアントは、Referer 値を抑制するような方法で Referrer-Policy を設定しないようにするだけで済みます。YouTube では、多くのブラウザでデフォルトになっている strict-origin-when-cross-origin Referrer-Policy の使用をおすすめします。

同様に、JavaScript window.open を使用して作成されたウィンドウに YouTube 埋め込みプレーヤーを統合する場合、API クライアントは Referer 値を抑制する noreferrer 機能を使用できません。

Referer を設定する

HTTP Referer がデフォルトで空であり、ブラウザによって自動的に設定されない環境では、API クライアントは代替手段で ID を提供する措置を講じる必要があります。モバイルアプリやデスクトップ アプリなどの WebView 統合では、HTTP Referer はデフォルトで空です。通常、Referer は次のいずれかの手法で設定されます。

  • ローカル HTML ファイル内にプレーヤーを埋め込んだモバイルアプリ

    この構成では、プレーヤーはアプリにバンドルされている HTML ファイルに読み込まれます。この HTML ファイルを読み込むときに baseUrl パラメータを設定すると、Referer が設定されます。

  • ローカル HTML ファイルのないモバイルアプリ

    この構成では、プレーヤーは囲み HTML ファイルなしで https://www.youtube.com/embed/VIDEO_ID から直接読み込まれます。Referer は、HTTP ヘッダーとして追加することで設定します。

    • additionalHttpHeaders パラメータに Referer HTTP ヘッダーが追加された Android loadUrl
    • リクエストに Referer HTTP ヘッダーが追加された iOS loadRequest:。次に例を示します。

      NSString *bundleId = [[NSBundle mainBundle] bundleIdentifier];
      NSString *referrer = [[NSString stringWithFormat:@"https://%@", bundleId] lowercaseString];
      NSURL *referrerUrl = [NSURL URLWithString:referrer];
      
      NSString *destination = @"https://www.youtube.com/embed/VIDEO_ID";
      NSURL *destinationUrl = [NSURL URLWithString:destination];
      
      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:destinationUrl];
      [request addValue:referrerUrl forHTTPHeaderField:@"Referer"];
      
      // Create an instance of WKWebView (omitted for simplicity), then load the NSMutableURLRequest.
      [webView loadRequest:request];
      
  • ネイティブ ブラウザのタブ内にプレーヤーを埋め込んだモバイルアプリ

    • Android CustomTabs

      リファラーを設定するには、Intent.EXTRA_REFERRER を使用します。Uri を作成する際は、https:// ではなく android-app:// スキームを使用してください。次に例を示します。

      String destinationUrl = "https://www.youtube.com/embed/VIDEO_ID";
      CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build()
      customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER, Uri.parse("android-app://" + context.getPackageName()));
      customTabsIntent.launchUrl(this, Uri.parse(destinationUrl));
      
    • iOS SFSafariViewController

      SFSafariViewControllerReferer の設定をサポートしていません。この場合は、代わりに origin プレーヤー パラメータを設定します。

  • パソコン用アプリ

    この構成では、HTTP ヘッダーとして追加して Referer を設定します。

HTTP Referer がデフォルトで空の他のプラットフォームでは、プレーヤーが読み込まれる WebView を構成して Referer 値を設定します。正確な手法はプラットフォームによって異なる場合があります。

デベロッパーが YouTube 埋め込みプレーヤーを統合するために使用するライブラリ、フレームワーク、プラグイン、サービス、ラッパーのオーナーである場合は、環境からアプリ ID を取得するか(プラットフォームによっては取得できない場合があります)、デベロッパーがアプリ ID を渡せるようにして、上記のように Referer(および、必要に応じて widget_referrer プレーヤー パラメータ)を設定できるようにする必要があります。

リファラーの形式

WebView パラメータを設定するか HTTP ヘッダーを追加して Referer を明示的に指定する場合、通常は完全修飾 URL の形式になります。プロトコルとして HTTPS を指定します。URL 内のドメイン名は、アプリをエンドユーザーに配信したストアに登録されているアプリケーション ID(「アプリ ID」)である必要があります。アプリが代替配信チャネルを通じてユーザーに提供される場合は、アプリのインストール時にオペレーティング システムに登録されるアプリ ID を使用します。ほとんどの場合、アプリ ID は com.google.android.youtube のような逆ドメイン名(逆 DNS 形式とも呼ばれます)になります。代表的な例:

一部のプラットフォームでは、アプリ ID は逆順のドメイン名ではありません。このような場合は、アプリを配信するストアによって割り当てられた一意のアプリ ID を使用します。ストアアプリ ID が生成された英数字文字列(ストアまたは開発ツールによって割り当てられ、アプリ デベロッパーによって選択されたものではない)の場合は、アプリの表示名(スペースをハイフンに置き換えたもの)とストアアプリ ID の両方を、ピリオドで区切って含めます。例: <my-app-name>.<AppID>。この値は、アプリのバージョン変更後も安定している必要があります。アプリがストアでホストされていない場合は、アプリのインストール時にオペレーティング システムに登録されたアプリ ID を使用します。これは通常、アプリ マニフェスト内の一意の識別子です。アプリのバージョンとサポートされているアーキテクチャに関する詳細は除外します。代表的な例:

  • Chrome ウェブストア: ストアホスト型

    ストアアプリ ID は通常、アプリ URL https://chromewebstore.google.com/detail/<hyphenated-app-name>/<AppID> のパスの末尾部分です。ハイフン付きのアプリ名とストアアプリ ID を使用して、上記の <my-app-name>.<AppID> 文字列を作成します。

  • Windows: ストアホスト型

    ストアアプリ ID は通常、アプリ URL https://apps.microsoft.com/detail/<AppID> のパスの末尾部分です。ストアアプリ ID を使用して、上記で説明した <my-app-name>.<AppID> 文字列をビルドします。ハイフン付きのアプリ名も指定する必要があります。

  • Windows: ストア以外の配布

    Windows アプリには、アプリ マニフェストにパッケージ ID(Name_Version_Architecture_ResourceID_PublisherID)が含まれています。Name 属性のみを使用します。

  • Xbox: ストアホスト型

    ストアアプリ ID は通常、アプリ URL https://www.xbox.com/<region>/games/store/<hyphenated-app-name>/<AppID> のパスの末尾部分です。ハイフン付きのアプリ名とストアアプリ ID を使用して、上記の <my-app-name>.<AppID> 文字列を作成します。

YouTube へのリクエスト数が多い API クライアント(使用量と割り当てを参照)の場合、YouTube 埋め込みプレーヤーにアクセスするために追加の認証情報が必要になることがあります。

これらの要件に準拠していない場合、YouTube 埋め込みプレーヤーの機能が制限されることがあります。

WebView のタイプ

WebView に YouTube 埋め込みプレーヤーを統合する場合は、利用可能な OS 提供の WebView タイプをいずれか 1 つ使用します。次に例を示します。

埋め込み YouTube プレーヤーのサイズ

埋め込みプレーヤーには少なくとも 200px x 200px のビューポートが必要です。プレーヤーにコントロールが表示される場合は、ビューポートを最小サイズより小さくしなくてもコントロールが表示されるよう、十分な大きさを確保する必要があります。少なくとも幅 480 ピクセル、高さ 270 ピクセルの、アスペクト比 16:9 のプレーヤーをおすすめします。

自動再生とスクリプトによる再生

このセクションでは、自動再生について説明します。これは、autoplay プレーヤー パラメータを使用するか、YouTube IFrame Player API サービスまたは別の YouTube API サービスを使用して自動再生をプログラムで開始する YouTube 埋め込みプレーヤーに適用されます。

  • 動画を自動再生する埋め込みプレーヤーは、ページが読み込まれたとき、または埋め込みプレーヤーが完全に表示されたときに、すぐに再生を開始する必要があります。ただし、プレーヤーが表示され、プレーヤーの半分以上がページまたは画面に表示されるまで、API クライアントは自動再生を開始してはなりません。

  • ページまたは画面に、コンテンツを同時に自動再生する YouTube プレーヤーを複数配置することはできません。

  • 再生を開始する YouTube のサムネイルは、幅 120 ピクセル、高さ 70 ピクセル以上にする必要があります。

YouTube プレーヤーの属性

YouTube プレーヤーの属性とパラメータ(プレーヤーでの YouTube ブランドの表示など)は、YouTube API のドキュメントと仕様(https://developers.google.com/youtube)で指定されています。API ドキュメントに明示的に記載されていない YouTube プレーヤーの変更は行わないでください。

オーバーレイとフレーム

YouTube 埋め込みプレーヤーのどの部分(プレーヤーのコントロールを含む)の前にも、オーバーレイ、フレーム、その他の視覚要素を表示してはなりません。同様に、オーバーレイ、フレーム、その他の視覚要素を使用して、埋め込みプレーヤーの一部(プレーヤーのコントロールを含む)を隠すことはできません。

マウスオーバー

YouTube プレーヤーでマウスオーバー イベントやタッチイベントを使用して、ユーザーの代理としてウィンドウを開いたりチャンネルを登録したりするなどのアクションを開始することはできません。

動画のアップロード

API クライアントでユーザーが複数のプラットフォームにコンテンツをアップロードできる場合、ユーザーは動画をアップロードするプラットフォームを選択または選択解除できる必要があります。

データ要件

ユーザーが YouTube に動画をアップロードできるようにする API クライアントでは、ユーザーが次のリストの値を設定できるようにする必要があります。記載されていないプロパティは省略可能です。

  名前 説明
リソース プロパティ
snippet.title 必須。動画のタイトル。値が 100 文字を超えると、YouTube はエラーを返します。YouTube では、<> を除くすべての有効な UTF-8 文字がサポートされています。

snippet.description 必須。動画の説明。値が 5,000 バイトを超えると、YouTube はエラーを返します。YouTube では、<> を除くすべての有効な UTF-8 文字がサポートされています。
status.privacyStatus 必須。動画のプライバシー設定。ユーザーは、アップロードした動画を公開、非公開、限定公開のいずれにするかを選択できる必要があります。
リクエスト パラメータ
onBehalfOfContentOwnerChannel 条件付き必須。リクエストの認証情報でコンテンツ所有者が識別され、onBehalfOfContentOwner パラメータが設定されている場合、API ユーザーは動画のアップロード先となる YouTube チャンネルも指定できる必要があります。

コメントの表示

  名前 説明
リソース プロパティ
snippet.textDisplay 必須。コメントのテキスト。API クライアントは、(a)コメントまたはコメントへの返信の全文を表示するか、(b)テキストを切り捨て、切り捨てられたバージョンから全文に簡単にアクセスできるようにする必要があります。

この要件は、コメントが関連付けられているリソースのタイプ(動画、チャンネルなど)に関係なく、すべてのコメントとコメントへの返信に適用されます。

なお、commentThread リソースの snippet.topLevelComment プロパティ値は comment リソースであり、replies.comments[] プロパティは comment リソースのリストです。そのため、この要件は snippet.topLevelComment.snippet.textDisplay プロパティと replies.comments[].snippet.textDisplay プロパティにも適用されます。
snippet.title
channel
必須(提案)。チャンネルのタイトル。
  • コメントがチャンネルに関連する場合は、API クライアントはチャンネルの名前を表示する必要があります。
  • コメントが動画に関連している場合、API クライアントは動画をアップロードしたチャンネルの名前を表示する必要があります。
snippet.title
video
条件付き必須(提案)。動画のタイトル。コメントが動画に関連する場合は、この値を表示する必要があります。
snippet.moderationStatus 条件付き必須。API リクエストの moderationStatus パラメータ値が heldForReview または likelySpam の場合、プロパティ値、類似の文言(「このコメントは審査中です」など)、見出し(「審査中」など)、またはその他の明確な文言を使用して、そのステータスを明確に識別する必要があります。commentThreads.list メソッドは、コメントの管理ステータスに基づいてコメントを取得する機能をサポートしています。

コメントの追加

  名前 説明
リソース プロパティ
snippet.title
channel
必須。チャンネルのタイトル。
  • ユーザーがチャンネルに関するコメントを追加する場合、API クライアントはチャンネルの名前を表示する必要があります。
  • ユーザーが動画についてコメントを追加する場合、API クライアントは動画をアップロードしたチャンネルの名前を表示する必要があります。
snippet.title
video
必須。ユーザーが動画に関するコメントを追加している場合、API クライアントは動画のタイトルを表示する必要があります。
その他の要件
Comment author's channel name 必須。API クライアントは、コメントが関連付けられる YouTube ユーザー アカウントを明確に特定する必要があります。リクエストの認証情報でコンテンツ所有者が特定され、onBehalfOfContentOwner パラメータが設定されている場合、API ユーザーはコメントの帰属先となる YouTube チャンネルも指定できる必要があります。

コメントへの返信を追加する

  名前 説明
リソース プロパティ
snippet.textDisplay 必須。コメントのテキスト。API クライアントは、このドキュメントのコメントの表示セクションで定義されているルールに従って、ユーザーが返信しているコメントのテキストを表示する必要があります。
snippet.title
channel
必須。チャンネルのタイトル。
  • ユーザーがチャンネルに関するコメントに返信している場合、API クライアントはチャンネルの名前を表示する必要があります。
  • ユーザーが動画に関するコメントに返信している場合、API クライアントは動画をアップロードしたチャンネルの名前を表示する必要があります。
snippet.title
video
必須。ユーザーが動画に関するコメントに返信している場合、API クライアントは動画のタイトルを表示する必要があります。
その他の要件
Comment author's channel name 必須。API クライアントは、コメントの返信が関連付けられる YouTube ユーザー アカウントを明確に特定する必要があります。リクエストの認証情報でコンテンツ所有者が特定され、onBehalfOfContentOwner パラメータが設定されている場合、API ユーザーはコメントの返信が帰属する YouTube チャンネルも指定できる必要があります。

コメントへの返信の編集または削除

  名前 説明
リソース プロパティ
snippet.textDisplay 必須。コメントのテキスト。API クライアントは、このドキュメントのコメントの表示セクションで定義されているルールに従って、ユーザーが編集または削除しているコメントのテキストを表示する必要があります。
snippet.title
channel
必須。チャンネルのタイトル。
  • ユーザーがチャンネルに関するコメントを編集または削除している場合、API クライアントはチャンネルの名前を表示する必要があります。
  • ユーザーが動画に関するコメントを編集または削除している場合、API クライアントは動画をアップロードしたチャンネルの名前を表示する必要があります。
snippet.title
video
必須。ユーザーが動画に関するコメントを編集または削除している場合、API クライアントは動画のタイトルを表示する必要があります。
その他の要件
Comment author's channel name 必須。API クライアントは、コメントが関連付けられている YouTube ユーザー アカウントを明確に特定する必要があります。

チャットでユーザーを禁止する(または禁止を解除する)

  名前 説明
リソース プロパティ
snippet.title
channel
必須。禁止または禁止解除される YouTube チャンネルの名前。また、名前はチャンネルにリンクされているか、チャンネルの URL が表示されている必要があります。
その他の要件
コメント投稿者のチャンネル名 必須。API クライアントは、禁止の追加または削除に使用される YouTube ユーザー アカウントを明確に識別する必要があります。