FirefoxOS勉強会#7 カメラアプリの作り方

34
Firefox OS ででででででででで Firefox OS ででで #7 @Kechol

description

FirefoxOS勉強会#7での発表資料です。

Transcript of FirefoxOS勉強会#7 カメラアプリの作り方

Page 1: FirefoxOS勉強会#7 カメラアプリの作り方

Firefox OS でカメラアプリ開発

Firefox OS 勉強会 #7@Kechol

Page 2: FirefoxOS勉強会#7 カメラアプリの作り方

自己紹介

鈴木和幸@Kechol

リクルートメディアテクノロジーラボ

Web エンジニア ( フロントエンド中心 )Firefox L10N コントリビュータ

Page 3: FirefoxOS勉強会#7 カメラアプリの作り方

   cameran

蜷川実花監修のカメラアプリ

アプリは iOS,Android 合わせ合計 500 万ダウンロードを記録

Page 4: FirefoxOS勉強会#7 カメラアプリの作り方

cameran on FirefoxOS

2014/02 リリース約3万 DL(200~300DL/day)

開発期間は2週間弱

Page 5: FirefoxOS勉強会#7 カメラアプリの作り方

cameran on FirefoxOS

カメラを起動して撮るだけの簡単なアプリ

Page 6: FirefoxOS勉強会#7 カメラアプリの作り方

アジェンダ• 前提知識おさらい• カメラアプリの作り方• アプリ開発上の tips

Page 7: FirefoxOS勉強会#7 カメラアプリの作り方

前提知識おさらい

Page 8: FirefoxOS勉強会#7 カメラアプリの作り方

FirefoxOS アプリ• HTML, CSS, JS で書ける

• アプリには Hosted, Privileged, Certified の3種類がある–カメラや外部通信は Privileged App

• アプリのブラウザエンジンは gecko

Page 9: FirefoxOS勉強会#7 カメラアプリの作り方

アプリ開発ことはじめ• Firefox Nightly があれば始められる– App Manager / WebIDE

• いろんな Boilerplate が落ちています– https://github.com/mdn/mdn-app-

template– https://github.com/buildingfirefoxos/Buil

ding-Blocks

– https://github.com/robnyman/Firefox-OS-Boilerplate-App

Page 10: FirefoxOS勉強会#7 カメラアプリの作り方

カメラアプリの作り方

Page 11: FirefoxOS勉強会#7 カメラアプリの作り方

カメラアプリの基本

撮る

加工する

Page 12: FirefoxOS勉強会#7 カメラアプリの作り方

カメラアプリの基本

getUserMedia()

<canvas>

Page 13: FirefoxOS勉強会#7 カメラアプリの作り方

FirefoxOS でのカメラアプリの基本

getUserMedia()MozActivity

<canvas>

Page 14: FirefoxOS勉強会#7 カメラアプリの作り方
Page 15: FirefoxOS勉強会#7 カメラアプリの作り方
Page 16: FirefoxOS勉強会#7 カメラアプリの作り方

カメラ• name: “pick” で MozActivity を初期化• 画像データは this.result.blob で取得

Page 17: FirefoxOS勉強会#7 カメラアプリの作り方

次のリリース• FirefoxOS >= 1.4– getUserMedia() でビデオキャプチャが可能

• FirefoxOS >= 2.0–MozCamera が利用可能

Page 18: FirefoxOS勉強会#7 カメラアプリの作り方

MozCamera での画像取得

Page 19: FirefoxOS勉強会#7 カメラアプリの作り方

フィルタ• 元画像への加工– contrast, brightness

• フィルタ画像の合成 (1~4 枚 )– ブレンドモードを指定して合成

Page 20: FirefoxOS勉強会#7 カメラアプリの作り方

画像の加工• 今回は画像の加工に canvas 2D を利用

• 利用ライブラリ– https://github.com/jseidelin/pixastic

Page 21: FirefoxOS勉強会#7 カメラアプリの作り方

その他の画像処理ライブラリ• pixi.js(WebGL)– http://www.pixijs.com/

• glfx.js(WebGL)– https://github.com/evanw/glfx.js

Page 22: FirefoxOS勉強会#7 カメラアプリの作り方

フィルタ: Shower

フィルタ画像 – 以下の四枚を順番に合成

Page 23: FirefoxOS勉強会#7 カメラアプリの作り方

画像の保存• デバイスストレージを利用– Navigator.getDeviceStorage()– device-storage のパーミッションが必要

Page 24: FirefoxOS勉強会#7 カメラアプリの作り方

画像のシェア• name: “share” で MozActivity を利用

Page 25: FirefoxOS勉強会#7 カメラアプリの作り方

フィルタ処理の問題• 普通に処理していると遅い– FirefoxOS の端末は非力• ZTE Open: CPU 1GHz, メモリ 256MB

Page 27: FirefoxOS勉強会#7 カメラアプリの作り方

その他細かいこと

Page 28: FirefoxOS勉強会#7 カメラアプリの作り方

利用したライブラリ• require.js• pixastic

• No jQuery– なくても DOM の操作には支障ない

• No MV* Framework– なくても十分なアプリの規模だった– 大きくなってきたら必須な感– ただパフォーマンスには注意

Page 29: FirefoxOS勉強会#7 カメラアプリの作り方

画面遷移と UI

• 画面遷移は window.onhashchange を利用

• Firefox OS 標準の UI と同じ遷移アニメーションにしたかったがやりにくかったので諦めた– Backbone や Angular と相性の良い実装があ

れば教えてください

Page 30: FirefoxOS勉強会#7 カメラアプリの作り方

アプリ申請〜運用まで

Page 31: FirefoxOS勉強会#7 カメラアプリの作り方

Content Security Policy

• Privileged App は CSP を守らなければならない– https://developer.mozilla.org/en-US/Apps

/CSP• インラインスクリプトの禁止• eval() の禁止 等

• アプリのバリデータでチェックできる– https://marketplace.firefox.com/develop

ers/validator

Page 32: FirefoxOS勉強会#7 カメラアプリの作り方

アプリのリジェクト• レビューをメールでくれる– 何が駄目なのか教えてくれる

• 直接レビュワーとやりとり可能

Page 33: FirefoxOS勉強会#7 カメラアプリの作り方

アプリの運用• Firefox OS は南米でのシェア率が高い– 例 : ウルグアイでは 30% のシェア

• お問い合わせがスペイン語でくる• 他言語化するならまずスペイン語がおすすめ– 今なら l10n.js を使いましょう

Page 34: FirefoxOS勉強会#7 カメラアプリの作り方

ご清聴ありがとうございました。