n29 aoitan firefox osことはじめ

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

Upload: masami-yabushita

Post on 22-May-2015

933 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: N29 aoitan firefox osことはじめ

Firefox OSことはじめ

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

Page 2: N29 aoitan firefox osことはじめ

はじめに

Page 3: N29 aoitan firefox osことはじめ

自己紹介

• 名前 藪下 正美

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

• どんな人?

– @aoi_nagatsuki

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

Page 4: N29 aoitan firefox osことはじめ

会社紹介

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

–やる気と人間性を大切にする総合開発企業

–とかはどうでもよくて

• ブログやってます

–GCG研究所で検索!

–ネタ募集中!

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

Page 5: N29 aoitan firefox osことはじめ

まえふり

• 今日は情報量多いです

• メモって質問!

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

Page 6: N29 aoitan firefox osことはじめ

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

• 大まかな話

– FxOSとは

–なぜwebなのか

–大まかな構造

–アプリの概要

Page 7: N29 aoitan firefox osことはじめ

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

• アプリ開発

–開発環境

–シミュレータ

–開発者ツール

–次期開発ツール

– AppMaker

Page 8: N29 aoitan firefox osことはじめ

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

• FxOSの開発

–開発機

–ホストOS

–ビルド環境の構築

–ビルド

Page 9: N29 aoitan firefox osことはじめ

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

• 宣伝

–コミュニティ紹介

–勉強会予定

– Advent Calendar

Page 10: N29 aoitan firefox osことはじめ

大まかな話

Page 11: N29 aoitan firefox osことはじめ

FxOSとは

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

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

Page 12: N29 aoitan firefox osことはじめ

なぜwebなのか

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

• 潜在的な開発者の多さ

• 課題の克服

Page 13: N29 aoitan firefox osことはじめ

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

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

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

Page 14: N29 aoitan firefox osことはじめ

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

• OS毎の開発が必要

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

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

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

Page 15: N29 aoitan firefox osことはじめ

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

• 販路が独占的

–恣意的なレビュー

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

• 課金が独占的

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

Page 16: N29 aoitan firefox osことはじめ

潜在的な開発者の多さ

• iOS

– 10万人

• Android

– 45万人

• HTML5

– 100万人

iOS

Android

HTML5

0 500000 1000000

Page 17: N29 aoitan firefox osことはじめ

課題の克服

• Webの問題点

–機能的な制約

–パフォーマンスの悪さ

–マーケットの不在

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

Page 18: N29 aoitan firefox osことはじめ

機能的な制約の克服

• WebAPIとしてW3Cで勧告

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

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

Page 19: N29 aoitan firefox osことはじめ

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

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

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

• デバイス制御

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

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

Page 20: N29 aoitan firefox osことはじめ

API環境図(1/6)

Page 21: N29 aoitan firefox osことはじめ

API環境図(2/6)

Page 22: N29 aoitan firefox osことはじめ

API環境図(3/6)

Page 23: N29 aoitan firefox osことはじめ

API環境図(4/6)

Page 24: N29 aoitan firefox osことはじめ

API環境図(5/6)

Page 25: N29 aoitan firefox osことはじめ

API環境図(6/6)

Page 26: N29 aoitan firefox osことはじめ

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

• JavaScriptの高速化

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

• AltJSによる高速化

• WebAPIの定義による高速化

Page 27: N29 aoitan firefox osことはじめ

JavaScriptの高速化

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

– asm.js効果で高速に

• Banana Benchが二倍ぐらい速い

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

Page 28: N29 aoitan firefox osことはじめ

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

• Class、Typed Array、ParallelArray、等

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

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

Page 29: N29 aoitan firefox osことはじめ

AltJSによる高速化

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

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

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

– Emscriptenでasm.js形式に

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

Page 30: N29 aoitan firefox osことはじめ

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

• ストレージAPI

– IndexedDB、SessionStorage、FileHandle

• マルチメディアAPI

– WebAudio、 WebRTC、Camera

Page 31: N29 aoitan firefox osことはじめ

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

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

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

• センサーAPI

– Geolocation、Orientation、Ambient Light、Proximity

• ハードウェア制御

– USB、BT、FM Radio、NFC

Page 32: N29 aoitan firefox osことはじめ

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

• 通信API

– WebSocket、TCP Socket、UDP Diagram Socket、WebAPI

• 連携

– WebActivity、WebIntent?、Push Notification

Page 33: N29 aoitan firefox osことはじめ

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

• システム情報

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

• システム制御

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

• セキュリティ

– Permission API、CSP

Page 34: N29 aoitan firefox osことはじめ

マーケットの不在の克服

• Firefox Market

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

• Web Payment API

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

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

Page 35: N29 aoitan firefox osことはじめ

Web=Nativeへ

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

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

Page 36: N29 aoitan firefox osことはじめ

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

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

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

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

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

Page 37: N29 aoitan firefox osことはじめ

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

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

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

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

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

Page 38: N29 aoitan firefox osことはじめ

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

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

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

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

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

Page 39: N29 aoitan firefox osことはじめ

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

Android iOS FxOS

Page 40: N29 aoitan firefox osことはじめ

大まかな構造

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

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

– Gonk(HAL)

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

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

Page 41: N29 aoitan firefox osことはじめ

Gonk

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

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

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

Page 42: N29 aoitan firefox osことはじめ

Gecko

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

• デスクトップのFirefoxで使用されるものと同じもの

– 現在デスクトップ版が25

– FxOSの商用端末(v1.1)では18

