91
Last Update: 2013/03/16 Firefox OS: Blaze Your Own Path Slides @ ABC 2013 Spring by Tomoya Asai (dynamis)

Firefox OS - Blaze Your Own Path

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Firefox OS - Blaze Your Own Path

Last Update: 2013/03/16

Firefox OS: Blaze Your Own PathSlides @ ABC 2013 Springby Tomoya Asai (dynamis)

Page 2: Firefox OS - Blaze Your Own Path

FFiirreeffooxx OOSS でAAnnddrrooiidd 端末の世界が広がる!?

Page 3: Firefox OS - Blaze Your Own Path

about:me

Page 4: Firefox OS - Blaze Your Own Path

about:dynamisLesser Panda @ Mozilla

http://dynamis.jp@dynamitter

facebook.com/dynamisレッサーパンダが好き。

mailto: Tomoya ASAI <dynamis mozilla-japan.org>@

Page 5: Firefox OS - Blaze Your Own Path

Topics

Page 6: Firefox OS - Blaze Your Own Path

本日のトピック

BackgroundOverviewBuild & FlashApp DevMarketplace

ぼくおやつ担当ねっ!

Page 7: Firefox OS - Blaze Your Own Path

about:foxkeh

今日もプレゼンを手伝ってくれるフォクすけを紹介します

Page 8: Firefox OS - Blaze Your Own Path

いつか僕も Firefox みたいな立派なブラウザになるんだ!

ぼくフォクすけ

Page 9: Firefox OS - Blaze Your Own Path

サーバ (Apache Camel) の上にクライアント (Firefox)

Page 10: Firefox OS - Blaze Your Own Path

ぼくのステッカーを君のPC とスマホに貼ってね!

君と一緒にお出かけしたいな!

Page 11: Firefox OS - Blaze Your Own Path

Background

Page 12: Firefox OS - Blaze Your Own Path

独自プラットフォーム

ネイティブアプリ機能も速度もネイティブ優先

アプリエコシステム制限多くビジネスの自由度低い

WebView + 独自 APIWeb はサブセット扱い

Page 13: Firefox OS - Blaze Your Own Path

独自プラットフォーム

プラットフォーム毎に異なる言語で個別の専用アプリを作る必要がある

i a f c

Page 14: Firefox OS - Blaze Your Own Path

独自プラットフォームの課題

プラットフォーム依存それぞれ異なる言語や API

不透明な継続性・再利用性ベンダー依存の運命共同体

Fragmentation・実装依存同一プラットフォームでも非互換

Page 15: Firefox OS - Blaze Your Own Path

独自プラットフォームの課題

プラットフォーム依存それぞれ異なる言語や API

不透明な継続性・再利用性ベンダー依存の運命共同体

Fragmentation・実装依存同一プラットフォームでも非互換

Page 17: Firefox OS - Blaze Your Own Path

"HTML5" への期待

次世代プラットフォームWeb 技術で何でも可能に

Web アプリ開発を簡単にAPI の充実と互換性確保

マルチデバイス対応開発言語や API の共通化

Page 18: Firefox OS - Blaze Your Own Path

Web が共通プラットフォーム

Web がプラットフォームなら業界標準技術でアプリ環境が統一される

プラットフォームとしての Web

Page 19: Firefox OS - Blaze Your Own Path

標準技術 のオープンな世界vs

独自技術 による囲い込み

「ブラウザ戦争」の時代はとっくに終わりました

Page 20: Firefox OS - Blaze Your Own Path

HTML5 = WebKit の方が良い?

それどの WebKit?IE6 vs IE10 以上に違う現実

その API と実装で大丈夫?複数実装でより良い標準に

イノベーションは競争から独占が進化を止めてたよね…

Page 21: Firefox OS - Blaze Your Own Path

HTML5 = WebKit の方が良い?

それどの WebKit?IE6 vs IE10 以上に違う現実

その API と実装で大丈夫?複数実装でより良い標準に

イノベーションは競争から独占が進化を止めてたよね…

Page 22: Firefox OS - Blaze Your Own Path

I am sad that the Web didn’t handle small screens ̶ and later, touch UI ̶ that well. ... snip ...

For touch, though, I wish we had done a better job of mapping the UI to the Web’s generic events. A touch gets mapped to a “click” event easily enough, but drag-and-drop never got mapped, pinch gestures didn’t get mapped to wheel events, etc. Mainly I think this is because the first truly successful touch browser set the standard, and it was developed

