SlideShare a Scribd company logo
Firefox OSことはじめ
株式会社
グローバルサイバーグループ
システム開発2課マネージャ
藪下 正美 (a.k.aあおいたん)
はじめに
自己紹介
• 名前:藪下 正美
• 会社:株式会社グローバルサイバーグ
ループ
• どんな人?
– @aoi_nagatsuki
– プログラミング言語とかスマホとか好き
会社紹介
• 株式会社グローバルサイバーグループ
– やる気と人間性を大切にする総合開発企業
– とかはどうでもよくて

• ブログやってます
– http://www.gcg.bz/labo_blog/
– GCG研究所で検索!
– ネタ募集中!
– 空いてる時に調べてブログに書くのでなんか
聞いてね!
まえふり
• 今日は情報量多いです
• メモって質問!

•メモって質問!
–※これ大事!
今日のアジェンダ(1/4)
• 大まかな話
– FxOSとは
– なぜwebなのか
– 大まかな構造
– アプリの概要
今日のアジェンダ(2/4)
• アプリ開発
– 開発環境
– シミュレータ
– 開発者ツール
– AppMaker
今日のアジェンダ(3/4)
• FxOSの開発
– 開発機
– ホストOS
– ビルド環境の構築
– ビルド
今日のアジェンダ(4/4)
• 宣伝
– コミュニティ紹介
– イベント予定
– ConoHa VPS
大まかな話
FxOSとは
• FirefoxやThunderbirdを開発している
Mozilla財団が開発しているオープンソー
スのモバイルOS
• いわゆるWebOSの一つでHTML5をネイ
ティブアプリケーションプラットフォー
ムとしている
なぜwebなのか
• 現在のアプリエコシステムの問題点
• 潜在的な開発者の多さ
• 課題の克服
現在のアプリエコシステムの
問題点
• 各OS毎に専用のアプリフォーマット
• 各OS毎に専用のアプリマーケット
各OS毎に専用の
アプリフォーマットの問題点
• OS毎の開発が必要
– プログラミング言語、APIはOSに依存
– 開発環境が制限されることもある

• WebView+HTML5でマルチプラット
フォームを謳うライブラリもあるが
WebViewはサブセットなのでOS毎に差
異がある
各OS毎に専用の
アプリマーケットの問題点
• 販路が独占的
– 恣意的なレビュー
– 基準がマーケットによってまちまち

• 課金が独占的
– 他の課金システム利用不可(iOS/Windows
Store)
潜在的な開発者の多さ
• iOS
– 10万人

HTML5

• Android
– 45万人
Android

• HTML5
– 800万人

iOS

-2000000

3000000

8000000
課題の克服
• Webの問題点
– 機能的な制約
– パフォーマンスの悪さ
– マーケットの不在

• 解決の兆しが見えている
機能的な制約の克服
• WebAPIとしてW3Cで勧告
• これまで弱点だったデバイスの制御やシ
ステムの制御もAPIが定義されてきている
• もちろん得意分野のコンテンツ技術も進
化している
これまでできなかったこと
• システムステータスの取得・設定
– 通信状況、バッテリー状態、等

• デバイス制御
– 環境光センサー、近接センサー、加速度セン
サー、等センサー制御
– WiFi、USB、BT、NFC、等多機能デバイス
制御
API環境図(1/6)
API環境図(2/6)
API環境図(3/6)
API環境図(4/6)
API環境図(5/6)
API環境図(6/6)
パフォーマンスの悪さの克服
•
•
•
•

JavaScriptの高速化
次世代JavaScriptへの移行による高速化
AltJSによる高速化
WebAPIの定義による高速化
JavaScriptの高速化
• Firefox 22からJavaScriptエンジンが
OdinMonkeyに変更になった
– asm.js効果で高速に
• Banana Benchが二倍ぐらい速い

– FxOSはv1.1までGecko18ベースだがv1.2
でGecko26ベースに
次世代JavaScriptへの
移行による高速化
• Class、
Typed Array、
ParallelArray、
等
• 静的解析しやすい言語仕様に
• 現状Firefoxが一番移行が進んでいる
AltJSによる高速化
• Asm.jsでネイティブ並みの速さに
– ただしマイクロベンチベース

• Unreal Engineがブラウザ上で動く
– Emscriptenでasm.js形式に
– 変換に五日ぐらいかかったとかなんとか
WebAPIの定義による高速化
(ファイル操作)
• ストレージAPI
– IndexedDB、SessionStorage、
DeviceStorage、DataStore API

