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