SlideShare a Scribd company logo
1 of 20
Download to read offline
Firefox OS App Dev
Firefox OS Workshop @ Kanto 1st
by Tomoya Asai (dynamis)
about:me
Tomoya ASAI
Mozilla Japan
Technical Marketing (Evangelist)
dynamis @ community
dynamis.jp
@dynamitter
facebook.com/dynamis
mailto: Tomoya ASAI <dynamis mozilla-japan.org>@
Apps Dev
Firefox OS のアプリ
Web アプリです。
Web アプリです。
Web アプリです。
大事なこと3回
Firefox OS のアプリ
Web アプリです。
Web アプリです。
Web アプリです。
大事なこと3回
Firefox OS のアプリ
Web アプリそのもの
OS 専用のアプリではない
すべての API は Web 標準化
メタ情報を用意するだけ
Web サイト + manifest.webapp
→ Firefox OS アプリ
55分で
対応!
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
Firefox OS Simulator
再起動不要の拡張機能
https://addons.mozilla.org/ja/
firefox/addon/firefox-os-simulator/
ポチッと押すだけ
Web 開発メニューに追加される
Firefox デスクトップビルド+
プロファイル+Alpha
詳しい解説: https://github.com/dynamis/firefoxos/wiki/simulator
Firefox Nightly でテスト
シュミレータを統合
シュミレータより高機能です
開発ツールでデバッグ可能
必要なら Firebug も使えます
現在はまだ不安定です
先月開発版に入ったばかり…
Firefox Nightly でテスト
//	 Gaia	 のリポジトリを	 Clone
git	 clone	 git://github.com/mozilla-b2g/
gaia.git;	 cd	 gaia
//	 Gaia	 のデバッグプロファイルを作成
DEBUG=1	 make
//	 profile	 ディレクトリが生成される
//	 Firefox	 Nightly	 をプロファイル指定で起動
//	 Nightly:	 http://nightly.mozilla.org/
firefox	 -profile	 /path/to/gaia/profile
先週入った機能なのでまだ不安定ですが Gaia 開発者はこれ使ってます
ブラウザ機能はない
戻るボタンはありません
別ドメインには別ウィンドウで
User Agent が異なる
"Android;" は含みません
Content Security Policy
一部 API 使うには CSP が必須
アプリ開発の注意事項
https://developer.mozilla.org/ja/docs/Mozilla/Firefox_OS/Application_development
これだけ
注意!
クロスドメイン通信について
XHR は同一ドメインが原則
CORS で制限解除できる
Access-Control-Allow-Origin ヘッダ
を送信することで別ドメインからの
XHR を許可できます
Packaged App から Web
Web はすべて別ドメイン扱い
同様に CORS で許可が必要
詳しくはこちら: https://developer.mozilla.org/ja/docs/HTTP_access_control
2つの方式のアプリ
Hosted (Web 読み込み型)
従来の OS ではブラウザ上で動作
動作や権限は従来の Web と同じ
オフライン対応アプリも開発可能
Packaged (ダウンロード型)
従来のスマホアプリに相当する
マーケット審査を経て追加権限取得
サイト全体を ZIP して配布する形式
Packaged
Web アプリ
Hosted
Web アプリ
Internet
Server
端末
詳細: https://developer.mozilla.org/ja/docs/Web/Apps/Packaged_apps
方式 種類 概要
Hosted
(Web から
読み込む)
Web Content
Web サイトそのもの。
ブラウザ内でアクセスして使う。Hosted
(Web から
読み込む) Installed Web
Web サイトをインストールしたもの。
ブラウザの UI なしで単独起動する。
Packaged
(従来の OS 同
様端末にイン
ストールする)
Plain
Packaged
Web サイト全体を ZIP パッケージに
しているが追加権限を要求しないもの
Packaged
(従来の OS 同
様端末にイン
ストールする)
Privileged
マーケット審査を受けて追加の権限を
許可されたアプリ
Packaged
(従来の OS 同
様端末にイン
ストールする)
Certified
通信事業者や端末メーカーが特別に高
い権限を許可している組み込みアプリ
Firefox OS でのアプリの分類
種類 利用可能な API 例
Web
Content
PC や Android 等のブラウザでできることそのまま
位置情報、画面方向、加速度・近接・環境光センサー、
電池情報、振動、データベース (IndexedDB) など
Installed
Web
OS に登録されることでアラーム、Push 通知、Web
Activities などの API が使えるようになる
Plain
Packaged
追加 API なし (Installed Web と同じ権限)
Privileged
アドレス帳、SD カードの読み書き、CORS に関わらず任
意ドメインへの XHR、TCP Socket
Certified
電話、SMS、ボイスメールなど料金の発生するサービス
その他 Bluetooth、Background Service など
アプリの分類と API 権限
種類 デフォルト Content Security Policy
Web Content, Installed Web, Plain Packaged
アプリでは CSP はデフォルト無効
Web Content, Installed Web, Plain Packaged
アプリでは CSP はデフォルト無効
Privileged
default-src *; script-src 'self'; object-src 'none';
style-src 'self' 'unsafe-inline'
(JavaScript、CSS、オブジェクトは外部読み込み不可)
Certified
default-src *; script-src 'self';
object-src 'none'; style-src 'self'
(JavaScript、CSS、オブジェクトは外部読み込み不可
HTML 内に直接 JavaScript を記述できない)
アプリの分類とデフォルト CSP
Content Security Policy
Same Origin Policy (同一生成源ポリシー)
従来からの Web のセキュリティポリシー
スクリプトからは他のドメインにアクセス不可
(CORS で明示的に許可しているドメインは除く)
ドメイン=セキュリティ境界=アプリの境界
Content Security Policy
安全性を高める新しいセキュリティポリシー
JavaScript、CSS、画像、オブジェクト、フォントなど
ファイルの種類毎にドメイン制限が可能
インラインスクリプト禁止により XSS も防止可能
詳細: https://developer.mozilla.org/en-US/docs/Security/CSP
Privileged, Certified アプリは CSP 必須
Web から JavaScript を直接読み込んで実行できない
Privileged アプリのデフォルト: default-src *; script-src
'self'; object-src 'none'; style-src 'self' 'unsafe-inline'
Certified アプリのデフォルト: default-src *; script-src
'self'; object-src 'none'; style-src 'self'
JavaScript、CSS、オブジェクトファイルはパッケージ外
から読み込み不可能 (画像埋め込みは可能) という設定
CSP 設定変更は Manifest に記載
マーケットで審査する側が確認可能
アプリの種類と CSP 設定
詳細: https://developer.mozilla.org/ja/docs/Web/Apps/Packaged_apps
Firefox os app dev

