チャンネル ID を使用する

Jeff Posnick、YouTube Developer Relations – 2013 年 6 月

これまで 1 年以上にわたり、Google+ プロフィールと YouTube チャンネルをリンクしてきました。Google は、このプロフィール リンクの結果として Data API v2 のいくつかのレスポンスがどのように変更されたかについてブログを公開しました。最近では、従来の YouTube ユーザー名が関連付けられておらず、Google+ プロフィールだけで識別される新しい YouTube チャンネルを作成できるようになりました。このブログ投稿から得られた多くの情報は引き続き適用されますが、この追加リンクにより、YouTube チャンネルに関する基本的な前提(チャンネルはそれぞれ固有の YouTube ユーザー名に関連付けられるなど)が無効になります。そこで、すべてのチャンネルに適したコードを作成するためのベスト プラクティスを追加いたしました。

Data API v3 のチャネル ID

チャンネルと連携するすべての v3 のオペレーションで、チャンネル ID がチャンネルの特定手段としてのみ使用されます。特定の YouTube ユーザーのチャンネルの ID は API の v2 と v3 で同じであるため、バージョン間の移行が簡素化されます。これまで YouTube のユーザー名を API メソッドに渡していたデベロッパーにとって、チャンネル ID への依存は、わかりにくいかもしれません。しかし、v3 は、以前のユーザー名がある場合とない場合のチャンネルをまったく同じように扱うように設計されているため、すべての場所でチャンネル ID を使用します。

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

API の v3 を使用してチャンネル ID に変換する必要がある、以前の YouTube ユーザー名を使用している場合は、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 日をもって非推奨となり、提供も終了しました。まだ v2 API を使用しているアプリケーションは、直ちに v3 API に移行する必要があります。

従来の Data API v2 を使用しているデベロッパーにとって最も影響が大きいのは、一意のユーザー名を持たない YouTube チャンネルの存在を意識する必要があるという点です。幸いなことに、すべての YouTube チャンネルには一意のチャンネル 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

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