YouTube を使用したモバイル開発に関するリソース

Jarek Wilkiewicz、YouTube API チーム
2010 年 9 月

はじめに

動画の録画、アップロード、共有、再生をモバイルアプリに組み込む場合は、YouTube プラットフォームを使用することで作業を簡素化し、最終的な製品を改善できます。この記事では、こうしたアプリケーションで利用できる技術について説明します。

記録中

動画の録画プロセスは、基盤となるモバイル プラットフォームを使用して実行されます。たとえば、Android ではアプリが VIDEO_CAPTURE インテントを発することができます。

Intent i = new Intent();
i.setAction(MediaStore.VIDEO_CAPTURE);
startActivityForResult(i, CAPTURE_RETURN);

iPhone iOS で UIImagePickerController を起動します。

IImagePickerController *imagePicker = [[[UIImagePickerController alloc] init] autorelease];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
[self presentModalViewController:imagePicker animated:YES];

iOS 4 以降では、より高度な録画オプションとして、AV Foundation フレームワークの AVCaptureSession クラスを使用することもできます。 

アップロード中

アプリケーションから YouTube に動画とそのメタデータをアップロードするには、ユーザーの YouTube アカウントに関連付けられている特別なメールアドレスにメールを送信するか、3 つの API メソッド(ブラウザベースのアップロード、直接アップロード、直接再開可能なアップロード)のいずれかを使用します。モバイル アプリケーションの場合、直接再開可能なアップロードが最も信頼性の高い選択肢です。この方法では、アプリケーションが接続エラーから正常に復旧し、エラーが発生した時点からアップロードを再開できます。YouTube の再開可能アップロード プロトコルでは、HTTP 1.1 の Content-Range/Range メカニズムを利用して動画をチャンクで転送し、中断が発生した場合は正常に転送されたバイト数を特定します。

アップロードの最も重要なコンポーネントは実際の動画コンテンツですが、動画のメタデータもプロセスの不可欠な部分です。メタデータにより、ユーザーは検索で動画を見つけることができ、この記事の後半で説明する他の機能も有効になります。モバイル アプリケーションでは、カテゴリ、説明、タイトルなどの一般的な要素に加えて、スマートフォンの GPS デバイスからの位置情報データを簡単に含めることができます。これらのデータを使用して、位置情報ベースの検索を提供したり、動画の位置情報を地図上に表示したりできます。 ユーザー操作を最小限に抑える動画アップロード アプリケーションの場合は、メタデータなしのアップロードも選択肢の一つです。この方法について詳しくは、Google I/O のトークをご覧ください。

共有

YouTube Data API には、動画共有アクティビティ向けの豊富な機能も用意されています。他の Google Data API と同様に、YouTube API でも REST にヒントを得たプロトコルを使用しており、AtomJSONJSON-C のデータ表現をサポートしています。JSON-C のコンパクトな API レスポンスは、リソースが制限されることの多いモバイル環境に特に適しています。この API は、柔軟な動画検索機能、動画に対するコメントや評価の機能、登録リスト、お気に入りの動画、再生リスト、およびおすすめ機能のエンジンへのアクセス機能を提供しています。また、コミュニティ機能をホストできるので、ソーシャル アプリケーションに動画を組み込むことができます。

これらの機能はすべて、プログラミング言語固有のクライアント ライブラリを使用するか、HTTP 経由で YouTube の API サーバーと直接やり取りすることで、モバイル アプリケーションに組み込むことができます。前者のアプローチでは、プロトコルの複雑さの大部分を抽象化しますが、アプリケーションのフットプリントが大きくなります。後者の方法では、アプリケーションで使用する特定の API サービスとのやり取りを手作業で作成できます。結局のところ、選択はアプリケーション固有です。ご利用にあたっては、Java GData ライブラリ(Android)または Objective-C GData ライブラリ(iPhone)をご覧ください。より複雑なモバイル動画アプリケーションの場合は、サーバー バックエンドとの統合が役立つ場合があります。そのようなアプリケーションの 1 つが YouTube Direct です(図 1)。YouTube Direct には、Google App Engine 上で動作するように事前構成されたオープンソース サーバー コードと、Android(図 1 に示す ytd-android)および iPhone(ytd-iphone)用の動画アップロードのリファレンス クライアント実装が含まれています。

YouTube Direct Android アプリ
図 1: YouTube Direct Android アプリ

セキュリティ

セキュリティと認証も、YouTube モバイルアプリ開発の重要な要素です。一部の API オペレーションは未認証のクライアントで使用できますが、その他のリクエストには承認が必要です。これは、API リクエストで送信された認証トークンを使用して行われます。認証が必要な操作は、動画のアップロードのほか、データの修正や書き込み操作、非公開のユーザー情報にアクセスする操作などです。

この API では、AuthSub、OAuth、ClientLogin の 3 つの認証方法をサポートしています。ClientLogin はモバイル アプリケーションで使用できる最も簡単な方法です。Android では、AccountManager を使用して認証トークンを簡単に取得できます。ただし、モバイル クライアントと複数のウェブ バックエンドを統合するアプリケーションでは、OAuth(オープン標準として推奨)または AuthSub(Google 固有)の使用を検討する必要があります。Android での OAuth 認証の実装例については、こちらのアプリをご覧ください。iPhone iOS での実装例については、GDataOAuthViewControllerTouch をご覧ください。 

再生

最後に、動画は視聴するために存在します。ここでも、YouTube プラットフォームには、複数のオプションがあります。

  • 最新のモバイル プラットフォームのほとんどには、YouTube プレーヤー アプリケーションがバンドルされているため、簡単に統合できます。ご利用のプラットフォームに YouTube プレーヤー アプリケーションが含まれていない場合は、YouTube プレーヤー アプリケーションをダウンロードしてください。モバイルアプリが、プラットフォーム サービスを使用してプレーヤーを起動します。たとえば、Android ではアプリが ACTION_VIEW インテントを使用し、iPhone ではアプリが こちらのブログ投稿で説明されているように UIApplication クラスの openURL メソッドを使用してプレーヤーを起動できます。
  • YouTube モバイルサイト(http://m.youtube.com)では、動画再生をウェブ アプリケーションに簡単に組み込むことができます。
  • 再生エクスペリエンスをより細かく制御するには、Adobe Flash 対応プラットフォームのアプリで AS3 YouTube プレーヤーを拡張し、高品質の再生を実現できます。