• マルチメディアAPI
– WebAudio、 WebRTC、Camera
WebAPIの定義による高速化
(デバイス制御)
• ヒューマンインターフェイス
– タッチイベント、バイブレーション、ゲーム
パッド

• センサーAPI
– Geolocation、Orientation、Ambient
Light、Proximity

• ハードウェア制御
– USB、BT、FM Radio、NFC
WebAPIの定義による高速化
(通信系)
• 通信API
– WebSocket、TCP Socket、
UDP Diagram Socket

• 連携
– WebActivity、WebIntent?、Push
Notification
WebAPIの定義による高速化
(システム系)
• システム情報
– 通信状態、バッテリー状態

• システム制御
– リソース制御、システム設定、アラーム動作、
バックグラウンド動作

• セキュリティ
– Permission API、CSP
マーケットの不在の克服
• Firefox Market
– ただこれだけだとOSごとにしかマーケット
がない状況が変わらない

• Web Payment API
– 特定のマーケットによらない課金の仕組みが
W3C勧告に
– Paypal慣れてるとおなじみの手順の課金方法
を実現するAPI
Web=Nativeへ
• ないものを取り込んでAPI化
• ブラウザ技術からプラットフォームへ
他のモバイルOSと比較
(Androidの構造)
• Androidではブラウザ
の機能はWebKitが実現
する
• プラットフォーム固有
部分の実装はNative層
• AndroidのAPIはJNIを
通じてJavaで
WebViewとして提供
される
• HTML5アプリは
WebViewの上に乗る
他のモバイルOSと比較
(iOSの構造)
• iOSではブラウザの機
能はWebKitが実現する
• プラットフォーム固有
部分の実装は
CoreService層
• ブラウザ部分はCocoa
層でUIWebViewとし
て提供される
• HTML5アプリは
UIWebViewの上に乗
る
他のモバイルOSと比較
(Firefox OSの構造)
• FxOSではブラウザの機能
はGeckoが実現する
• プラットフォーム固有部分
の実装はGeckoとGonk
(HAL)層
• ブラウザ部分もGeckoで定
義されるがデスクトップブ
ラウザと違ってChromeは
ほとんど何もない
• HTML5アプリはGeckoの
上に乗る
– 余計なVMやコンポーネント
が間に挟まらなくてシンプ
ル
他のモバイルOSと比較(一覧)
FxOS

Android

iOS
大まかな構造
• 大きく以下の三つから
できている
– Gaia(システムアプリ)
– Gecko(ブラウザ
/HTMLエンジン)
– Gonk(HAL)

• 引用元
– https://developer.mo
zilla.org/ja/docs/Mozil
la/Firefox_OS/Platfor
m/Architecture
Gonk
• HAL層のインターフェイスをGeckoに合
致させるための層
• カーネルとドライバ自体はAndroidのも
のを使う
• FxOSの主要な層の中では実装量が極端に
少ない
Gecko
• HTMLエンジンとブラウザを実装している層
• デスクトップのFirefoxで使用されるものと
同じもの
– 現在デスクトップ版が26
– 日本から手に入るFxOSの商用端末の出荷状態
(v1.1)では18
– v1.2にアップデートすると26になる

• HTMLやCSSのレンダリング、JSの評価、
WebAPIの提供など主要な部分はすべて
Geckoで実装されている
Gaia
• システムアプリやプリインアプリを実装している
層
• Geckoが起動してChromeプロセスを作ると
Systemアプリがロードされる
• ここに置かれるアプリはSystemアプリを除いて
Contentプロセスという制限プロセスになる
– ContentプロセスはChromeプロセスのプラグイン
として動くことになる
– デスクトップでいうFlashなどと同じ仕組み

• ただしCertifiedというAPIに制限のないアプリタ
イプを選択できる
アプリの概要
(さわり)
• いわゆるHTML5アプリ
• デバイスの制御などもWebAPIとして提供
される
• 標準化されていないもの、されないもの
はmozプリフィックス付で
global.windowか
global.window.navigatorあたりにぶら
下がっているはず
アプリの概要
(通常のWebアプリとの違い)
• Manifest.webappを用意することでイン
ストールできるようになる
• すでに動いているWebアプリがあるなら
5分でFxOSアプリ
アプリの概要
(権限による違い)
種別

配置場所

権限

Hostedアプリ

Web

Webアプリにmanifest.webappを加えたも
の。
端末のデバイスを触る機能に制限が強い。

Packagedアプリ

端末

Hostedアプリをパックして端末内にインス
トールできるようにしたもの。

Privilegedアプリ

端末

特権を要求するアプリ。デバイスの操作や
通信が必要なものはこれ。
審査が厳しくなる。(コードレビューされる)