mostly in secret with a small team many of whom, as I understand it, weren’t Web veterans.

Ian Hickson のインタビューより

Page 23: Firefox OS - Blaze Your Own Path

独占やクローズド仕様は残念…

タッチイベントが残念…ドラッグ&ドロップは?ピンチとホイールの対応は?

密室で作られたから…最初の人気タッチブラウザ実装Web 技術知らない奴らが作った

オープンな標準は世界の英知の結晶

Page 24: Firefox OS - Blaze Your Own Path

オープンな環境と競争でイノベーションを加速!

オープンと競争は革新の源泉

Page 25: Firefox OS - Blaze Your Own Path

Overview

Page 26: Firefox OS - Blaze Your Own Path

FFiirreeffooxx OOSS ってどんな感じ?

フォクすけもわくわく。

Page 27: Firefox OS - Blaze Your Own Path
Page 28: Firefox OS - Blaze Your Own Path
Page 29: Firefox OS - Blaze Your Own Path
Page 30: Firefox OS - Blaze Your Own Path
Page 31: Firefox OS - Blaze Your Own Path

Firefox OS = Boot to Gecko

Gecko エンジンだけ起動Kernel 上に Gecko (Web Engine)Java VM など不要な部分は削除

HAL 層は Android と共通Linux 部分で独自性は必要ないAndroid と同じエコシステム

プロジェクト名は今でも Boot to Gecko

Page 32: Firefox OS - Blaze Your Own Path

シンプル&スマート

Web プラットフォームの実行環境としては圧倒的にスマート!

WHAT IS FIREFOX OS?

6

HOW IS IT DIFFERENT FROM ANDROID

HTML5 User Experience/

Content

Kernel

Device

Web Engine/ Standard

Device APIs

Firefox OS

Web Browser/ Platform

Native API-based UI

Kernel (e.g. Android, iOS,

Win7, etc.)

Device (phone, tablet,

desktop)

APIs

Android

Page 33: Firefox OS - Blaze Your Own Path

アーキテクチャWHAT IS FIREFOX OS: ARCHITECTURE OVERVIEW

Web API

I/O (hardware & data stores)

Boot to Gecko (b2g)

Device hardware

Low-level processes, proxies & daemons (rild, mediaserver, netd, etc.)

Gecko

Gaia

Gonk

Device

Gecko Parent

Permission Manager Access Control List

Credential Validation

Permissions Store

Web Content (App)

Execution Environment

Gecko child

Page 34: Firefox OS - Blaze Your Own Path

Web 技術 = Native

Web 技術が「ネイティブ」HTML/CSS/JS ですべて可能に新しい API は W3C 標準化

速度も Java に追いつく単純な演算程度なら既に同程度WebGL や DOMCrypt なども活用時間の問題だから期待しててね!

Web 技術だけですべてが済むプラットフォームとなるよう発展中

Page 35: Firefox OS - Blaze Your Own Path
Page 36: Firefox OS - Blaze Your Own Path

ステータスバー (通知、電波強度、電池残量...)もカメラやラジオもビデオや音楽の再生もマーケットプレイスもシステムの環境設定もホーム画面や壁紙も電話や SMS の送受信ももちろん ブラウザ も

その他なんでも...

Page 37: Firefox OS - Blaze Your Own Path

ステータスバー (通知、電波強度、電池残量...)もカメラやラジオもビデオや音楽の再生もマーケットプレイスもシステムの環境設定もホーム画面や壁紙も電話や SMS の送受信ももちろん ブラウザ も

その他なんでも...

すべて Web 技術で!

Page 38: Firefox OS - Blaze Your Own Path

2012 年実装 Web APIAlarmattention screenArchiveAudio PolicyBackground SensorBrowserCameraContactsDesktop NotificationDevice StorageEmbed Apps

File HandleFM RadioIdleAPIMouse LockMobile ConnectionNetwork EventsNetwork Stats ManagePaymentPermissionsPower Management

Push NotificationsSettingsSMSScreen OrientationSystem XHRTCP SocketWeb TelephonyTime ManagerOpen Web AppsWiFi Managementなどなど...

実装状況などのまとめ表: https://wiki.mozilla.org/WebAPI

Page 39: Firefox OS - Blaze Your Own Path

Next Web APIBackground ServicesBluetooth-***CalendarDatabase Migration (temp to permanent storage)FileSystem?NFCHTTP-cacheKeyboard/IMELogMPEG DASHOpen Web AppsParallel Array