More Related Content

What's hot

Web is the OS (KDDI mugen Labo)
Web is the OS (KDDI mugen Labo)Web is the OS (KDDI mugen Labo)
Web is the OS (KDDI mugen Labo)dynamis
 
Firefox OS Updates 201311
Firefox OS Updates 201311Firefox OS Updates 201311
Firefox OS Updates 201311dynamis
 
Kilimanjaro Event
Kilimanjaro EventKilimanjaro Event
Kilimanjaro Eventdynamis
 
20150118 firefoxos-handson-helloworld
20150118 firefoxos-handson-helloworld20150118 firefoxos-handson-helloworld
20150118 firefoxos-handson-helloworldNoritada Shimizu
 
Swiftではじめる動画再生
Swiftではじめる動画再生Swiftではじめる動画再生
Swiftではじめる動画再生Yusuke Ariyoshi
 
Firefox FAQ
Firefox FAQFirefox FAQ
Firefox FAQdynamis
 
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方Hiramatsu Ryosuke
 
デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和
デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和
デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和schoowebcampus
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジShinya Okano
 
tvOSネイティブアプリを作る
tvOSネイティブアプリを作るtvOSネイティブアプリを作る
tvOSネイティブアプリを作るTomoki Hasegawa
 
HTML5 によるロボット制御
HTML5 によるロボット制御HTML5 によるロボット制御
HTML5 によるロボット制御Honma Masashi
 