Certifiedアプリ

端末

端末メーカがプリインアプリでのみ使用可
能な強い権限のアプリ。
カメラなど一部の機能はCertifiedでないと
使えない。
アプリ開発
開発環境
• FxOSのアプリはただのHTML5なので
お気に入りのHTML5アプリ開発環境を
使える
– ちなみに藪下はvimで書いてFirefoxとか
Chromeの開発者ツールでデバッグしてます

• 最近よく聞くのはAptana Studioとか
Intel XDKとかInteli Jとか
シミュレータ
• Firefox OS v1.1 Simulator
• Firefoxアドオンとして提供されている
– アドオンセンターでFirefox OS Simulatorで検
索してAddしてみると簡単に導入できる
– エンジンやAPIはFxOSもデスクトップも
同じGeckoなのでシミュレータで動けば
ほぼ実機で動く
• ただしシミュレータのほうが速いとかも普通にある

– デバイス制御系はさすがにないので
Firefox for Androidとかで試しましょう
開発者ツール
• 今どきのブラウザはJSの実行をブレーク
したりステップ実行したりできる
– もちろん変数がウォッチできるし値も
変えられる

• AppManager
– v1.2やv1.3のシミュレータを使うなら
AppManagerを使う必要がある
– たぶん清水さんが詳しく話してくれます
AppMaker
• 開発ツールかというとちょっと違うかも
• 簡単なRAD環境
– もともとプログラミング教育を研究している
チームが中高生でも簡単にアプリを作れる環境を
作りたかった

• ポチポチやると意外と楽しい
• コンポーネント次第で化ける
– のでAppMakerでアプリ作ったり
コンポーネント追加するハッカソンやりました
• Webプラットフォーム勉強会1311
• http://atnd.org/events/44944
Firefox OSの開発
開発機
• ボード
• スマートフォン
• エミュレータ
ボード
• Pandaboard
– OMAPなのでSnapdragonが多いFxOS界隈で
はちょっと(だいぶ?)ニッチ

• APC Paper/Rock
– ViaからAndroid向けに出ていたボード
– 最近FxOS搭載版が出た

• 一部ではRaspberry Piで動かそうとしてい
る人たちがいるとか
– 結構みんな独立にやってるっぽい
– かくいう藪下もその一人でした
スマートフォン
• Keon/Peak/Peak+/Unagi/Otoro
– Geeksphoneから一般に発売中の開発端末
– Unagi/OtoroはKeon/Peakのコードネーム

• ZTE Open/Inari
– eBayでSIMフリー版が発売中
– 日本からだとeBay HKあたりなら買えるはず
– InariはZTE Openのコードネーム

• Nexus S/Nexus S 4G/Nexus 4/Nexus 5
• Galaxy Nexus/Galaxy S2
エミュレータ
• デスクトップ
– Firefoxの上でGaiaを動かすもの

• エミュレータ(ARM/x86)
• エミュレータJB(ARM/x86)
– Firefox OS本体を修正した場合などは主にエミュレータ
で動作確認する
– JB版はv1.2以降で下敷きにするAndroidのバージョンが
4.3になるのでそのためのもの

• シミュレータ
– 前述のシミュレータ
– 今後バージョンごとに出そう
– 実は全言語版がこっそりある
• http://r2d2b2g.flod.org/
ホストOS
• Mac OS X
– Lion推奨
– 山Lion以降の場合Xcodeのバージョン的に
注意点がある

• 各種Linux
– 各ディストリビューションの差異でビルド
環境構築の注意点が違うかも
– 基本的にはAndroidのビルド環境と同じなので
注意点はAndroid4.0以降向けの情報を探せばOK

• Windows
– Cygwinではつらかとです。。。
ビルド環境の構築
•

基本的にはAndroidと同じなのでざっくり以下のパッケージを
入れればよい
–
–
–
–
–
–
–
–
–
–
–
–

•

autoconf 2.13
Bison/flex
Bzip2/ 32-bit zlib
ccache
curl
gawk
git
gcc / g++ / g++-multilib
make
OpenGL headers
X11 headers
32-bit ncurses

詳しくはこちら
– https://developer.mozilla.org/enUS/Firefox_OS/Firefox_OS_build_prerequisites
ビルド
•
•
•
•

config.sh
build.sh
flash.sh
run-emulator.sh
config.sh
• 各デバイス向けのコンフィグと
リポジトリのクローン、更新、チェック
アウトをしてくれる
– デバイス名がわからないときは引数なしで
実行すると一覧される

