Firefox OS
Product Summary
by Tomoya Asai (dynamis)
about:me
Tomoya ASAI
Mozilla Japan
Technical Marketing (Evangelist)

dynamis @ community
dynamis.jp
@dynamitter
facebook.com/dynamis
mailto: Tomoya ASAI <dynamis@mozilla-japan.org>
Firefox OS
アプリのグリッド表示

ホーム画面
写真の編集画面

写真ギャラリー
ビデオ再生アプリ

音楽再生アプリ
メールアプリ

アドレス帳
Firefox Marketplace

Firefox
!

Firefox OS - Web is the Platform
Web = アプリ環境
アプリはすべて Web 技術で
ドメイン = アプリの1:1対応

Web を進化させる
不足機能は API を定義・標準化
Web のセキュリティモデルなど
も実装・標準化していく
Web 技術をネイティブに
Web 技術が「ネイティブ」
HTML/CSS/JS ですべて可能に
新しい API は W3C 標準化

速度も C 言語に迫る
asm.js により大幅高速化を実現
WebGL や DOMCrypt なども活用

Web 技術だけですべてが済むプラットフォームとなるよう発展中
Khronos
other

WebG
L

WHATWG

HTML5
Parser

Web
Messaging

Mouse,
Key ev.

W3C

HTML5

XHTML5

Geolocation

SVG

Canva
s

Multi
Media
HTML5
Forms

SMIL

Web
Sockets

Offline
Support

MicroData

OGP
Math
ML

IETF

Web
Sockets

SPDY
XHR2

DOM4

DNT

FileAP
I

ECMA
Script

CSP

ECMA
Indexed
DB

Web
Storage
Web
Workers

HTML
RSS

Orientation

ServerSent ev.

WAIARIA

Semantic
Elements

Vibration

Layou
t

Media
Queries

CSS3~

Trans
form
XPath
Anim
ation
WOFF

Region
s

Filters
Khronos

WebC
L

other

WebG
L

WHATWG

HTML5
Parser

Web
Messaging

Mouse,
Key ev.

W3C

HTML5

XHTML5

Geolocation

SVG

Canva
s

Multi
Media
HTML5
Forms

SMIL

Offline
Support

MicroData

OGP
RSS
RDF

Math
ML

DOM4

Opus

H.264

Web
Sockets

Web
Audio

Web
RTC

IETF
SPDY
XHR2

CSP

ECMA
Indexed
DB

Layou
t

CSS3~

Trans
form
XPath
Anim
ation
WOFF

Flex
Box

Region
s

Filters

Net
Info

Tel

Radio

NFC

ECMA
6th

Web
SQL

Media
Queries

Notification

TCP
Socket

DNT

FileAP
I

ECMA
Script

Web
Storage
Web
Workers

HTML
Schema
.org

Orientation

Web
Sockets

MP3

Webm

ServerSent ev.

WAIARIA

Semantic
Elements

Vibration

Device
Storage

File
Sys
Proximity

USB
Battery
Status
ステータスバー (通知、

電波強度、電池残量...)も
カメラやラジオも
ビデオや音楽の再生も
マーケットプレイスも
システムの環境設定も
ホーム画面や壁紙も
電話や SMS の送受信も
もちろん ブラウザ も
その他なんでも...

すべて Web 技術で!
Firefox OS : Tizen : Android
Web に最適化
シンプル&スマート
Web
アプリ

Packaged
Webアプリ

Web Platform
DeviceAPI

SystemAPI

Web
アプリ
Web
アプリ

Native
アプリ

Web
Native
Framework Framework
DeviceAPI

OS

ブラウザ
アプリ

Java
アプリ
Native
Library

App Framework
Dalvik

WebRT

etc..

Android
Runtime

WebKit

X.org etc.

WebKit

Native
Interface
SGL etc.

Gecko

コアサービス

ライブラリ

カーネル & HAL

カーネル & HAL

カーネル & HAL

左上のアプリが Web 読み込み型、右上のアプリがダウンロード型
C 言語に迫る高速化 (asm.js)