PHP Windows コラボセミナー Vol 1 Session 1
PHP Windows コラボセミナー Vol 1 Session 1PHP Windows コラボセミナー Vol 1 Session 1
PHP Windows コラボセミナー Vol 1 Session 1hirookun
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリアシアル株式会社
 

What's hot (16)

Web is the OS (KDDI mugen Labo)
Web is the OS (KDDI mugen Labo)Web is the OS (KDDI mugen Labo)
Web is the OS (KDDI mugen Labo)
 
Firefox OS Updates 201311
Firefox OS Updates 201311Firefox OS Updates 201311
Firefox OS Updates 201311
 
Kilimanjaro Event
Kilimanjaro EventKilimanjaro Event
Kilimanjaro Event
 
20150118 firefoxos-handson-helloworld
20150118 firefoxos-handson-helloworld20150118 firefoxos-handson-helloworld
20150118 firefoxos-handson-helloworld
 
SpeechPlatform with Kinect
SpeechPlatform with KinectSpeechPlatform with Kinect
SpeechPlatform with Kinect
 
Kmcn demo
Kmcn demoKmcn demo
Kmcn demo
 
Swiftではじめる動画再生
Swiftではじめる動画再生Swiftではじめる動画再生
Swiftではじめる動画再生
 
Firefox FAQ
Firefox FAQFirefox FAQ
Firefox FAQ
 
6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方6秒動画アプリ Vineの作り方
6秒動画アプリ Vineの作り方
 
デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和
デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和
デザイナーでも安心!はじめてのiOSアプリ開発 先生:関根 元和
 
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジmixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
mixiアプリ『the Actress』運用にあたっての課題へのチャレンジ
 
Flash lite概要
Flash lite概要Flash lite概要
Flash lite概要
 
tvOSネイティブアプリを作る
tvOSネイティブアプリを作るtvOSネイティブアプリを作る
tvOSネイティブアプリを作る
 
HTML5 によるロボット制御
HTML5 によるロボット制御HTML5 によるロボット制御
HTML5 によるロボット制御
 
PHP Windows コラボセミナー Vol 1 Session 1
PHP Windows コラボセミナー Vol 1 Session 1PHP Windows コラボセミナー Vol 1 Session 1
PHP Windows コラボセミナー Vol 1 Session 1
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
 

Similar to Firefox os app dev

Firefox Marketplace and Payment
Firefox Marketplace and PaymentFirefox Marketplace and Payment
Firefox Marketplace and Paymentdynamis
 
Apps for Web Platform
Apps for Web PlatformApps for Web Platform
Apps for Web Platformdynamis
 
Secret of Firefox
Secret of FirefoxSecret of Firefox
Secret of Firefoxdynamis
 
Firefox OS App Manager
Firefox OS App ManagerFirefox OS App Manager
Firefox OS App Managerdynamis
 
Web is the OS (Firefox OS)
Web is the OS (Firefox OS)Web is the OS (Firefox OS)
Web is the OS (Firefox OS)dynamis
 
Basis of Firefox Apps
Basis of Firefox AppsBasis of Firefox Apps
Basis of Firefox Appsdynamis
 
Firefox Ecosystem in Kagoshima
Firefox Ecosystem in KagoshimaFirefox Ecosystem in Kagoshima
Firefox Ecosystem in Kagoshimadynamis
 
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Yoshito Tabuchi
 
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」Noritada Shimizu
 
できる!スマホアプリ:Webからはじまるアプリ for CMU16
できる!スマホアプリ:Webからはじまるアプリ for CMU16できる!スマホアプリ:Webからはじまるアプリ for CMU16
できる!スマホアプリ:Webからはじまるアプリ for CMU16Masami Yabushita
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Pathdynamis
 
