チャンネル ID への対応

YouTube Developer Relations – 2013 年 6 月

Google+ プロフィールと YouTube チャンネルを関連付けられるようになってから 1 年以上が経過しました。YouTube では、このプロフィール リンクの結果として Data API v2 のいくつかのレスポンスがどのように変わったか、ブログで説明してきました。また、最近は以前のようにチャンネルに関連付けられた YouTube ユーザー名を持たず、Google+ プロフィールによってのみ識別される新しい YouTube チャンネルを作成できるようになりました。ブログ記事の情報のほとんどはまだ有効ですが、YouTube チャンネルに関する基本的な前提の中には、この新しい機能のために現状に合わなくなったものもあります。たとえば、すべてのチャンネルが一意の YouTube ユーザー名と常に関連付けられているといった前提です。ここでは、どのようなタイプのチャンネルでも正しく機能するコードを作成するための新たなベストプラクティスを提供します。

Data API v3 でのチャンネル ID

この API バージョンでのチャンネルに関する操作は、すべてチャンネル ID のみを使用してチャンネルを識別します。特定の YouTube ユーザーが持つチャンネルの ID は API v2 でも v3 でも同じであるため、バージョン間での移行は簡単です。このチャンネル ID への完全な依存は、従来 YouTube ユーザー名を API メソッドに渡していたデベロッパーを混乱させる可能性もありますが、v3 の仕様では従来のユーザー名を持つチャンネルと持たないチャンネルの扱いを完全に同じにするため、いかなる場合もチャンネル ID を使用することになります。

v3 を使用して、現在認証されているユーザーに対応するチャンネル ID を取得したい場合は、channels.list(part="id", mine=true) メソッドを実行します。これは v2default ユーザーのチャンネル プロフィールを要求するのと同等です。

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

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

Data API v2 でのチャンネル ID

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

ただし、2 つの要素を考慮すればユーザー名からチャンネル ID への移行は簡単です。1 つは、Data API v2 がリクエスト URL 内の YouTube ユーザー名を受け付ける場合は、必ずチャンネル ID も受け付けるという点です。したがって、チャンネル ID を既存のコードにシームレスに乗せ換えることができます。たとえば、UC_x5XG1OV2P6uZZ5FSM9Ttw はチャンネル ID であり、このチャンネルがレガシー ユーザー名 GoogleDevelopers を持つのであれば、次の 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 で取得することができます。