チャンネル ID を操作する

Jeff Posnick、YouTube デベロッパー リレーションズ – 2013 年 6 月

Google+ プロフィールと YouTube チャンネルをリンクできることは 1 年以上前から可能で、そのプロフィールのリンクによって Data API v2 のレスポンスの一部がどのように変化したかについては、ブログで説明しています。最近では、従来の YouTube ユーザー名が関連付けられていない新しい YouTube チャンネルを作成できるようになりました。代わりに、Google+ プロフィールのみで識別されます。以前のブログ投稿の情報の多くは引き続き適用されますが、この追加の変更により、YouTube チャンネルに関する基本的な前提条件(各チャンネルが常に一意の YouTube ユーザー名に関連付けられるなど)が一部無効になります。そこで、すべての種類のチャンネルで動作するコードを記述するためのベスト プラクティスをいくつか追加でご紹介します。

Data API v3 のチャンネル ID

チャンネルを操作するすべての v3 オペレーションでは、チャンネルの識別手段としてチャンネル ID のみが使用されます。特定の YouTube ユーザーのチャンネルの ID は、API の v2 と v3 の両方で同じであるため、バージョン間の移行が容易になります。チャンネル ID に完全に依存するこの仕様は、以前は YouTube ユーザー名を API メソッドに渡していたデベロッパーにとっては混乱を招く可能性がありますが、v3 は以前のユーザー名が付いたチャンネルと付いていないチャンネルを同じように扱うように設計されているため、すべての場所でチャンネル ID を使用する必要があります。

v3 を使用していて、現在承認されているユーザーに対応するチャンネル ID を取得する場合は、channels.list(part="id", mine=true) メソッドを呼び出します。これは、v2 で default ユーザーのチャンネル プロファイルをリクエストするのと同じです。

任意の以前の YouTube ユーザー名を API の v3 を使用してチャンネル ID に変換する必要がある場合は、API に channels.list(part="id", forUsername="username") を呼び出すことができます。

表示名のみが判明していて、対応するチャンネルを探している場合は、search.list(part="snippet", type="channel", q="display name") メソッドが便利です。表示名は一意ではないため、呼び出しによって複数のアイテムを含んだレスポンスが返されることがありますが、この場合も対処できるようにしておく必要があります。

Data API v2 のチャンネル ID

注: YouTube Data API(v2)は 2014 年 2 月 26 日に非推奨となり、API は停止されています。v2 API をまだ使用しているアプリは、直ちに v3 API に移行する必要があります。

従来の Data API v2 を使用しているデベロッパーにとって最も影響が大きいのは、一意のユーザー名を持たない YouTube チャンネルの存在を意識する必要があるという点です。幸い、すべての YouTube チャンネルには一意のチャンネル ID が関連付けられています。この ID は <yt:channelId> タグの値で表されます。この値は、ユーザー名の代わりにデベロッパーが使用することをおすすめします。たとえば、YouTube ユーザー名を関連するチャンネルについての情報にマッピングするデータベースを使用していても、古いエントリを引き続き使用することができます(既存のチャンネルのユーザー名がなくなるわけではないため)。ただし、今後はユーザー名で一意に識別できないチャンネルにも対応しなければならない可能性が高まっていくはずです。

ただし、2 つの要素を考慮すればユーザー名からチャンネル ID への移行は簡単です。まず、Data API v2 は、YouTube ユーザー名が許可されるすべてのリクエスト URL でチャンネル ID を受け入れます。つまり、チャンネル ID を既存のコードにシームレスに置き換えることができます。たとえば、UC_x5XG1OV2P6uZZ5FSM9Ttw は以前のユーザー名 GoogleDevelopers のチャンネルのチャンネル ID であるため、次の 2 つの URL は同等の API リクエストです。

https://gdata.youtube.com/feeds/api/users/GoogleDevelopers?v=2.1
https://gdata.youtube.com/feeds/api/users/UC_x5XG1OV2P6uZZ5FSM9Ttw?v=2.1

また、認証済みの v2 リクエストを送信する際は、リクエスト URL の作成時に、承認済みチャンネルのユーザー名を含める必要はありません。ユーザー名(またはチャンネル ID)の代わりに、常に値 default を使用できます。たとえば、現在承認されているユーザーの動画アップロード フィードを取得するには、https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1 を使用します。