70
Firefox OSことはじめ 株式会社 グローバルサイバーグループ システム開発2課マネージャ 藪下 正美 (a.k.aあおいたん)

Fx OS n2_aoitan_firefox osことはじめ

Embed Size (px)

Citation preview

Page 1: Fx OS n2_aoitan_firefox osことはじめ

Firefox OSことはじめ

株式会社 グローバルサイバーグループ システム開発2課マネージャ 藪下 正美 (a.k.aあおいたん)

Page 2: Fx OS n2_aoitan_firefox osことはじめ

はじめに

Page 3: Fx OS n2_aoitan_firefox osことはじめ

自己紹介

• 名前:藪下 正美

• 会社:株式会社グローバルサイバーグループ

• どんな人?

– @aoi_nagatsuki

–プログラミング言語とかスマホとか好き

Page 4: Fx OS n2_aoitan_firefox osことはじめ

会社紹介

• 株式会社グローバルサイバーグループ –やる気と人間性を大切にする総合開発企業

–とかはどうでもよくて

• ブログやってます – http://www.gcg.bz/labo_blog/

–GCG研究所で検索!

–ネタ募集中!

–空いてる時に調べてブログに書くのでなんか聞いてね!

Page 5: Fx OS n2_aoitan_firefox osことはじめ

まえふり

• 今日は情報量多いです

• メモって質問!

•メモって質問! –※これ大事!

Page 6: Fx OS n2_aoitan_firefox osことはじめ

今日のアジェンダ(1/4)

• 大まかな話

– FxOSとは

–なぜwebなのか

–大まかな構造

–アプリの概要

Page 7: Fx OS n2_aoitan_firefox osことはじめ

今日のアジェンダ(2/4)

• アプリ開発

–開発環境

–シミュレータ

–開発者ツール

– AppMaker

Page 8: Fx OS n2_aoitan_firefox osことはじめ

今日のアジェンダ(3/4)

• FxOSの開発

–開発機

–ホストOS

–ビルド環境の構築

–ビルド

Page 9: Fx OS n2_aoitan_firefox osことはじめ

今日のアジェンダ(4/4)

• 宣伝

–コミュニティ紹介

–イベント予定

– ConoHa VPS

Page 10: Fx OS n2_aoitan_firefox osことはじめ

大まかな話

Page 11: Fx OS n2_aoitan_firefox osことはじめ

FxOSとは

• FirefoxやThunderbirdを開発しているMozilla財団が開発しているオープンソースのモバイルOS

• いわゆるWebOSの一つでHTML5をネイティブアプリケーションプラットフォームとしている

Page 12: Fx OS n2_aoitan_firefox osことはじめ

なぜwebなのか

• 現在のアプリエコシステムの問題点

• 潜在的な開発者の多さ

• 課題の克服

Page 13: Fx OS n2_aoitan_firefox osことはじめ

現在のアプリエコシステムの 問題点

• 各OS毎に専用のアプリフォーマット

• 各OS毎に専用のアプリマーケット

Page 14: Fx OS n2_aoitan_firefox osことはじめ

各OS毎に専用の アプリフォーマットの問題点

• OS毎の開発が必要

–プログラミング言語、APIはOSに依存

–開発環境が制限されることもある

• WebView+HTML5でマルチプラットフォームを謳うライブラリもあるがWebViewはサブセットなのでOS毎に差異がある

Page 15: Fx OS n2_aoitan_firefox osことはじめ

各OS毎に専用の アプリマーケットの問題点

• 販路が独占的

–恣意的なレビュー

–基準がマーケットによってまちまち

• 課金が独占的

–他の課金システム利用不可(iOS/Windows Store)

Page 16: Fx OS n2_aoitan_firefox osことはじめ

潜在的な開発者の多さ

• iOS

– 10万人

• Android

– 45万人

• HTML5

– 800万人

iOS

Android

HTML5

-2000000 3000000 8000000

Page 17: Fx OS n2_aoitan_firefox osことはじめ

課題の克服

• Webの問題点

–機能的な制約

–パフォーマンスの悪さ

–マーケットの不在

• 解決の兆しが見えている

Page 18: Fx OS n2_aoitan_firefox osことはじめ

機能的な制約の克服

• WebAPIとしてW3Cで勧告

• これまで弱点だったデバイスの制御やシステムの制御もAPIが定義されてきている

• もちろん得意分野のコンテンツ技術も進化している

Page 19: Fx OS n2_aoitan_firefox osことはじめ

これまでできなかったこと

• システムステータスの取得・設定

–通信状況、バッテリー状態、等

• デバイス制御

–環境光センサー、近接センサー、加速度センサー、等センサー制御

– WiFi、USB、BT、NFC、等多機能デバイス制御

Page 20: Fx OS n2_aoitan_firefox osことはじめ

