akiyoko blog

akiyoko の IT技術系ブログです

「AWSで実現する爆速なネイティブ動画アプリ開発セミナー」に参加してきました

今週、iOS開発系の勉強会に行ってきました。
「AWSで実現する爆速なネイティブ動画アプリ開発セミナー」(2013.8.28)


会場の「21cafe<ニイイチカフェ>」での最初の勉強会イベントとのことです。
開発者の人がpython系だったので少し親近感が。

iOSでムービーカメラアプリの作り方

福山誠氏(株式会社Dounuts)

  • 簡単6秒ムービー★ともらっち
    • ミニ動画アプリ
    • 短い動画を撮れるアプリが来てる!
    • 特に、Vineは革新的。6秒動画という新しいフォーマット
    • タップしている間だけ撮影される。UXが新しい!
    • 閲覧のしきいを下げてる
  • 5月中旬からスタート。2ヶ月ちょいでリリース。
    • 画像のサイズ:480x480、ビットレート:1Mbps、サウンド:モノラル
    • ファイルサイズは700〜800KB
  • UIImagePickerControllerでは、タップしている間だけの撮影とかいろいろ機能が網羅できない
  • AVFoundation Frameworkを使って独自に実装することに
  • 「Input <=> Session <=> Output」という概念があるよ
    • 一番重要なのは、Outputの部分
  • 結局、AVCaptureVIdeoDataOutputを使うことに
  • リアルタイムでフィルタを掛けて、OpenGLに渡している
  • CMTimeは1/600秒(タイムスケール600)で管理されている
  • 動画書き出しは、AVAssetWriterを使った。何でも出来る方
  • 動画のリアルタイムフィルタとかもやろうと思えばできるが、熱がやばい(iPhone4だと限界)
  • OpenGL, GPUImageが熱い!?リアルタイムでフィルタ描画
  • 電池消費がやばい
  • Androidがやばい(カメラの種類が無限・・)

AWSで構築する動画共有機能

上田哲広氏(株式会社Dounuts)

Docs: http://goo.gl/z39Yev

  • Google Developers Expertだけど、Googleの社員じゃないよ
  • 簡単に共有
    • URLを共有する仕組みに
  • 簡単に閲覧
  • 動画の高速配信、アプリ用のAPIが必要 →クラウドで
  • Google Cloud Platformなどクラウドは数あれど、TokyoリージョンのあるAWSを選択
  • Googleはアジアにリージョンがない
  • 構成は、EC2, RDS, S3, CoudFront
  • S3
    • ファイルストレージ
    • 耐久性99.999999999%
    • 容量・ファイル数も無制限(1ファイルの制限は5TB?)
    • 配信もスケーラブル。どれだけアクセスがあっても大丈夫
  • CloudFront
    • コンテンツ配信
    • 日本以外からのアクセスに対応させるため
    • 世界中に「エッジサーバ」がある(エッジサーバにキャッシュを一定時間保存してくれる)
  • Route53
    • DNS
    • 単機能でシンプル、高信頼性
  • RDS
    • データベース
    • MySQLで使ってる
    • 自動パッチ
    • 自動バックアップ(5分前から35日前までの任意の状態にも戻せる)
    • Multi-AZ(東京でも3つのゾーンに分かれてる)
  • SQS
    • シンプルキュー
    • バックグラウンドのタスクを積むために使用している
    • アプリのサクサク感を出すのに重要
  • Cloud Watch
    • モニタリング
    • サーバの状態を監視。管理画面で見ることもできるし、負荷が高まったら通知することも
  • EC2
    • 何でも出来るが、できる限り使わないのがクラウド管理の高速開発のコツ(手間を減らすため)
  • Python
    • Twitter, Facebook連携のライブラリもある
    • 実行速度もそこそこ速い
    • Webフレームワークは、tornadoを使った(Facebookが買収してメンテしている)
    • Django, Pyramid, Flaskもあるが、Djangoなどと比べてよりプリミティブなフレームワーク
    • ノンブロッキングなネットワークIOが特徴
    • 大きな同時接続数。パフォーマンスもよい
  • Fabric
    • デプロイ、サーバ管理
  • suppervisord
    • プロセス管理
  • nginx
    • リバースプロキシとして

鉄則

  • 「作らない」
    • ある機能に特化したサービスが用意されている。自分が作るより速い、信頼性高い
  • 「面倒をみない」
    • 自動バックアップ、自動パッチに頼る
    • Route53, S3などメンテナンスフリーなものを使う
  • サーバ代だけでなく、インフラ技術、セキュリティ、機会損失、人件費などを総合すると、クラウドは安い!