• 対応機種以外は地道な移植作業が
待ってます。。。
build.sh
• コンフィグが完了したらbuild.shで
ビルド開始する
– Androidでもおなじみマルチスレッド
スイッチがあるのでコア数に合わせて
-j<数字>をつける
– Gaiaとかgeckoとつけるとモジュールごと
ビルドも可能
flash.sh
• 実機への焼きこみスクリプト
– build.sh同様gaiaとかgeckoをつけると
モジュールごと焼きこみが可能

• 端末によってはsudoしないとfastbootが
こけるかも
run-emulator.sh
• エミュレータの実行
– 基本はAndroidのエミュレータを使っている
のでAndroidのものと同様のオプションが使
えるはず
宣伝
コミュニティはじめました
• FxOSコードリーディング
– Facebook
• https://www.facebook.com/groups/fxos.code.readin
g/

– Github
• https://github.com/FxOS-Code-ReadingGroup/MainRepo

– OpenGrok
• ドメイン取得次第一般公開します
• 現在グループ内限定で公開してます

– AppMaker
• FxOSコードリーディングでコンポーネントを追加している
AppMakerもドメイン取得次第公開します
FxOSコードリーディングって?
• FxOSのソースコードを読みます
– 好きなところを読みます
– 気軽に読みます
– 必要なのは読みたい気持ちとソースだけです
– 気軽に知ってることを教えあいましょう
• そのソースここらへんとかそれにはこれが参考に
なるかもとか
ミートアップの様子
• たまには集まって
読みます
– 11/4にやったミー
トアップイベントのよ
うすです。

• いいづかさんの
Qiitaから
– http://qiita.com/iizu
kak/items/fea7fb9
27e3056230a43
イベント予定
•

わんくま勉強会名古屋#30
– 2/15
– 関西Firefox OS勉強会で登壇されているuniunixさんが登壇されます

•

関東Firefox OS勉強会6th
– 2/16
– 今回はハンズオンですよ!

•

FxOSコードリーディングミートアップ#4
– 2/22
– 休日開催なのでのんびりまったりやりましょう

•

FxOS Gecko勉強会その3
– 3/5
– HTMLの描画に起因する速度低下がテーマです

•

ABC2014Spring
– 3/21
– FxOSコミュニティでブース出します
– 講演依頼もあるので誰かが何か話します
ConoHa VPS
• FxOSコードリーディングではGMO様
よりコミュニティ支援でConoHa VPSを
ご提供いただいています
– ConoHaについて詳しくはこちら
• http://www.conoha.jp/
• アカウントの音声認証でこのはたん(CV 上坂す
みれ)がアナウンスしててビビりました

– コミュニティ支援についてはこちら
• http://www.conoha.jp/news/674.html
おしまい

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

More Related Content

PDF
N29 aoitan firefox osことはじめ
PDF
モバイルOSとWeb標準とそれらへのアプローチ
PDF
Firefox OS 起動の仕組みを調べてみた
PDF
20141018 osc tokyo_fall_firefox osってなぁに?
PDF
GeckoのLocal Storageについて調べてみた
PPTX
月刊ライトニングトーク 12月号
PPT
BuddyPressで街のポータルサイトを作ろう
PDF
Word press初心者が 基本アーキテクチャを ざっくりと学ぶ
N29 aoitan firefox osことはじめ
モバイルOSとWeb標準とそれらへのアプローチ
Firefox OS 起動の仕組みを調べてみた
20141018 osc tokyo_fall_firefox osってなぁに?
GeckoのLocal Storageについて調べてみた
月刊ライトニングトーク 12月号
BuddyPressで街のポータルサイトを作ろう
Word press初心者が 基本アーキテクチャを ざっくりと学ぶ

What's hot (19)

PPTX
Uwpアプリケーション開発入門
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
PPTX
Uwpハンズオン参加レポート
PPTX
ドキュメントの話、しませんか? #428rk01
PDF
20150411コードリーディング
PDF
Markdownもはじめよう
PDF
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
PDF
Markdownでドキュメント作成
PDF
Firefox OSアプリの概要@gunma.web
PDF
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
PPTX
Sphinx拡張 探訪 2014 #sphinxjp
PDF
Microsoft Bot Framework と Cognitive Services を活用した 業務サポートBOT 構築
PPTX
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
PDF
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
PDF
ユーザ・デザイナーから見たPlone CMSのアピールポイント
PPTX
マークアップ言語の拡張 メリットとデメリット #hankumi
PDF
Universal Apps (UWP)
PDF
Wp プラグインapiから理解するword press.share
PDF
せっかくだから俺はこの NPAPI の話をするぜ
Uwpアプリケーション開発入門
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
Uwpハンズオン参加レポート
ドキュメントの話、しませんか? #428rk01
20150411コードリーディング
Markdownもはじめよう
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
Markdownでドキュメント作成
Firefox OSアプリの概要@gunma.web
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
Sphinx拡張 探訪 2014 #sphinxjp
Microsoft Bot Framework と Cognitive Services を活用した 業務サポートBOT 構築
Sphinxで作る貢献しやすい ドキュメント翻訳の仕組み
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
ユーザ・デザイナーから見たPlone CMSのアピールポイント
マークアップ言語の拡張 メリットとデメリット #hankumi
Universal Apps (UWP)
Wp プラグインapiから理解するword press.share
せっかくだから俺はこの NPAPI の話をするぜ
Ad