API環境図(1/6)

Page 21: Fx OS n2_aoitan_firefox osことはじめ

API環境図(2/6)

Page 22: Fx OS n2_aoitan_firefox osことはじめ

API環境図(3/6)

Page 23: Fx OS n2_aoitan_firefox osことはじめ

API環境図(4/6)

Page 24: Fx OS n2_aoitan_firefox osことはじめ

API環境図(5/6)

Page 25: Fx OS n2_aoitan_firefox osことはじめ

API環境図(6/6)

Page 26: Fx OS n2_aoitan_firefox osことはじめ

パフォーマンスの悪さの克服

• JavaScriptの高速化

• 次世代JavaScriptへの移行による高速化

• AltJSによる高速化

• WebAPIの定義による高速化

Page 27: Fx OS n2_aoitan_firefox osことはじめ

JavaScriptの高速化

• Firefox 22からJavaScriptエンジンがOdinMonkeyに変更になった

– asm.js効果で高速に

• Banana Benchが二倍ぐらい速い

– FxOSはv1.1までGecko18ベースだがv1.2でGecko26ベースに

Page 28: Fx OS n2_aoitan_firefox osことはじめ

次世代JavaScriptへの 移行による高速化

• Class、Typed Array、ParallelArray、等

• 静的解析しやすい言語仕様に

• 現状Firefoxが一番移行が進んでいる

Page 29: Fx OS n2_aoitan_firefox osことはじめ

AltJSによる高速化

• Asm.jsでネイティブ並みの速さに

–ただしマイクロベンチベース

• Unreal Engineがブラウザ上で動く

– Emscriptenでasm.js形式に

–変換に五日ぐらいかかったとかなんとか

Page 30: Fx OS n2_aoitan_firefox osことはじめ

WebAPIの定義による高速化 (ファイル操作)

• ストレージAPI

– IndexedDB、SessionStorage、DeviceStorage、DataStore API

• マルチメディアAPI

– WebAudio、 WebRTC、Camera

Page 31: Fx OS n2_aoitan_firefox osことはじめ

WebAPIの定義による高速化 (デバイス制御)

• ヒューマンインターフェイス

–タッチイベント、バイブレーション、ゲームパッド

• センサーAPI

– Geolocation、Orientation、Ambient Light、Proximity

• ハードウェア制御

– USB、BT、FM Radio、NFC

Page 32: Fx OS n2_aoitan_firefox osことはじめ

WebAPIの定義による高速化 (通信系)

• 通信API

– WebSocket、TCP Socket、 UDP Diagram Socket

• 連携

– WebActivity、WebIntent?、Push Notification

Page 33: Fx OS n2_aoitan_firefox osことはじめ

WebAPIの定義による高速化 (システム系)

• システム情報

–通信状態、バッテリー状態

• システム制御

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

• セキュリティ

– Permission API、CSP

Page 34: Fx OS n2_aoitan_firefox osことはじめ

マーケットの不在の克服

• Firefox Market

–ただこれだけだとOSごとにしかマーケットがない状況が変わらない

• Web Payment API

–特定のマーケットによらない課金の仕組みがW3C勧告に

– Paypal慣れてるとおなじみの手順の課金方法を実現するAPI

Page 35: Fx OS n2_aoitan_firefox osことはじめ

Web=Nativeへ

• ないものを取り込んでAPI化

• ブラウザ技術からプラットフォームへ

Page 36: Fx OS n2_aoitan_firefox osことはじめ

他のモバイルOSと比較 (Androidの構造)

• Androidではブラウザの機能はWebKitが実現する

• プラットフォーム固有部分の実装はNative層

• AndroidのAPIはJNIを通じてJavaでWebViewとして提供される

• HTML5アプリはWebViewの上に乗る

Page 37: Fx OS n2_aoitan_firefox osことはじめ

他のモバイルOSと比較 (iOSの構造)

• iOSではブラウザの機能はWebKitが実現する

• プラットフォーム固有部分の実装はCoreService層

• ブラウザ部分はCocoa層でUIWebViewとして提供される

• HTML5アプリはUIWebViewの上に乗る

Page 38: Fx OS n2_aoitan_firefox osことはじめ

他のモバイルOSと比較 (Firefox OSの構造)

• FxOSではブラウザの機能はGeckoが実現する

• プラットフォーム固有部分の実装はGeckoとGonk(HAL)層

• ブラウザ部分もGeckoで定義されるがデスクトップブラウザと違ってChromeはほとんど何もない

• HTML5アプリはGeckoの上に乗る – 余計なVMやコンポーネントが間に挟まらなくてシンプル

Page 39: Fx OS n2_aoitan_firefox osことはじめ

他のモバイルOSと比較(一覧)

Android iOS FxOS