20141018 osc tokyo_fall_firefox osってなぁに?
20141018 osc tokyo_fall_firefox osってなぁに?20141018 osc tokyo_fall_firefox osってなぁに?
20141018 osc tokyo_fall_firefox osってなぁに?Masami Yabushita
 
FirefoxOS勉強会#7 カメラアプリの作り方
FirefoxOS勉強会#7 カメラアプリの作り方FirefoxOS勉強会#7 カメラアプリの作り方
FirefoxOS勉強会#7 カメラアプリの作り方Kazuyuki Suzuki
 
Firefox OSアプリの概要@gunma.web
Firefox OSアプリの概要@gunma.webFirefox OSアプリの概要@gunma.web
Firefox OSアプリの概要@gunma.webHayato Hiratori
 
Ocs2010 kyoto nonweb
Ocs2010 kyoto nonwebOcs2010 kyoto nonweb
Ocs2010 kyoto nonwebOsamu Monoe
 
Ocs2010 kyoto nonweb
Ocs2010 kyoto nonwebOcs2010 kyoto nonweb
Ocs2010 kyoto nonwebOsamu Monoe
 
さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪Honma Masashi
 
FlashAirとCognitive Servicesを使おう!
FlashAirとCognitive Servicesを使おう!FlashAirとCognitive Servicesを使おう!
FlashAirとCognitive Servicesを使おう!ayasehiro
 
OSC 2010 Tokyo/Fall MSセッション
OSC 2010 Tokyo/Fall MSセッションOSC 2010 Tokyo/Fall MSセッション
OSC 2010 Tokyo/Fall MSセッションMasaki Takeda
 

Similar to Firefox os app dev (20)

Firefox Marketplace and Payment
Firefox Marketplace and PaymentFirefox Marketplace and Payment
Firefox Marketplace and Payment
 
Apps for Web Platform
Apps for Web PlatformApps for Web Platform
Apps for Web Platform
 
Secret of Firefox
Secret of FirefoxSecret of Firefox
Secret of Firefox
 
Firefox OS App Manager
Firefox OS App ManagerFirefox OS App Manager
Firefox OS App Manager
 
Web is the OS (Firefox OS)
Web is the OS (Firefox OS)Web is the OS (Firefox OS)
Web is the OS (Firefox OS)
 
Basis of Firefox Apps
Basis of Firefox AppsBasis of Firefox Apps
Basis of Firefox Apps
 
20140629 firefoxos-devenv
20140629 firefoxos-devenv20140629 firefoxos-devenv
20140629 firefoxos-devenv
 
Firefox Ecosystem in Kagoshima
Firefox Ecosystem in KagoshimaFirefox Ecosystem in Kagoshima
Firefox Ecosystem in Kagoshima
 
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
Xamarin 概要 @ 2014/11/08 第2回 Japan Xamarin User Group Conference 西日本編
 
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
Firefox OS 勉強会 名古屋2nd 「便利な便利な開発ツール」
 
できる!スマホアプリ:Webからはじまるアプリ for CMU16
できる!スマホアプリ:Webからはじまるアプリ for CMU16できる!スマホアプリ:Webからはじまるアプリ for CMU16
できる!スマホアプリ:Webからはじまるアプリ for CMU16
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
 
20141018 osc tokyo_fall_firefox osってなぁに?
20141018 osc tokyo_fall_firefox osってなぁに?20141018 osc tokyo_fall_firefox osってなぁに?
20141018 osc tokyo_fall_firefox osってなぁに?
 
FirefoxOS勉強会#7 カメラアプリの作り方
FirefoxOS勉強会#7 カメラアプリの作り方FirefoxOS勉強会#7 カメラアプリの作り方
FirefoxOS勉強会#7 カメラアプリの作り方
 