asm.js 導入時点で JavaScript は C の 2 倍遅い程度
(Java や C# の処理速度と同程度以上の水準に)
2013/03 - http://kripken.github.io/mloc_emscripten_talk/#/19
C 言語に迫る高速化 (asm.js)

Firefox の JavaScript (asm.js 形式) コード実行速度は
C 言語より数割遅い程度まで迫ってきている
2013/09 - http://kripken.github.io/mloc_emscripten_talk/sloop.html#/7
実レベル: Box2D 物理演算エンジン

Box2D では C 言語の 2 倍遅い程度の速度
!

Chrome や IE でも通常の JS より asm.js が高速
Java や CrossBridge (Flash C++ Compiler) と同等以上

2013/07 - http://kripken.github.io/mloc_emscripten_talk/sloop.html#/8
実用例: Unreal Engine 3

100 万行以上の C & OpenGL コードを 5 日で移植
LLVM + Emscripten で JavaScript (asm.js) に変換
epic CITADEL http://www.unrealengine.com/html5/
!

多数企業との共同開発・製品化
主要 18 キャリアが賛同
KDDI, Telefónica, Deutsche
Telekom、Telenor...

チップ&端末メーカー
Qualcomm, ARM
ZTE, Alcatel, LG, Huawei, Sony
Foxconn...
もちろん発表している企業がすべてではない
7月、8月に最初の販売開始
7月2日にスペインで発売
Telefónica が ZTE Open を発売
€69 (税込) プリペイド €30 含む

順次世界各国に展開
7月12日にポーランドで発売
8月1日にコロンビア、ベネズエラ

まずは今後の成長が見込まれる新興国市場を中心に展開 (キャリアの戦略)
ワルシャワやマドリッドでは…
ZTE Open & Alcatel One Touch Fire
!

ZTE Open
主な仕様:
Size: 114 x 62 x 12.5 mm

Display: 3.5 inch HVGA

CPU: MSM7225A 1 GHz

(Cortex-A5, Adreno 200)

RAM: 256 MB

ROM: 512 MB

スペインなどで発売
http://www.ztedevices.com/product/smart_phone/2bcf2d56-0c9a-4129-a25c-
!

Alcatel One Touch Fire
主な仕様:
Size: 115 x 62.3 x 12.2 mm

Display: 3.5 inch HVGA

CPU: MSM7227A 1 GHz

(Cortex-A5, Adreno 200)

RAM: 256 MB

ROM: 512 MB

ポーランドなどで発売
http://www.alcatelonetouch.com/global-en/products/smartphones/one_touch_fire.html
10月から更に多くの市場へ展開
Firefox OS 1.1 端末のリリース
Telefónica
10/22: ブラジル

10/31: メキシコ、ペルー、ウルグアイ

Deutsche Telekom
ドイツ、ギリシャ、ハンガリー

Telenor
ハンガリー、セルビア、モンテネグロ
日本や北米では 2013~2014 年中の見込み http://mozilla.jp/blog/entry/10310/
LG Fireweb (D300)
主な仕様:
Size: 113.8 x 66.5 x 9 mm

Display: 4 inch HVGA

CPU: 1 GHz (型番未確認)

Memory: 2 GB (4GB?)

ブラジルなどで発売

http://www.vivo.com.br/firefoxos/
Firefox OS ロードマップ
12 週間毎にアップデート
既存端末も順次更新される

Firefox OS 1.2
Android 4.3 × Firefox 26 ベース

Firefox OS 1.3
WebRTC, NFC, DataStore etc

UX 刷新プロジェクト進行中
https://wiki.mozilla.org/B2G/Roadmap
App Manager
& Simulator
アプリマネージャ
アプリ開発・管理環境
Firefox 標準搭載の開発環境
Firefox Nightly などに搭載済み

シュミレータ・実機両対応
Firefox OS 1.2 以降の実機またはシュ
ミレータと接続して開発
10 月時点で Firefox OS 1.2, 1.3 の
シュミレータが公開中
リリース版やベータ版には未搭載ですので Nightly で開発してください
アプリマネージャ

Web アプリ開発統合環境が Firefox 26 から標準搭載
アプリのインストールやリモートデバッグも
アプリマネージャ

Web Developer → App Manager メニューで起動
ヘルプのリンクからシュミレータをインストール
アドオンをインストール

Firefox OS 1.2, 1.3 の Simulator と ADB Helper
https://ftp.mozilla.org/pub/mozilla.org/labs/fxos-simulator/
シュミレータを起動

画面下部の [Start Simulator] ボタンで起動
起動したいバージョンを選択
Firefox OS 1.2 Simulator

デフォルトホームにアプリ検索フォームが移動
Firefox OS 1.3 Simulator

カテゴリ別アプリフォルダ復活
Apps Dev
Firefox OS のアプリ開発
Web アプリです。
Web アプリです。
Web アプリです。
!

!

大事なこと3回
Firefox OS のアプリ開発
いつもの開発ツール
いつものエディタ
いつものライブラリ
アプリ開発の流れ
普通に Web 開発
アプリマネージャ or Firebug etc.

manifest ファイルを用意
メタ情報を JSON 形式で記載

シミュレータや実機テスト
Android Firefox でもテスト

https://github.com/dynamis/firefoxos/wiki/simulator
アプリ情報ファイル書くだけ
サイト + manifest.webapp
1. manifest.webapp 作成
アプリ情報書くだけで終了
!

アプリ情報 (manifest.webapp)

https://developer.mozilla.org/en-US/docs/Apps/Manifest
独自アプリのインストール

Apps パネル左下の Add ∼ App から追加
新規アプリ開発はここからしましょう
独自アプリの管理

UPDATE ボタンで端末のアプリを更新
DEBUG ボタンでリモートデバッグ開始
いろいろ
作ってみてね!
Appendix
Install on
Android
Android に Web アプリ環境を
Web App = Native App に
ホームスクリーンへの追加
独立してフル画面起動
ネイティブ同様の利用体験

Firefox = WebRT (RunTime)
OS に依らない Web アプリ環境

ホームにインストール、アプリを起動した画面、マーケットをブラウズ
Android 版 Firefox で動作確認
1. インストールページ用意
2. Firefox でページを開く
3. アプリをインストール
4. アプリを起動してテスト
アプリマネージャは未対応

Hosted App なら Android Firefox で直接アプリを開いてテストするのもアリ
インストールページを作る
install() 関数を使う
var Apps = navigator.mozApps;

Apps.install(url)
manifest ファイル URL を渡す

その他の Apps API:
Apps.getSelf(), Apps.getInstalled()
Apps.installPackage(url)
https://developer.mozilla.org/en-US/docs/Apps/Apps_JavaScript_API
navigator.mozApps.install

!

https://developer.mozilla.org/en-US/docs/Apps/Apps_JavaScript_API
Hosted App &
Packaged App
2つの方式のアプリ
Hosted (Web 読み込み型)
従来の OS ではブラウザ上で動作
動作や権限は従来の Web と同じ
オフライン対応アプリも開発可能

Hosted

Web アプリ

Server
Internet

Packaged (ダウンロード型)
従来のスマホアプリに相当する
マーケット審査を経て追加権限取得
サイト全体を ZIP して配布する形式

端末
Packaged
Web アプリ

詳細: https://developer.mozilla.org/ja/docs/Web/Apps/Packaged_apps
ZIP して Packaged App に
ZIP + package.manifest
1. manifest.webapp 作成
Hosted Apps の時と同じ

2. サイト全体を ZIP する
manifest.webapp も含める

3. package.manifest を作成
mini manifest が別途必要
!

mini manifest (package.manifest)

https://developer.mozilla.org/en-US/docs/Web/Apps/Packaged_apps
インストールページ (Packaged)
installPackage() 関数を使う
var Apps = navigator.mozApps;

Apps.installPackage(url)
mini manifest URL を渡す

https://developer.mozilla.org/en-US/docs/Apps/Apps_JavaScript_API
!

navigator.mozApps.installPackage

!

https://developer.mozilla.org/en-US/docs/Apps/Apps_JavaScript_API
More about
App Dev
アプリ開発の注意事項
ブラウザ機能はない
戻るボタンはありません
別ドメインには別ウィンドウで
Firefox 1.1 からは UI 追加可能

Content Security Policy
Privileged 以上では CSP 必須
制限緩和は許可されていません
Firefox OS 1.1 からは manifest の chrome で戻るなどのボタン追加可能(非推奨)
Simulator では使えない API
Telephony
WebSMS
WebBluetooth
Ambient Light
Proximity
Network Information
Vibration
オフラインイベント
タッチイベントはエミュレーションされますが他のハード依存は未対応
アプリの種類と権限
ブラウザと一緒が基本
追加権限を求めない限りブラウ
ザ内でできることと一緒

権限に応じた制限
SD カード読み書きなどの権限を
得るには Package アプリとして
Marketplace での審査が必要
Firefox OS でのアプリの分類
方式

種類

概要

Web Content

Web サイトそのもの。

ブラウザ内でアクセスして使う。

(Web から
読み込む)

Installed Web

Web サイトをインストールしたもの。
ブラウザの UI なしで単独起動する。

Packaged

Plain
Packaged

Web サイト全体を ZIP パッケージにし
ているが追加権限を要求しないもの

Privileged

マーケット審査を受けて追加の権限を
許可されたアプリ

Certified

通信事業者や端末メーカーが特別に高
い権限を許可している組み込みアプリ

Hosted
!

!

(従来の OS 同
様端末にイン
ストールする)
アプリの分類と権限
種類

利用可能な API 例

Web
Content

PC や Android 等のブラウザでできることそのまま
位置情報、画面方向、加速度・近接・環境光センサー、
電池情報、振動、データベース (IndexedDB) など

Installed
Web

OS に登録することでアラーム、Push 通知、Web
Activities などの API が使えるようになる

Plain
Packaged

追加 API なし (Installed Web と同じ権限)

Privileged

アドレス帳、SD カードの読み書き、CORS に関わらず任
意ドメインへの XHR、TCP Socket

Certified

電話、SMS、ボイスメールなど料金の発生するサービス

その他 Bluetooth、Background Service など
Content Security Policy
Same Origin Policy (同一生成源ポリシー)
●

従来からの Web のセキュリティポリシー

●

スクリプトからは他のドメインにアクセス不可

(CORS で明示的に許可しているドメインは除く)

●

ドメイン=セキュリティ境界=アプリの境界

Content Security Policy
●

安全性を高める新しいセキュリティポリシー

●

JavaScript、CSS、画像、オブジェクト、フォントなど

ファイルの種類毎にドメイン制限が可能

●

インラインスクリプト禁止により XSS も防止可能
詳細: https://developer.mozilla.org/en-US/docs/Security/CSP
アプリの種類と CSP 設定
Privileged, Certified アプリは CSP 必須
●

Web から JavaScript を直接読み込んで実行できない

●

Privileged アプリのデフォルト: default-src *; script-src 'self';
object-src 'none'; style-src 'self' 'unsafe-inline'

●

Certified アプリのデフォルト: default-src *; script-src 'self';
object-src 'none'; style-src 'self'

●

JavaScript、CSS、オブジェクトファイルはパッケージ外か
ら読み込み不可能 (画像埋め込みは可能) という設定

CSP 設定変更は Manifest に記載
●

厳格化はできても緩和する設定は許可されないことに注意
詳細: https://developer.mozilla.org/ja/docs/Web/Apps/Packaged_apps
Building Blocks
Building Blocks (UI 部品)
Gaia (Firefox OS 標準) Apps
のデザインを簡単に作れる
http://buildingfirefoxos.com/

使っても使わなくても OK
好きな SDK/Library 使える
自由な Web ですから!

http://buildingfirefoxos.com/
Try Firefox OS
Try Firefox OS

Try Firefox OS