PaymentQuotaResource LockSimple StorageSocial APISPDY Server PushSpellcheckUDB Datagram SocketUSB (low-level)USB file-readingWebRTC - CameraWebRTC - P2Pなどなど...

どこまで今年中にサポートされるか楽しみ!

Page 40: Firefox OS - Blaze Your Own Path

Firefox OS の魅力

スリムな HTML5 実行環境$100 でもフル機能のスマホを今後の高速化もし易い設計

圧倒的な開発者数Web 技術だけですぐアプリ開発

ハイブリッド権限管理インストール時 or 実行時の許可

急速な高速化が続き、型推論の効く処理は既に Dalvik/Java にも匹敵

Page 41: Firefox OS - Blaze Your Own Path

開発者の多いプラットフォーム

調査にも依るけど HTML5 開発者の方が圧倒的に多い

800万人

45万人10万人

Page 42: Firefox OS - Blaze Your Own Path

Firefox OS とセキュリティ

ユーザがアプリ権限管理可インストール時と実行時に権限を許可するハイブリッド方式「インストール時に全て許可」ではプライバシーは守れなかったユーザが理解できプライバシーなどに関わる API は実行時確認

Page 43: Firefox OS - Blaze Your Own Path

アプリも「ぐぐる」時代へ

"まずインストール" は古いディレクトリ(分類)だけのマーケットでは Google のない WebWeb と Market の横断検索

動的な Web アプリ環境Web はアクセスするだけアプリを検索してまず試し、気に入ったらホームに追加する

*1 everything.me ってサービスだから正確には「えぶる」かも?

*1

Page 44: Firefox OS - Blaze Your Own Path

透明性や自由度の高いプラットフォーム

開発者/OEM/キャリア

AppleApp Store

iPhone/iPad

ユーザ

GooglePlay

端末

ユーザ

MSMarketplace

端末

ユーザ

market 開発者/OEM// キャリア

ユーザ端末

既存の独占的プラットフォーム

Firefox OS によるOpen プラットフォーム

Page 45: Firefox OS - Blaze Your Own Path

パートナーとの製品化

日本では KDDI が参加表明

MWC ANNOUNCEMENTS

Ecosystem Commitments

Page 46: Firefox OS - Blaze Your Own Path

Global アプリパートナー

まだまだあるけど入り切りません。一部ロゴ古いかも。ゴメンね。

Page 47: Firefox OS - Blaze Your Own Path

ステキ。

僕もスマホになって君と一緒にお出かけしたいな!

Page 48: Firefox OS - Blaze Your Own Path

Build & Flash

Page 49: Firefox OS - Blaze Your Own Path

サポート端末 (最新じゃない?)

Tier 1Unagi, Otoro, Pandaboard, Emulator, PC

Tier 2Nexus S, Nexus S 4G

Tier 3Galaxy S2, Glaxy Nexus

ICS (Android 4.0)~ の動作端末上記以外の端末にはパッチが必要

https://developer.mozilla.org/ja/docs/Mozilla/Firefox_OS/Firefox_OS_build_prerequisites

Page 50: Firefox OS - Blaze Your Own Path

おさかなさん=???

Goldfish = 金魚Trout = サケ科の総称Mahimahi = マヒマヒHerring = ニシンStingray = アカエイTuna (Maguro & Toro)

Page 51: Firefox OS - Blaze Your Own Path

おさかなさん=端末 (Android)

Goldfish = EmulatorTrout = G1Mahimahi = Nexus OneHerring = Nexus SStingray = XoomTuna = Galaxy Nexus

Android では伝統的に端末のコードネームがおさかなさん

Page 52: Firefox OS - Blaze Your Own Path

おすし=端末 (Firefox OS)

Otoro = 初代開発機Unagi = 第二代開発機Ikura = 第三代?Inari = ???Hamachi = ???Buri = ???

Firefox OS では端末のコードネームは寿司ネタ

Page 53: Firefox OS - Blaze Your Own Path

ビルド環境

Mac OS XXCode 4.3.1~

64bit GNU/Linux GCC~4.6.3Ubuntu 12.04 が標準Linux Mint 13, Debian 6,Ubuntu 12.10, Fedora 16/17/18

標準ビルドは Ubuntu で作られてますが Mac でビルドするのが楽です

Page 54: Firefox OS - Blaze Your Own Path

Firefox OS ビルド環境 (Mac)// 1. XCode, Command Line Tools インストール// 2. XCode 4.3.x から MacOSX10.6.sdk をコピー// /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk// 3. HomeBrew が入ってなければ入れるruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