Firefox OSアプリの概要@gunma.web
Firefox OSアプリの概要@gunma.webFirefox OSアプリの概要@gunma.web
Firefox OSアプリの概要@gunma.web
 
Ocs2010 kyoto nonweb
Ocs2010 kyoto nonwebOcs2010 kyoto nonweb
Ocs2010 kyoto nonweb
 
Ocs2010 kyoto nonweb
Ocs2010 kyoto nonwebOcs2010 kyoto nonweb
Ocs2010 kyoto nonweb
 
さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪
 
FlashAirとCognitive Servicesを使おう!
FlashAirとCognitive Servicesを使おう!FlashAirとCognitive Servicesを使おう!
FlashAirとCognitive Servicesを使おう!
 
OSC 2010 Tokyo/Fall MSセッション
OSC 2010 Tokyo/Fall MSセッションOSC 2010 Tokyo/Fall MSセッション
OSC 2010 Tokyo/Fall MSセッション
 

More from dynamis

HTTP and 5G (fixed1)
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)dynamis
 
HTTP and 5G
HTTP and 5GHTTP and 5G
HTTP and 5Gdynamis
 
HTTP and 5G partial draft
HTTP and 5G partial draftHTTP and 5G partial draft
HTTP and 5G partial draftdynamis
 
Web App Platform Strategy
Web App Platform StrategyWeb App Platform Strategy
Web App Platform Strategydynamis
 
HTML5 & Renesas RZ/G
HTML5 & Renesas RZ/GHTML5 & Renesas RZ/G
HTML5 & Renesas RZ/Gdynamis
 
Life of html5 (osaka)
Life of html5 (osaka)Life of html5 (osaka)
Life of html5 (osaka)dynamis
 
Web updates 2017
Web updates 2017Web updates 2017
Web updates 2017dynamis
 
Life of HTML5
Life of HTML5Life of HTML5
Life of HTML5dynamis
 
Browsers in IoT Era
Browsers in IoT EraBrowsers in IoT Era
Browsers in IoT Eradynamis
 
New Norm of HTML5
New Norm of HTML5New Norm of HTML5
New Norm of HTML5dynamis
 
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)dynamis
 
OSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig TalkOSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig Talkdynamis
 
Demo for Gecko Embedded
Demo for Gecko EmbeddedDemo for Gecko Embedded
Demo for Gecko Embeddeddynamis
 
Project Gecko Embedded
Project Gecko EmbeddedProject Gecko Embedded
Project Gecko Embeddeddynamis
 
The New Norm of The Web
The New Norm of The WebThe New Norm of The Web
The New Norm of The Webdynamis
 
Progressive Mobile Web Apps
Progressive Mobile Web AppsProgressive Mobile Web Apps
Progressive Mobile Web Appsdynamis
 
Modern Mobile Web Apps
Modern Mobile Web AppsModern Mobile Web Apps
Modern Mobile Web Appsdynamis
 
Web Tech & Architecture
Web Tech & ArchitectureWeb Tech & Architecture
Web Tech & Architecturedynamis
 
Java script.trend(spec)
Java script.trend(spec)Java script.trend(spec)
Java script.trend(spec)dynamis
 
Data Privacy meeting
Data Privacy meetingData Privacy meeting
Data Privacy meetingdynamis
 

More from dynamis (20)

HTTP and 5G (fixed1)
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)
 
HTTP and 5G
HTTP and 5GHTTP and 5G
HTTP and 5G
 
HTTP and 5G partial draft
HTTP and 5G partial draftHTTP and 5G partial draft
HTTP and 5G partial draft
 
Web App Platform Strategy
Web App Platform StrategyWeb App Platform Strategy
Web App Platform Strategy
 
HTML5 & Renesas RZ/G
HTML5 & Renesas RZ/GHTML5 & Renesas RZ/G
HTML5 & Renesas RZ/G
 