Page 40: Fx OS n2_aoitan_firefox osことはじめ

大まかな構造

• 大きく以下の三つからできている – Gaia(システムアプリ)

– Gecko(ブラウザ/HTMLエンジン)

– Gonk(HAL)

• 引用元 – https://developer.mo

zilla.org/ja/docs/Mozilla/Firefox_OS/Platform/Architecture

Page 41: Fx OS n2_aoitan_firefox osことはじめ

Gonk

• HAL層のインターフェイスをGeckoに合致させるための層

• カーネルとドライバ自体はAndroidのものを使う

• FxOSの主要な層の中では実装量が極端に少ない

Page 42: Fx OS n2_aoitan_firefox osことはじめ

Gecko

• HTMLエンジンとブラウザを実装している層

• デスクトップのFirefoxで使用されるものと同じもの – 現在デスクトップ版が26

– 日本から手に入るFxOSの商用端末の出荷状態(v1.1)では18

– v1.2にアップデートすると26になる

• HTMLやCSSのレンダリング、JSの評価、WebAPIの提供など主要な部分はすべてGeckoで実装されている

Page 43: Fx OS n2_aoitan_firefox osことはじめ

Gaia

• システムアプリやプリインアプリを実装している層

• Geckoが起動してChromeプロセスを作るとSystemアプリがロードされる

• ここに置かれるアプリはSystemアプリを除いてContentプロセスという制限プロセスになる – ContentプロセスはChromeプロセスのプラグインとして動くことになる

– デスクトップでいうFlashなどと同じ仕組み

• ただしCertifiedというAPIに制限のないアプリタイプを選択できる

Page 44: Fx OS n2_aoitan_firefox osことはじめ

アプリの概要 (さわり)

• いわゆるHTML5アプリ

• デバイスの制御などもWebAPIとして提供される

• 標準化されていないもの、されないものはmozプリフィックス付でglobal.windowかglobal.window.navigatorあたりにぶら下がっているはず

Page 45: Fx OS n2_aoitan_firefox osことはじめ

アプリの概要 (通常のWebアプリとの違い)

• Manifest.webappを用意することでインストールできるようになる

• すでに動いているWebアプリがあるなら5分でFxOSアプリ

Page 46: Fx OS n2_aoitan_firefox osことはじめ

アプリの概要 (権限による違い)

種別 配置場所 権限

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

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

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

Certifiedアプリ 端末 端末メーカがプリインアプリでのみ使用可能な強い権限のアプリ。 カメラなど一部の機能はCertifiedでないと使えない。

Page 47: Fx OS n2_aoitan_firefox osことはじめ

アプリ開発

Page 48: Fx OS n2_aoitan_firefox osことはじめ

開発環境

• FxOSのアプリはただのHTML5なので お気に入りのHTML5アプリ開発環境を 使える

–ちなみに藪下はvimで書いてFirefoxとかChromeの開発者ツールでデバッグしてます

• 最近よく聞くのはAptana StudioとかIntel XDKとかInteli Jとか

Page 49: Fx OS n2_aoitan_firefox osことはじめ

シミュレータ

• Firefox OS v1.1 Simulator

• Firefoxアドオンとして提供されている

– アドオンセンターでFirefox OS Simulatorで検索してAddしてみると簡単に導入できる

– エンジンやAPIはFxOSもデスクトップも 同じGeckoなのでシミュレータで動けば ほぼ実機で動く • ただしシミュレータのほうが速いとかも普通にある

– デバイス制御系はさすがにないので Firefox for Androidとかで試しましょう

Page 50: Fx OS n2_aoitan_firefox osことはじめ

開発者ツール

• 今どきのブラウザはJSの実行をブレークしたりステップ実行したりできる

–もちろん変数がウォッチできるし値も 変えられる

• AppManager

– v1.2やv1.3のシミュレータを使うならAppManagerを使う必要がある

–たぶん清水さんが詳しく話してくれます

Page 51: Fx OS n2_aoitan_firefox osことはじめ

AppMaker

• 開発ツールかというとちょっと違うかも • 簡単なRAD環境

– もともとプログラミング教育を研究している チームが中高生でも簡単にアプリを作れる環境を 作りたかった

• ポチポチやると意外と楽しい • コンポーネント次第で化ける

– のでAppMakerでアプリ作ったり コンポーネント追加するハッカソンやりました • Webプラットフォーム勉強会1311 • http://atnd.org/events/44944

Page 52: Fx OS n2_aoitan_firefox osことはじめ

Firefox OSの開発

Page 53: Fx OS n2_aoitan_firefox osことはじめ

開発機

• ボード

• スマートフォン

• エミュレータ

Page 54: Fx OS n2_aoitan_firefox osことはじめ

ボード

• Pandaboard – OMAPなのでSnapdragonが多いFxOS界隈ではちょっと(だいぶ?)ニッチ