– 12月のFirefoxリリースでどちらも26になる

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

Page 43: N29 aoitan firefox osことはじめ

Gaia

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

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

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

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

Page 44: N29 aoitan firefox osことはじめ

アプリの概要 (さわり)

• いわゆるHTML5アプリ

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

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

Page 45: N29 aoitan firefox osことはじめ

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

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

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

Page 46: N29 aoitan firefox osことはじめ

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

種別 配置場所 権限

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

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

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

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

Page 47: N29 aoitan firefox osことはじめ

アプリ開発

Page 48: N29 aoitan firefox osことはじめ

開発環境

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

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

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

Page 49: N29 aoitan firefox osことはじめ

シミュレータ

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

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

–エンジンやAPIはFxOSもデスクトップも 同じGeckoなのでシミュレータで動けば ほぼ実機で動く

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

Page 50: N29 aoitan firefox osことはじめ

シミュレータのデモ

Page 51: N29 aoitan firefox osことはじめ

開発者ツール

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

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

• ただコードとかスタイルとかは書き換えられない

Page 52: N29 aoitan firefox osことはじめ

開発者ツールのデモ

Page 53: N29 aoitan firefox osことはじめ

次期開発ツール

• これまでの開発ツールは力不足 – シミュレータが複数入れられないしバージョンが指定できない

– スタイル書き換えたりできない

• AppManagerの追加 – 複数シミュレータが使えるようになった

• 開発者ツールも進化 – スタイル書き換えたりできるようになった

• ただしこれらのツールがFirefoxでリリースされるのはまだ先 – 今はNightlyとAuroraで使用可能

Page 54: N29 aoitan firefox osことはじめ

次期開発ツールのデモ

Page 55: N29 aoitan firefox osことはじめ

AppMaker

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

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

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

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

Page 56: N29 aoitan firefox osことはじめ

AppMakerのデモ

Page 57: N29 aoitan firefox osことはじめ

Firefox OSの開発

Page 58: N29 aoitan firefox osことはじめ

開発機

• ボード

• スマートフォン

• エミュレータ

Page 59: N29 aoitan firefox osことはじめ

ボード

• Pandaboard

– OMAPなのでSnapdragonが多いFxOS界隈ではちょっとニッチ

• 一部ではRaspberry Piで動かそうとしている人たちがいるとか

–結構みんな独立にやってるっぽい

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

Page 60: N29 aoitan firefox osことはじめ

スマートフォン

• Unagi/Otoro – この辺りはGeeksphoneの開発端末のコードネーム

• Keon/Peak/Peak+ – Geeksphoneから一般に発売中の開発端末

• Inari – ZTE Openのコードネーム

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

• Nexus S/Nexus S 4G/Nexus 4 • Galaxy Nexus/Galaxy S2

Page 61: N29 aoitan firefox osことはじめ

エミュレータ

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

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

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

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

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

• http://r2d2b2g.flod.org/

Page 62: N29 aoitan firefox osことはじめ

ホストOS

• Mac OS X – Lion推奨

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

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

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

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

Page 63: N29 aoitan firefox osことはじめ

ビルド環境の構築

• 基本的にはAndroidと同じなのでざっくり以下のパッケージを 入れればよい – autoconf 2.13 – Bison/flex – Bzip2/ 32-bit zlib – ccache – curl – gawk – git – gcc / g++ / g++-multilib (4.6.3 以前) – make – OpenGL headers – X11 headers – 32-bit ncurses

• 詳しくはこちら – https://developer.mozilla.org/ja/docs/Mozilla/Boot_to_Gecko/B2G_bui

ld_prerequisites

Page 64: N29 aoitan firefox osことはじめ

ビルド

• config.sh

• build.sh

• flash.sh

Page 65: N29 aoitan firefox osことはじめ

config.sh

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

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

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

Page 66: N29 aoitan firefox osことはじめ

build.sh

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

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

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

Page 67: N29 aoitan firefox osことはじめ

flash.sh

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

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

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

Page 68: N29 aoitan firefox osことはじめ

run-emulator.sh

• エミュレータの実行

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

Page 69: N29 aoitan firefox osことはじめ

宣伝

Page 70: N29 aoitan firefox osことはじめ

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

• FxOSコードリーディング

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

Page 71: N29 aoitan firefox osことはじめ

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

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

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

–気軽に読みます

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

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

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

Page 72: N29 aoitan firefox osことはじめ

ミートアップの様子

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

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

• 参加者のいいづかさんのQiitaから

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

Page 73: N29 aoitan firefox osことはじめ

勉強会登壇予定

• わんくま勉強会名古屋#29 – 11/23

• 関西Firefox OS勉強会5th GIG – 11/23 – こちらは弊社丸山(か新谷)がスピーカー やります(どっちもLTやることになりそう)

• 関東Firefox OS勉強会5th – 11/26

• FxOS Gecko勉強会その2 – 12/19

Page 74: N29 aoitan firefox osことはじめ

Advent Calendar

• Firefox OS Advent Calendar

– http://www.adventar.org/calendars/103

Page 75: N29 aoitan firefox osことはじめ

ConoHa VPS

• FxOSコードリーディングではGMO様 よりコミュニティ支援でConoHa VPSを お借りしてます – ConoHaについて詳しくはこちら

• http://www.conoha.jp/

• アカウントの音声認証でこのはたんがアナウンスしててビビりました

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

–チラシをもらってきたので配ります

Page 76: N29 aoitan firefox osことはじめ

おしまい

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