// 4. セットアップスクリプト実行!curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash

https://github.com/dynamis/firefoxos/wiki/article#wiki-build

Page 55: Firefox OS - Blaze Your Own Path

Firefox OS のビルド&書き込み// 1. リポジトリの Clonegit clone git://github.com/mozilla-b2g/B2G.gitcd B2G

// 2. 対象端末を指定 (引数無しでリスト表示)./config.sh nexus-s

// 2. ビルド実行 (-j* は並列ビルド数の指定)./build.sh -j4

// 3. 端末に書き込み (adb 必要です)./flash.sh

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Building

Page 56: Firefox OS - Blaze Your Own Path

Apps Dev

Page 57: Firefox OS - Blaze Your Own Path

Firefox OS のアプリ開発

Web アプリです。Web アプリです。Web アプリです。

大事なこと3回

Page 58: Firefox OS - Blaze Your Own Path

Firefox OS のアプリ開発

Web アプリです。Web アプリです。Web アプリです。

大事なこと3回

Page 59: Firefox OS - Blaze Your Own Path

Firefox OS のアプリ開発

いつもの開発ツールいつものエディタいつものライブラリ

いつもと一緒だから安心だね!

Page 60: Firefox OS - Blaze Your Own Path

アプリ開発の流れ

普通に Web 開発デバッグもいつも通り

manifest ファイルを用意メタ情報を JSON 形式で記載

シミュレータや実機テストPC で動かない API は実機で確認Vibration や Sensor など...

https://github.com/dynamis/firefoxos/wiki/simulator

Page 61: Firefox OS - Blaze Your Own Path

manifest.webapp 追加するだけ

Hosted AppWeb から読み込むアプリWeb サイト + manifest.webapp

Packaged App従来型のダウンロードアプリサイト全体を ZIP するだけ

Page 62: Firefox OS - Blaze Your Own Path

manifest.webapp ファイル{  "name": "フォクすけアプリ",  "description": "あのフォクすけが遂にアプリに!",  "launch_path": "/index.html",  "icons": {    "128": "/icons/foxkeh-128.png"  },  "developer": {    "name": "dynamis",    "url": "http://dynamis.jp/"  },  "default_locale": "ja"}// 注意: ローカルファイルで / -> /index.html 変換はない

https://developer.mozilla.org/en-US/docs/Apps/Manifest

Page 63: Firefox OS - Blaze Your Own Path

Firefox OS Simulator

再起動不要の拡張機能https://addons.mozilla.org/ja/firefox/addon/firefox-os-simulator/ポチッと押すだけWeb 開発メニューに追加されるFirefox デスクトップビルド+プロファイル+Alpha

詳しい解説: https://github.com/dynamis/firefoxos/wiki/simulator

Page 64: Firefox OS - Blaze Your Own Path

Firefox OS Simulator (r2d2b2g)

プロファイル付きデスクトップビルドにホームボタンを追加コンソールやディレクトリからアプリケーションを読み込む機能も

Page 65: Firefox OS - Blaze Your Own Path

シミュレータにインストール

Add Directory ボタンmanifest ファイルを選択zip されて packaged app としてインストールされ、起動する

Update ボタンで更新同じディレクトリのファイルを zip し直して、起動する

https://github.com/dynamis/firefoxos/wiki/simulator

Page 66: Firefox OS - Blaze Your Own Path

つーるきっととかは?

Firefox OS 標準のライブラリとかあるの?

Page 67: Firefox OS - Blaze Your Own Path

GAIA Building Blocks (UI 部品)

Gaia (Firefox OS 標準) Appsのデザインを簡単に作れるhttp://buildingfirefoxos.com/

使っても使わなくても OK好きな SDK/Library 使える自由な Web ですから!

http://buildingfirefoxos.com/

Page 68: Firefox OS - Blaze Your Own Path
Page 69: Firefox OS - Blaze Your Own Path
Page 70: Firefox OS - Blaze Your Own Path

Marketplace

Page 71: Firefox OS - Blaze Your Own Path

まーけっと?

Web アプリの配信方法は?

Page 72: Firefox OS - Blaze Your Own Path

Firefox Marketplace

Device, OS 横断マーケットWeb Platform のためのストアFirefox 限定にならない設計

現在テスター向け公開中対象は Firefox OS と Android 版 Firefox の開発版ビルドPC で使うには UA 書き換え...