• APC Paper/Rock – ViaからAndroid向けに出ていたボード

– 最近FxOS搭載版が出た

• 一部ではRaspberry Piで動かそうとしている人たちがいるとか – 結構みんな独立にやってるっぽい

– かくいう藪下もその一人でした

Page 55: Fx OS n2_aoitan_firefox osことはじめ

スマートフォン

• 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

Page 56: Fx OS n2_aoitan_firefox osことはじめ

エミュレータ

• デスクトップ – Firefoxの上でGaiaを動かすもの

• エミュレータ(ARM/x86) • エミュレータJB(ARM/x86)

– Firefox OS本体を修正した場合などは主にエミュレータで動作確認する

– JB版はv1.2以降で下敷きにするAndroidのバージョンが4.3になるのでそのためのもの

• シミュレータ – 前述のシミュレータ – 今後バージョンごとに出そう – 実は全言語版がこっそりある

• http://r2d2b2g.flod.org/

Page 57: Fx OS n2_aoitan_firefox osことはじめ

ホストOS

• Mac OS X – Lion推奨

– 山Lion以降の場合Xcodeのバージョン的に 注意点がある

• 各種Linux – 各ディストリビューションの差異でビルド 環境構築の注意点が違うかも

– 基本的にはAndroidのビルド環境と同じなので 注意点はAndroid4.0以降向けの情報を探せばOK

• Windows – Cygwinではつらかとです。。。

Page 58: Fx OS n2_aoitan_firefox osことはじめ

ビルド環境の構築

• 基本的には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/en-

US/Firefox_OS/Firefox_OS_build_prerequisites

Page 59: Fx OS n2_aoitan_firefox osことはじめ

ビルド

• config.sh

• build.sh

• flash.sh

• run-emulator.sh

Page 60: Fx OS n2_aoitan_firefox osことはじめ

config.sh

• 各デバイス向けのコンフィグと リポジトリのクローン、更新、チェックアウトをしてくれる

–デバイス名がわからないときは引数なしで 実行すると一覧される

• 対応機種以外は地道な移植作業が 待ってます。。。

Page 61: Fx OS n2_aoitan_firefox osことはじめ

build.sh

• コンフィグが完了したらbuild.shで ビルド開始する

– Androidでもおなじみマルチスレッド スイッチがあるのでコア数に合わせて -j<数字>をつける

– Gaiaとかgeckoとつけるとモジュールごと ビルドも可能

Page 62: Fx OS n2_aoitan_firefox osことはじめ

flash.sh

• 実機への焼きこみスクリプト

– build.sh同様gaiaとかgeckoをつけると モジュールごと焼きこみが可能

• 端末によってはsudoしないとfastbootがこけるかも

Page 63: Fx OS n2_aoitan_firefox osことはじめ

run-emulator.sh

• エミュレータの実行

–基本はAndroidのエミュレータを使っているのでAndroidのものと同様のオプションが使えるはず

Page 64: Fx OS n2_aoitan_firefox osことはじめ

宣伝

Page 65: Fx OS n2_aoitan_firefox osことはじめ

コミュニティはじめました

• FxOSコードリーディング – Facebook

• https://www.facebook.com/groups/fxos.code.reading/

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

Group/MainRepo

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

– AppMaker • FxOSコードリーディングでコンポーネントを追加している

AppMakerもドメイン取得次第公開します

Page 66: Fx OS n2_aoitan_firefox osことはじめ

FxOSコードリーディングって?

• FxOSのソースコードを読みます

–好きなところを読みます

–気軽に読みます

–必要なのは読みたい気持ちとソースだけです

–気軽に知ってることを教えあいましょう

• そのソースここらへんとかそれにはこれが参考になるかもとか

Page 67: Fx OS n2_aoitan_firefox osことはじめ

ミートアップの様子

• たまには集まって 読みます

– 11/4にやったミートアップイベントのようすです。

• いいづかさんの Qiitaから

– http://qiita.com/iizukak/items/fea7fb927e3056230a43

Page 68: Fx OS n2_aoitan_firefox osことはじめ

イベント予定

• わんくま勉強会名古屋#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コミュニティでブース出します – 講演依頼もあるので誰かが何か話します

Page 69: Fx OS n2_aoitan_firefox osことはじめ

ConoHa VPS

• FxOSコードリーディングではGMO様 よりコミュニティ支援でConoHa VPSを ご提供いただいています

– ConoHaについて詳しくはこちら

• http://www.conoha.jp/

• アカウントの音声認証でこのはたん(CV 上坂すみれ)がアナウンスしててビビりました

–コミュニティ支援についてはこちら

• http://www.conoha.jp/news/674.html

Page 70: Fx OS n2_aoitan_firefox osことはじめ

おしまい

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