OSC 2013 Tokyo Fall

Firefox OS を使って
HTML5 でハードウェアを動かしてみよう
自己紹介


Twitter: @masap



職業: 組み込みプログラマ(主に Wi-Fi)
ハードウェア開発とソフトウェア

3
従来の開発スタイルの問題点


組み込み技術者の限界




従来は新しいハードウェアを作ったら、それを動かすアプ
リケーションは主に組み込み技術者が作っていた
使いづらい/ダサい




組み込み技術者はデザインやユーザビリティといった UI 関連
の技術が低いことが原因
例)Cisc● の無線 LAN アクセスポイントの Web 設定画面

4
従来の開発スタイルの問題点(続き)


組み込み技術者の限界


育ててはどうか


組み込み技術者はデザインやユーザビリティといった UI 関連
の技術を低く見ており学習意欲が低い(高齢になるほど顕
著)

デザイナとかチャラいと思っている

5
解決策


アプリ開発者やデザイナさんに頼む




組み込み技術者のように低レイヤ開発者ではなく上位レイヤ
のアプリ開発者やデザイナさんにハードウェアを叩いてもらう
アプリ開発者やデザイナが最も多いのはHTML5

HTML5 からハードウェアを
制御できるようにすればいい!
6
荒唐無稽な話?


既存のHTML5制御可能ハードウェア


LEAP Motion




SONY NEX-6




手の位置情報をJSON形式で
WebSocket経由で受信可能
JSONで制御可能

市場規模


ハードウェアメーカーとしてはハードウェアが多く売れれ
ば良いので市場規模の大きいHTML5を対象にするの
は必然
7
プラットフォームの選択

8
開発環境比較

iOS

Android

Tizen

SDK

Xcode

Eclipse with
ADT Plugin

Tizen SDK

Ubuntu
Touch
Ubuntu SDK

Firefox OS

ブラウザ
エンジン

WebKit

WebKit

WebKit

WebKit

Gecko

開発言語

Objective-C

Java

JavaScript

QML/
JavaScript

JavaScript

画面設計

Objective-C

XML

HTML5/
CSS

QML/
HTML5/CSS

HTML5/CSS

ネイティブ

Objective-C

C++

EFL

C++

なし

OS

iOS

Linux

Linux

Linux

Linux

なし

9
ハードウェアアクセス


ハードウェアアクセスの手間
Firefox OS

Android NDK

Gaia

JavaScript

Gecko

JavaScript

Java

Gonk

C/C++

C/C++

Ubuntu touch

C/C++

デバイスドライバ

10
プラットフォームの選択


iOS




HTML5から新設ハードウェア制御不可

Android vs Firefox OS






APIをフレームワークに追加するのはFirefox OSの方が手間
がかかる
SDKはAndroidの場合は独自SDKを配布するかリフレクション
を使う必要がある。Firefox OSはSDKが無いためAPI仕様を
公開するだけで使える
開発者がより使いやすいという点でFirefox OSが優れている

11
「Webがプラットフォームになる」


Firefox OSのキャッチフレーズ




一般的には「ブラウザはWebを見るためのものではなく
アプリケーションの実行環境になる」という意味

もう一歩進めて


Webがハードウェアのプラットフォームになるという意味



Firefox OSは、それぞれのハードウェアを
「ミニプラットフォーム」とするためのOS



HTML5からのハードウェアアクセスはFirefox OSが一
番進んでいる
12
Firefox OSは万能?

13
Firefox OSの適用範囲 (1/2)


Firefox OSが常に最適ということではない



不要な場合(その1)





APIが非公開
多彩なアプリケーションが不要

具体例




パチンコの玉数を数えて表示するだけのハードウェアに
Firefox OSを載せるのは無意味である
そういう用途であればUbuntu Touchが最適であろう。
ハードウェアアクセス及びアプリ開発工数が最も短くて
済むからである

14
Firefox OSの適用範囲 (2/2)


不要な場合(その2)




具体例




GUIが無い
LEAP MotionのようにGUIを持たないハードウェアであ
ればWebSocketサーバさえあれば良い

結論


Firefox OSは汎用ハードゥエアの分野で最も輝けるの
ではないか。ただし、GUIを持つようなある程度リッチな
ハードウェアに限る
15
以上

16

Firefox OS を使って HTML5 でハードウェアを動かしてみよう