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 Framework の AVCaptureSession クラス(リンク先は英語)も使用できます。

アップロード

アプリケーションから動画とメタデータを YouTube にアップロードするには、そのユーザーの YouTube アカウントに関連付けられた固有のメール アドレスにメールを送信するか、API による 3 つの方法(ブラウザベースのアップロード、直接アップロード、直接レジューム アップロード)のいずれかを使用します。モバイル アプリケーションの場合、直接レジューム アップロードが最も信頼性の高い方法です。接続障害からアプリケーションがスムーズに回復して、アップロードを障害の発生時点から再開できます。YouTube のレジューム アップロード プロトコルでは、HTTP 1.1 の Content-Range/Range メカニズム(リンク先は英語)を使用して、動画をチャンク形式で転送し、割り込みが発生すると、それまで正常に転送されたバイト数を識別します。

アップロードでは、動画コンテンツそのものが最も重要なコンポーネントですが、動画メタデータもアップロード プロセスに重要な部分です。メタデータにより、ユーザーは動画を検索することができ、この記事で以下に説明するその他の機能も可能になります。カテゴリ、説明、タイトルなどの通常の要素に加えて、モバイル アプリケーションでは、携帯電話の GPS デバイスからの 地理的位置データを簡単に含めることができます。このデータを使って、現在地に基づく検索を提供したり、動画の撮影場所を地図上に示したりできます。ユーザーの操作を最小限に抑えることを目的とした動画アップロード アプリケーションの場合、メタデータをアップロードしないことも 1 つの選択肢です。詳しくは、Google I/O での講演をご覧ください。


共有

YouTube Direct Android アプリケーション
図 1: YouTube Direct Android アプリケーション

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

これらのどの機能も、モバイル アプリケーションに組み込むには、プログラミング言語ごとのクライアント ライブラリを使用するか、HTTP を介して YouTube の API サーバーと直接やり取りします。前者の方法では、アプリケーション サイズが大きくなりますが、プロトコルの複雑さを回避できます。後者の方法では、アプリケーションが使用する特定の API サービスとのやり取りを手作業で行えます。どちらを選択するかは、アプリケーションによって異なります。最初に、Android の場合は Java GData ライブラリ、iPhone の場合は Objective-C GData ライブラリをご覧ください。複雑なモバイル動画アプリケーションをサーバーのバックエンドと統合することで、メリットが得られる場合があります。このようなアプリケーションの 1 つが YouTube Direct(図 1)です。これは、Google App Engine で実行するにように事前設定されたサーバー側のオープンソース コードのほか、Android(ytd-android)と iPhone(ytd-iphone)で動画をアップロードするクライアント側のリファレンス実装を備えています。

セキュリティ

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

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

再生

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

  • 最新のモバイル プラットフォームには YouTube プレーヤー アプリケーションがバンドルされていて、簡単に統合できます。プラットフォームに YouTube プレーヤー アプリケーションが組み込まれていない場合は、ダウンロードすることができます。モバイル アプリケーションは、プラットフォーム サービスを使用してプレーヤーを起動します。たとえば、アプリケーションは Android で ACTION_VIEW インテントを使用し、iPhone で UIApplication クラスの openURL メソッドを使用してプレーヤーを起動することができます(こちらのブログ記事をご覧ください)。
  • YouTube モバイルのウェブサイト http://m.youtube.com で、動画の再生をウェブ アプリケーションに簡単に組み込むことができます。
  • 再生をより細かくコントロールするには、Adobe Flash が利用可能なプラットフォーム上のアプリケーションで AS3 YouTube プレーヤーを拡張して、高画質の再生を提供することができます。

この記事に関するご意見やご質問、または YouTube モバイル アプリケーションを構築する開発者へのご提案は、YouTube API 開発者フォーラムにお寄せください。