Life of html5 (osaka)
Life of html5 (osaka)Life of html5 (osaka)
Life of html5 (osaka)
 
Web updates 2017
Web updates 2017Web updates 2017
Web updates 2017
 
Life of HTML5
Life of HTML5Life of HTML5
Life of HTML5
 
Browsers in IoT Era
Browsers in IoT EraBrowsers in IoT Era
Browsers in IoT Era
 
New Norm of HTML5
New Norm of HTML5New Norm of HTML5
New Norm of HTML5
 
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
 
OSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig TalkOSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig Talk
 
Demo for Gecko Embedded
Demo for Gecko EmbeddedDemo for Gecko Embedded
Demo for Gecko Embedded
 
Project Gecko Embedded
Project Gecko EmbeddedProject Gecko Embedded
Project Gecko Embedded
 
The New Norm of The Web
The New Norm of The WebThe New Norm of The Web
The New Norm of The Web
 
Progressive Mobile Web Apps
Progressive Mobile Web AppsProgressive Mobile Web Apps
Progressive Mobile Web Apps
 
Modern Mobile Web Apps
Modern Mobile Web AppsModern Mobile Web Apps
Modern Mobile Web Apps
 
Web Tech & Architecture
Web Tech & ArchitectureWeb Tech & Architecture
Web Tech & Architecture
 
Java script.trend(spec)
Java script.trend(spec)Java script.trend(spec)
Java script.trend(spec)
 
Data Privacy meeting
Data Privacy meetingData Privacy meeting
Data Privacy meeting
 