https://marketplace.firefox.com/

Page 73: Firefox OS - Blaze Your Own Path

オープンなアプリストア

全てを Web 技術で実装安定・平等な環境を提供Marketplace のソースも公開

ベンダー非依存Firefox Marketplace 以外にもストア、認証、課金も自由に

https://marketplace.firefox.com/

Page 74: Firefox OS - Blaze Your Own Path

オープンなレビューシステム

コミュニティレビューFirefox のアドオンと同じレビュー基準もレビュアーもすべてオープンで公平なマーケット

動作まではレビューしないあくまで最低限のフィルタ

https://developer.mozilla.org/en-US/docs/Apps/Marketplace_review_criteria

Page 76: Firefox OS - Blaze Your Own Path

navigator.mozApps.install(url)var Apps = navigator.mozApps;var manifesturl = "http://apps.dynamis.jp/manifest.webapp";

var request = Apps.install(manifesturl);request.onsuccess = function() {  // 成功時の処理};request.onerror = function() {  // 失敗時の処理};

Page 77: Firefox OS - Blaze Your Own Path

Firefox = WebRT (WebRunTime)

Gecko は元からアプリ環境Firefox = Gecko で XUL/JSWebApps = Gecko で HTML/JS

マルチデバイス対応PC, Android, Firefox OS...同じコードでどこでも動くマーケットもマルチデバイス

どろいど君とも仲良し!

Page 78: Firefox OS - Blaze Your Own Path

Android に Web アプリ環境を

Web App = Native App にホームスクリーンへの追加や独立してフル画面起動などネイティブ同様の利用体験

Firefox = WebRT for Android

ホームにインストール、アプリを起動した画面、マーケットをブラウズ

Page 79: Firefox OS - Blaze Your Own Path

PC にも Web アプリ環境を

Web App = Native App にプログラムフォルダ (アプリケーションディレクトリ) への追加ウィンドウはもちろんプロセスもデータも全て独立

Firefox = WebRT for PC

Page 80: Firefox OS - Blaze Your Own Path

WWeebb だからどこにでも!

Web らしいシステムだね!

Page 81: Firefox OS - Blaze Your Own Path

実機で開発したい?

僕の手でも使えるかな?

Page 82: Firefox OS - Blaze Your Own Path

Developer Preview Phone

Telefónica と Geeksphone が作る開発者向けテスト端末

Page 83: Firefox OS - Blaze Your Own Path

Developer Preview Phone

近日発売予定Keon:Snapdragon 1GHz, 4GB ROM, 512MB RAM, 3.5" HVGA

Peak:Snapdragon 1.2GHz x2, 4GB ROM, 512MB RAM, 4.3" qHD

http://www.geeksphone.com/

Page 84: Firefox OS - Blaze Your Own Path

もっと知りたい?

僕はもっと知りたい!

Page 85: Firefox OS - Blaze Your Own Path

Firefox OS コミュニティを!

http://FxOS.org/(https://groups.google.com/group/firefoxos にリダイレクト)

http://FxOS.org/wiki(https://github.com/dynamis/firefoxos/wiki にリダイレクト)

みんな参加してね。みんなよろしく!

Page 86: Firefox OS - Blaze Your Own Path

ぼくには難しいことは分からないけど許してね。

質問ある?

Page 87: Firefox OS - Blaze Your Own Path

See Also...

Page 88: Firefox OS - Blaze Your Own Path

開発者ツール紹介

一通りの機能と使い方Firefox 標準の開発者ツール隠し設定やビルトイン関数のリファレンスなども含めています

Firebug とその拡張機能アイコンや背景画像を変更するカスタマイズにも言及してます

http://r.dynamis.jp/devtools

Page 89: Firefox OS - Blaze Your Own Path

Web 技術 2012 年の変化

最新 Web 技術動向2012 年に進化した点やブラウザベンダーの動向を紹介

HTML5 から HTML5.1 へHTML の仕様は進化と安定化が同時平行で続けられる

Page 90: Firefox OS - Blaze Your Own Path

JavaScript.Next

JavaScript の最新仕様ECMAScript 5th のポイント

JavaScript 次世代仕様ECMAScript 6th や Harmony

http://r.dynamis.jp/jsnext

Page 91: Firefox OS - Blaze Your Own Path

セキュリティ関連機能紹介

セキュリティ大事!知っておくべき機能です

Content Security Policy次世代セキュリティポリシーSame Origin Policy はもう古い

http://r.dynamis.jp/sec