組み込みでも使えるfirefox os

51
組み込みでも使える Firefox OS Mozilla Japan テクニカルマーケティング 清水智公 ([email protected]) html5j 自動車部 2014/04/08

Upload: noritada-shimizu

Post on 24-May-2015

1.043 views

Category:

Technology


4 download

DESCRIPTION

2014年4月9日にhtml5j自動車部で講演したスライドです。 Firefox OSにWebAPIを追加するためには何をすればいいかをまとめました。

TRANSCRIPT

Page 1: 組み込みでも使えるFirefox OS

組み込みでも使える Firefox OS

Mozilla Japan テクニカルマーケティング 清水智公 ([email protected])

html5j 自動車部 2014/04/08

Page 2: 組み込みでも使えるFirefox OS

about:me

2

Page 3: 組み込みでも使えるFirefox OS

清水智公(しみずのりただ)

• Mozilla Japan テクニカルマーケティング

• mozilla.jp の中の人 • 2013年4月より現職 • Twitter: @chikoski • http://slideshare.net/chikoski/

3

Page 4: 組み込みでも使えるFirefox OS

about:mozilla

4

Page 5: 組み込みでも使えるFirefox OS

FFiirreeffooxx をよろしくね!

Page 6: 組み込みでも使えるFirefox OS

6

Page 7: 組み込みでも使えるFirefox OS

7

Page 8: 組み込みでも使えるFirefox OS
Page 9: 組み込みでも使えるFirefox OS

about:Firefox OS

9

Page 10: 組み込みでも使えるFirefox OS

10

Page 11: 組み込みでも使えるFirefox OS

多数企業との共同開発・製品化

11

• 主要 18 キャリアが賛同 • チップ&端末メーカー • Qualcomm, ARM • ZTE, Alcatel, LG, Huawei, Sony

• Foxconn, Panasonic

Page 12: 組み込みでも使えるFirefox OS

各国で順次展開中

12

• スペイン、ポーランド • コロンビア、ベネズエラ • ドイツ、ブラジル、メキシコ、ペルー、ウルグアイ

• ハンガリー、ギリシャ、セルビア、モンテネグロ

• イタリア

Page 13: 組み込みでも使えるFirefox OS

• 商用端末3機種 • ZTE Open • Alcatel One Touch Fire • LG Fireweb • 開発端末 / PC • Geeksphone Keon /Peak • APC (VIA) Paper /Rock

発売中の端末

13

Page 14: 組み込みでも使えるFirefox OS

Firefox OS 端末販売状況

• ベネズエラ(Telefónica@2013/10)スマートフォン販売の12%

• コロンビア(Telefónica@2013/10) スマートフォン販売の9%

• ウルグアイ(Movistar@2013/12) スマートフォン販売の30%

14

Page 15: 組み込みでも使えるFirefox OS

15

ハードウェア 最小構成

CPU 1GHz, single-core, ARM Cortex A5 互換

ストレージ 汎用:オンボード256MB、スマホ:トータルで4G

システムRAM 128MB

ディスプレイ 262K色、HVGA、マルチタッチ(2点は必要)

GPU WebGLが利用可能、H.264動画を30FPSで描画可能

物理ボタン ホーム、電源、ボリューム

Page 16: 組み込みでも使えるFirefox OS

16

ハードウェア サポートしているバージョン

チップセット Qualcomm 7727, 7727A, 8210, 8212, 8225, 8926

Spreadtrum SC6821, SC7710, SC7715

解像度 HVGA, WVGA, FWVGA, 720P

NFC Broadcom 20793S NFC Controller

GPS A-GPS

Page 17: 組み込みでも使えるFirefox OS

ハードウェア コードネーム CPU RAM ROM

Alcatel One Touch Fire hamachi, buri Qualcomm MSM 7227A 1GHZ 256MB 512MB

ZTE Open ikura Qualcomm MSM 7225A 800Mhz 256MB 512MB

LG Fireweb leo Qualcomm 1GHz 512MB 4GB

Nexus4 nexus-4 Qualcomm Snapdragon S4Pro 1.5GHz quad-core 2GB 8 /

16GBFoxconn InFocus flatfish A31(Arm Coretex A7)

Quad-Core 1.0GHz 2GB 16GB

Spreadtrum SC6821 tarako Coretex A5 1GHz 128MB 2GB