Firefox os app dev

  • 1. Firefox OS App Dev Firefox OS Workshop @ Kanto 1st by Tomoya Asai (dynamis)
  • 3. Tomoya ASAI Mozilla Japan Technical Marketing (Evangelist) dynamis @ community dynamis.jp @dynamitter facebook.com/dynamis mailto: Tomoya ASAI <dynamis mozilla-japan.org>@
  • 5. Firefox OS のアプリ Web アプリです。 Web アプリです。 Web アプリです。 大事なこと3回
  • 6. Firefox OS のアプリ Web アプリです。 Web アプリです。 Web アプリです。 大事なこと3回
  • 7. Firefox OS のアプリ Web アプリそのもの OS 専用のアプリではない すべての API は Web 標準化 メタ情報を用意するだけ Web サイト + manifest.webapp → Firefox OS アプリ 55分で 対応!
  • 8. 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
  • 9. Firefox OS Simulator 再起動不要の拡張機能 https://addons.mozilla.org/ja/ firefox/addon/firefox-os-simulator/ ポチッと押すだけ Web 開発メニューに追加される Firefox デスクトップビルド+ プロファイル+Alpha 詳しい解説: https://github.com/dynamis/firefoxos/wiki/simulator
  • 10. Firefox Nightly でテスト シュミレータを統合 シュミレータより高機能です 開発ツールでデバッグ可能 必要なら Firebug も使えます 現在はまだ不安定です 先月開発版に入ったばかり…
  • 11. Firefox Nightly でテスト // Gaia のリポジトリを Clone git clone git://github.com/mozilla-b2g/ gaia.git; cd gaia // Gaia のデバッグプロファイルを作成 DEBUG=1 make // profile ディレクトリが生成される // Firefox Nightly をプロファイル指定で起動 // Nightly: http://nightly.mozilla.org/ firefox -profile /path/to/gaia/profile 先週入った機能なのでまだ不安定ですが Gaia 開発者はこれ使ってます
  • 12. ブラウザ機能はない 戻るボタンはありません 別ドメインには別ウィンドウで User Agent が異なる "Android;" は含みません Content Security Policy 一部 API 使うには CSP が必須 アプリ開発の注意事項 https://developer.mozilla.org/ja/docs/Mozilla/Firefox_OS/Application_development これだけ 注意!
  • 13. クロスドメイン通信について XHR は同一ドメインが原則 CORS で制限解除できる Access-Control-Allow-Origin ヘッダ を送信することで別ドメインからの XHR を許可できます Packaged App から Web Web はすべて別ドメイン扱い 同様に CORS で許可が必要 詳しくはこちら: https://developer.mozilla.org/ja/docs/HTTP_access_control
  • 14. 2つの方式のアプリ Hosted (Web 読み込み型) 従来の OS ではブラウザ上で動作 動作や権限は従来の Web と同じ オフライン対応アプリも開発可能 Packaged (ダウンロード型) 従来のスマホアプリに相当する マーケット審査を経て追加権限取得 サイト全体を ZIP して配布する形式 Packaged Web アプリ Hosted Web アプリ Internet Server 端末 詳細: https://developer.mozilla.org/ja/docs/Web/Apps/Packaged_apps
  • 15. 方式 種類 概要 Hosted (Web から 読み込む) Web Content Web サイトそのもの。 ブラウザ内でアクセスして使う。Hosted (Web から 読み込む) Installed Web Web サイトをインストールしたもの。 ブラウザの UI なしで単独起動する。 Packaged (従来の OS 同 様端末にイン ストールする) Plain Packaged Web サイト全体を ZIP パッケージに しているが追加権限を要求しないもの Packaged (従来の OS 同 様端末にイン ストールする) Privileged マーケット審査を受けて追加の権限を 許可されたアプリ Packaged (従来の OS 同 様端末にイン ストールする) Certified 通信事業者や端末メーカーが特別に高 い権限を許可している組み込みアプリ Firefox OS でのアプリの分類
  • 16. 種類 利用可能な API 例 Web Content PC や Android 等のブラウザでできることそのまま 位置情報、画面方向、加速度・近接・環境光センサー、 電池情報、振動、データベース (IndexedDB) など Installed Web OS に登録されることでアラーム、Push 通知、Web Activities などの API が使えるようになる Plain Packaged 追加 API なし (Installed Web と同じ権限) Privileged アドレス帳、SD カードの読み書き、CORS に関わらず任 意ドメインへの XHR、TCP Socket Certified 電話、SMS、ボイスメールなど料金の発生するサービス その他 Bluetooth、Background Service など アプリの分類と API 権限
  • 17. 種類 デフォルト Content Security Policy Web Content, Installed Web, Plain Packaged アプリでは CSP はデフォルト無効 Web Content, Installed Web, Plain Packaged アプリでは CSP はデフォルト無効 Privileged default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline' (JavaScript、CSS、オブジェクトは外部読み込み不可) Certified default-src *; script-src 'self'; object-src 'none'; style-src 'self' (JavaScript、CSS、オブジェクトは外部読み込み不可 HTML 内に直接 JavaScript を記述できない) アプリの分類とデフォルト CSP
  • 18. Content Security Policy Same Origin Policy (同一生成源ポリシー) 従来からの Web のセキュリティポリシー スクリプトからは他のドメインにアクセス不可 (CORS で明示的に許可しているドメインは除く) ドメイン=セキュリティ境界=アプリの境界 Content Security Policy 安全性を高める新しいセキュリティポリシー JavaScript、CSS、画像、オブジェクト、フォントなど ファイルの種類毎にドメイン制限が可能 インラインスクリプト禁止により XSS も防止可能 詳細: https://developer.mozilla.org/en-US/docs/Security/CSP
  • 19. Privileged, Certified アプリは CSP 必須 Web から JavaScript を直接読み込んで実行できない Privileged アプリのデフォルト: default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline' Certified アプリのデフォルト: default-src *; script-src 'self'; object-src 'none'; style-src 'self' JavaScript、CSS、オブジェクトファイルはパッケージ外 から読み込み不可能 (画像埋め込みは可能) という設定 CSP 設定変更は Manifest に記載 マーケットで審査する側が確認可能 アプリの種類と CSP 設定 詳細: https://developer.mozilla.org/ja/docs/Web/Apps/Packaged_apps