Similar to Fx OS n2_aoitan_firefox osことはじめ (20)

PPTX
Firefox OSアーキテクチャクイックツアー - FxOSコードリーディングミートアップ#21向け追記版
PDF
できる!スマホアプリ:Webからはじまるアプリ for CMU16
PDF
Firefox os hackathon
PDF
関東Firefox OS勉強会6th「Firefox OS」
PDF
できる!スマホアプリ:Webからはじまるアプリ
PPTX
20150117 gunmaweb Firefox OSの紹介
PDF
Firefox OS - Blaze Your Own Path
PDF
Tizen web app を FireFox OS へ移植する方法を考えた
PPTX
2015/02/14 FirefoxOSハンズオン@関西
PDF
Firefox OS 1.0 Application Development
PDF
Web is the OS (KDDI mugen Labo)
PDF
Web is the OS (Firefox OS)
PDF
FirefoxOSを始めてみよう
PDF
Firefox OSについて
PDF
Firefox os app dev
PDF
Firefox OSアプリ開発・公開経験談
PDF
さわってみよう Firefox OS in 大阪
PDF
Firefox OS and Open Web Board - IGGG Meetup 2015 Spring
PDF
20140629 firefoxos-devenv
PDF
20140531 firefox os
Firefox OSアーキテクチャクイックツアー - FxOSコードリーディングミートアップ#21向け追記版
できる!スマホアプリ:Webからはじまるアプリ for CMU16
Firefox os hackathon
関東Firefox OS勉強会6th「Firefox OS」
できる!スマホアプリ:Webからはじまるアプリ
20150117 gunmaweb Firefox OSの紹介
Firefox OS - Blaze Your Own Path
Tizen web app を FireFox OS へ移植する方法を考えた
2015/02/14 FirefoxOSハンズオン@関西
Firefox OS 1.0 Application Development
Web is the OS (KDDI mugen Labo)
Web is the OS (Firefox OS)
FirefoxOSを始めてみよう
Firefox OSについて
Firefox os app dev
Firefox OSアプリ開発・公開経験談
さわってみよう Firefox OS in 大阪
Firefox OS and Open Web Board - IGGG Meetup 2015 Spring
20140629 firefoxos-devenv
20140531 firefox os
Ad

More from Masami Yabushita (15)

PPTX
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
PPTX
Idlリーディング xpidl編
PPTX
Idlリーディング webidl編
PPTX
Firefox OSアーキテクチャクイックツアー
PPTX
FxOSコードリーディングミートアップ#16 Vibration APIも読んでみた
PPTX
FxOSコードリーディングミートアップ#16 Contacts API読んでみた
PDF
Meetup11 contacts api読んでみた
PDF
マンガで覚える視線誘導 おかわり
PDF
ちょっとapiかいてみた
PDF
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
PDF
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
PDF
バッテリー監視の為にバックグラウンドタスクについて調べたらなくなってたから作ってみた話のはずだった
PDF
バッテリー監視のためにバックグラウンドタスクについて調べたらなくなってたから泣く泣くタイマーApiを使ってみた話
PPTX
Fx osコードリーディングの紹介
PPTX
ちょっとapiかいてみた
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
Idlリーディング xpidl編
Idlリーディング webidl編
Firefox OSアーキテクチャクイックツアー
FxOSコードリーディングミートアップ#16 Vibration APIも読んでみた
FxOSコードリーディングミートアップ#16 Contacts API読んでみた
Meetup11 contacts api読んでみた
マンガで覚える視線誘導 おかわり
ちょっとapiかいてみた
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
バッテリー監視の為にバックグラウンドタスクについて調べたらなくなってたから作ってみた話のはずだった
バッテリー監視のためにバックグラウンドタスクについて調べたらなくなってたから泣く泣くタイマーApiを使ってみた話
Fx osコードリーディングの紹介
ちょっとapiかいてみた

Fx OS n2_aoitan_firefox osことはじめ