Flame the “reference device”

Qualcomm MSM8210 Snapdragon, 1.2GHz 2core

256MB - 1GB 8GB

Page 18: 組み込みでも使えるFirefox OS

18

Page 19: 組み込みでも使えるFirefox OS

Firefox OS vs Android

19

カーネル & HAL

Web Platform App Framework

!!

AndroidRuntime

Dalvik

WebKit

Java アプリ

ブラウザ アプリ

Native Library

Web アプリ

Web アプリ

Packaged Webアプリ

Gecko

DeviceAPI SystemAPIライブラリ

SGL etc.

Native Interface

カーネル & HAL

Page 20: 組み込みでも使えるFirefox OS

20

Page 21: 組み込みでも使えるFirefox OS

21

Page 22: 組み込みでも使えるFirefox OS

22

Page 23: 組み込みでも使えるFirefox OS

23

プロセス 説明

b2g Content process の親

rild Radio Interface Layerを提供

rildproxy rildのクライアント

netd ネットワークインタフェースを設定

wpa_supplicant WPAのサプリカント

dbus_daemon DBUSを提供。Bluetooth通信に利用

Page 24: 組み込みでも使えるFirefox OS

sysfsの利用例

FILE *capacityFile =

fopen("/sys/class/power_supply/battery/capacity", "r");

double capacity = dom::battery::kDefaultLevel * 100;

if (capacityFile) {

fscanf(capacityFile, "%lf", &capacity);

fclose(capacityFile);

}

24

Page 25: 組み込みでも使えるFirefox OS

• Hosted (Web 読み込み型) • 従来のWebと同じ権限 • オフライン対応アプリも開発可能 • Packaged (ダウンロード型) • 従来のスマホアプリに相当 • Hostedアプリの権限+ 追加権限 • マーケット審査

Firefox OSアプリ

25

Packaged Web アプリ

HostedWeb アプリ

Page 26: 組み込みでも使えるFirefox OS

• Firefox OS の管理するリソースに対する操作

• ハードウェアの操作 • 通知のコントロール • etc • JavaScript から呼び出す

Web API

26

Page 27: 組み込みでも使えるFirefox OS

現在提供されているWeb API

• コミュニケーションNetwork Information API, Bluetooth, Mobile Connection API, Network Stats API, TCP Socket API, Telephony, WebSMS, WiFi Information API

• ハードウェアアクセスAmbient Light Sensor API, Battery Status API, Geolocation API, Pointer Lock API, Proximity API, Device Orientation API, Screen Orientation API, Vibration API, WebFM API, Camera API, Power Management API

27

Page 28: 組み込みでも使えるFirefox OS

現在提供されているWeb API(つづき)

• データ管理FileHandle API, IndexedDB, Contacts API, Device Storage API, Settings API

• その他Alarm API, Simple Push, Web Notifications, Apps API, Web Activities, WebPayment API, Browser API, Idle API, Permissions API, Time/Clock API

28

Page 29: 組み込みでも使えるFirefox OS

Vibration API

var pattern = [100,30,100,30,100,200,200,30,200,30,200,200, 100,30,100,30,100]; navigator.vibrate(pattern); // Vibrate 'SOS' in Morse.

29

Page 30: 組み込みでも使えるFirefox OS

30

Page 31: 組み込みでも使えるFirefox OS

Vibration API の WebIDL

partial interface Navigator {

boolean vibrate(unsigned long duration);

boolean vibrate( sequence<unsigned long> pattern);

};

31

Page 32: 組み込みでも使えるFirefox OS

Vibrate APIの実装

bool Navigator::Vibrate( const nsTArray<uint32_t>& aPattern){

// 諸々の確認作業。省略

hal::Vibrate(aPattern, mWindow);

return true;

}

32

Page 33: 組み込みでも使えるFirefox OS

gecko/hal/sandbox/SandboxHal.cpp

void Vibrate(const nsTArray<uint32_t>& pattern, const WindowIdentifier &id){

HAL_LOG(("Vibrate: Sending to parent process."));

AutoInfallibleTArray<uint32_t, 8> p(pattern);

WindowIdentifier newID(id);

newID.AppendProcessID();

Hal()->SendVibrate(p, newID.AsArray(), TabChild::GetFrom(newID.GetWindow()));

}

33

Page 34: 組み込みでも使えるFirefox OS

Geolocation API

var locator = navigator.geolocation;// locator は Geolocation オブジェクトlocator.getCurrentPosition(function(position){ doSomething(position.coords.latitude, position.coords.longitude);});

34

Page 35: 組み込みでも使えるFirefox OS

Geolocation.webidl[NoInterfaceObject]

interface Geolocation {

[Throws]

void getCurrentPosition(PositionCallback successCallback,

optional PositionErrorCallback? errorCallback = null,

optional PositionOptions options);

[Throws]

long watchPosition(PositionCallback successCallback,

optional PositionErrorCallback? errorCallback = null,

optional PositionOptions options);

! void clearWatch(long watchId);

};

35

Page 36: 組み込みでも使えるFirefox OS

dom/webidl/moz.build

WEBIDL_FILES = [

'AbstractWorker.webidl',

'ActivityRequestHandler.webidl',

'AnalyserNode.webidl',

'AnimationEvent.webidl',

(中略)

'Geolocation.webidl',

36

Page 37: 組み込みでも使えるFirefox OS

dom/bindings/Bindings.conf

'Geolocation': {

'headerFile': 'nsGeolocation.h'

},

37

Page 38: 組み込みでも使えるFirefox OS

dom/src/moz.build

DIRS += [

'jsurl',

'storage',

'offline',

'json',

'geolocation',

'notification',

]

38

Page 39: 組み込みでも使えるFirefox OS

dom/src/geolocation/nsGeolocation.h

namespace mozilla {

namespace dom {

class Geolocation;

typedef CallbackObjectHolder<PositionCallback, nsIDOMGeoPositionCallback> GeoPositionCallback;

typedef CallbackObjectHolder<PositionErrorCallback, nsIDOMGeoPositionErrorCallback> GeoPositionErrorCallback;

}

}

39

Page 40: 組み込みでも使えるFirefox OS

dom/src/geolocation/nsGeolocation.cpp

NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Geolocation)

NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY

NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMGeoGeolocation)

NS_INTERFACE_MAP_ENTRY(nsIDOMGeoGeolocation)

NS_INTERFACE_MAP_ENTRY(nsIGeolocationUpdate)

NS_INTERFACE_MAP_END

NS_IMPL_CYCLE_COLLECTING_ADDREF(Geolocation)

NS_IMPL_CYCLE_COLLECTING_RELEASE(Geolocation)

NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_4(Geolocation,

mCachedPosition,

mPendingCallbacks,

mWatchingCallbacks,

mPendingRequests)

40

Page 41: 組み込みでも使えるFirefox OS

dom/src/geolocation/nsGeolocation.cpp

Geolocation::Geolocation(): mLastWatchId(0){

SetIsDOMBinding();

}

Geolocation::~Geolocation(){

if (mService) {

Shutdown();

}

}

nsresult Geolocation::Init(nsIDOMWindow* aContentDom){

// Remember the window

if (aContentDom) {

nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aContentDom);

if (!window) {

41

Page 42: 組み込みでも使えるFirefox OS

dom/src/geolocation/nsGeolocation.cpp

Geolocation::WrapObject(JSContext *aCtx, JS::Handle<JSObject*> aScope){

return GeolocationBinding::Wrap(aCtx, aScope, this);

}

42

Page 43: 組み込みでも使えるFirefox OS

まとめ

43

Page 44: 組み込みでも使えるFirefox OS

44

ハードウェア 最小構成

CPU 1GHz, single-core, ARM Cortex A5 互換

ストレージ 汎用:オンボード256MB、スマホ:トータルで4G

システムRAM 128MB

ディスプレイ 262K色、HVGA、マルチタッチ(2点は必要)

GPU WebGLが利用可能、H.264動画を30FPSで描画可能

物理ボタン ホーム、電源、ボリューム

Page 45: 組み込みでも使えるFirefox OS

45

Page 46: 組み込みでも使えるFirefox OS

46

Page 47: 組み込みでも使えるFirefox OS

http://mobilepartners.mozilla.org/

47

Page 48: 組み込みでも使えるFirefox OS

48

http://fxos.org/Firefox OS コミュニティ

Page 49: 組み込みでも使えるFirefox OS

49

https://developer.mozilla.org/MDN

Page 50: 組み込みでも使えるFirefox OS

50

Page 51: 組み込みでも使えるFirefox OS

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

51