Movatterモバイル変換


[0]ホーム

URL:


Makoto Kato, profile picture
Uploaded byMakoto Kato
1,175 views

Mobile Web

Mozilla Workshop @ Nagano

Embed presentation

Mobile Web技術   Makoto Kato   Mozilla Japan
自己紹介•   名前: 加藤 誠 / @makoto_kato•   Firefox / Mobile / Thunderbird committer    •   x64 / arm    •   etc
Agenda•   Mobile Web Browser?•   APIs for Mobile / Devices
MOBILE WEB BROWSER?
Mobile Web Browser?•   モバイルデバイス用のWebブラウザには2種類が    存在する    •   サーバーで描画して、クライアントに描画結果        を転送    •   クライアントですべてを行う(=デスクトップ用        ブラウザと同じ)
サーバー側で描画                  Web ServerHTMLの解析、描画をサーバー側で行う              Internetクライアント側はその結果(画像)をサーバーから受け取   Rendering Serverり、描画                     Mobile
サーバー側で描画• Opera Mini• Skyfire• jigi
クライアント側で描画               Web Serverデスクトップ用のWebブ    Internetラウザと同じテクノロジ                 Mobile
クライアント側で描画•WebKitをベースとしたブラウザ(OSに組み込まれている標準ブラウザ)    •   Android    •   iOS    •   Symbian (Nokia)    •   Blackberry (6 or later)•   Opera Mobile•   Firefox Mobile•   Internet Explorer Mobile (Windows Phone)
各タイプの違い         サーバーで描画するタイプ            クライアントで描画するタイプ     •       モバイルデバイス側にCPU   •       クライアントですべて完結する             パワーを余り必要としない            ため、JavaScriptを利用したコ                                     ンテンツなどの場合にいちいち利点 •         サーバー側でデータを圧縮            サーバーに接続する必要がない             できるので、トラフィック             を縮小できる     •       オフラインサポート       •       CPUパワーを必要とする     •       インタラクティブなコンテ    •       トラフィックが増大しやすい             ンツの場合には、逆にトラ欠点           フィックが増える            •     Opera Turboのようなプロ                                       キシを介すことで軽減可能         •    クライアントだけで処              理が完結しないため
世界におけるモバイルブラウザシェア
モバイルWebブラウザ
モバイルOS
モバイル上での            Webブラウザ•   OSに”まともな”ブラウザが組み込まれていない    環境下ではサードパーティ製ブラウザが使われる    •   JavaME    •   Symbian (old version)    •   Windows Moble (not Windows Phone)•   OSに組み込まれたブラウザが”まとも”であれば、    そのまま使われることが多い
APIS FOR MOBILE / DEVICES
Network on Mobile•   常にネットワークがつながっている訳ではない    •   オンライン・オフラインが切り替わる•   ネットワークの速度は改善されているが、デスク    トップに比べれば。。。    •   効率のいいサーバーとの接続方法?
Network on Mobile•   モバイルではネットワークが常につながっている    わけではない    •   地下鉄・駅•   ネットワークが接続されているときに、サーバー    へアクセスして、つながってない時にローカル    キャッシュ (データベース) を利用
Network API•   仕様が固まり、実装がすすんでいるもの    •   Online / offline state    •   XMLHttpRequest (XHR)    •   Sever Sent Event    •   WebSocket•   使用策定中    •   Network Information API
On-line state•   Check current network state      if (navigator.onLine) {        // network is online      }•   event      window.addEventListener(“online”,        function() {          // network status changes to online        }, true);
Server Sent Event•   定期的にサーバーと通信を行う•   Cross Domain Acessは現在規格制定中    •   おそらく、XHRと同様になる
Server Sent Event            (Server)•   MIME Type    •   text/event-stream    •   クライアント側はAcceptヘッダで送信    •   サーバー側はContent-Typeで送信•   データ形式    •   id: <識別ID>    •   data: <送信内容>    •   retry: <ミリ秒> 次の秒後にリクエストを投げるかを指        定
Server Sent Event          (client)// http://<server>/events にリクエストvar source = new EventSource("/events");source.addEventLitener(  "message",  function(e) {    document.body.innerHTML += e.data;  }, false);
その他
Network Information           API•   現在利用しているネットワークの種類を取得    var conType = navigator.connection.type;    if (conType == "wifi") {       // 現在の接続先がWIFI    } else if (conType == “3G”) {      // 現在の接続先が3G    }
Data Storage•   File API•   Storage    •   Web Storage    •   Indexed Database    •   Web SQL Database (仕様としてほぼ消滅)
Web Storage•   二種類のストレージタイプ    •   localStorage    •   sessionStorage•   簡単なkey-valueスタイル        localStorage.setItem(‘key’, ‘value’);        localStorage.getItem(‘key’);•   大きなデータや複雑なデータには向かない
Indexed Database•   No SQL Database•   2 APIs    •   同期API    •   非同期API•   Firefoxでは非同期のみ現在サポート    •   非同期APIの方が負荷をかけない    •   同期APIはWorkersなどUIを伴わない処理にし        か向かない
Indexed Database// Firefox -> mozIndexedDB// WebKit -> webkitIndexedDBvar request = window.indexedDB.open(“maildb", “Mail");request.onsuccess = function(event) {  var db = request.result;    var transaction =      aDB.transaction([“maildb"],                      IDBTransaction.READ_ONLY);    var cursor =      transaction.objectStore(“maildb").openCursor();    cursor.onsuccess = function(event) {    }}
User Interaction•   実装が進んでいる物    •   Touch Event    •   Web Notification•   現在仕様議論中    •   Vibration    •   Intent-base events    •   Speech etc
Touch Event•   タッチデバイスのためのイベントモデル    •   シングルタッチもマルチタッチもサポート•   iOSで最初に実装されたもの•   現在W3C – Web Events Groupで仕様を策定中l
Touch Event•   タッチイベントにはいろいろな定義が存在    •   touchstart … タッチポイントが開始    •   touchmove … タッチポイントが移動中    •   touchcancel… システムなどによって、タッチイベン        トがキャンセル    •   touchleave … 要素間の移動などタッチポイントが離        れる    •   touchend … タッチが終了
Touch Eventfunction handleStart(event) {  var touches = event.changedTouches;  var x = touches[0].pageX;  var y = touches[0].pageY;}function handleEnd(event) { …}function startup() {  var el = document.getElementById("canvas");  el.addEventListener("touchstart", handleStart, false);  el.addEventListener("touchend", handleEnd, false);  el.addEventListener("touchmove", handleMove, false);}
Web Notification•   モバイルOSでは、通知機能はOS標準で搭載され    る傾向にある    •   メール通知など
Web Notification// Firefox では、mozNotification// Chromeでは、webkitNotificationvar notification =   navigator.notification(“title”, “message”);notification.onclose = function() {  // close時};
Hardware Integration•   実装が進んでいる物    •   Geo Location    •   Device Orientation (Accelerometer)    •   Media Capture•   仕様策定中    •   Battey Status Event    •   Streaming API
Device Orientation•   ほとんどのデバイスに使われる傾きセンサーの値    を検出する    window.addEventListner(“deviceorientation”,      function(event) {        alpha = event.alpha;        beta = event.beta;        gamma = event.gamma;      }, true);
Media Capture•   <input type=“file”>でキャプチャデバイスを操    作•   カメラや音声などを取り込む        <input type=“file” accept=“image/*”        capture=“camera”>    •   Android 3.0 Web Browser         <input type=“file”         accept=“image/*;capture=camera”>
その他•   Battery Status API•   Steaming API (Web Real-Time    Communication APIs)
Bettery Status API•   電源の状態を取得    •   ACで接続中とかバッテリ駆動中とか•   バッテリの残量を取得
その他APIs•   Personal Information    •   Contact API – address book    •   Calendar API – calendar•   Communication    •   Messaging API – email / SMS    •   P2P•   Graphics    •   Media Query
API for media query•   Media Query    •   画面の解像度などでCSSを切り替える        <link rel="stylesheet" type="text/css"        media="screen and (min-device-width: 480px)"        href="480px.css“>
API for media query•   MatchMedia    •   DOMでmedia queryを利用する        if (window.matchMedia(          "(min-device-width: 400px)").matches) {          // min-device-width < 400px        } else {        }        // イベントリスナ形式        window.matchMedia(          "(min-width: 400px)").addListener( function() {        });
APIs•   セキュリティを考慮すべき場所においては、仕様    策定には非常に慎重    •   Contact API    •   Messaging API•   ユーザーに許可を求める方式は正しいのか?    •   Web Appsに関しては?
Any Question?

Recommended

PDF
WebIntents × SNS
PPTX
Azure Service Fabric概要
PPTX
Web Intents入門
PDF
Data api workshop at Co-Edo
PDF
Scala@SmartNews AdFrontend を Scala で書いた話
PDF
AWS Black Belt Techシリーズ Amazon Cognito / Amazon Mobile Analytics
PPTX
JAZUG TOKYO NIGHT 2019-01 AADでユーザ管理しよう
PPTX
AADのお話第一回
PPTX
Azure Service Fabric 概要
PPTX
20120609
PPTX
CognitoとSDKでサーバーレスなマルチデバイスアプリを構築する
PPTX
20100313
PDF
Data API + AWS = (CMS どうでしょう 札幌編)
PPTX
雑談会議 Azure AD B2C 第一回
PPTX
NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -
PPTX
20111203
PDF
AWSを利用したアプリ開発
PDF
サーバレスを可能にするAWSサービスの概要
PDF
Aws lambda &amp; amazon api gateway入門
PDF
Lt7 SPA
PPTX
Cognito User Pool
PPTX
Azure Data Platform
PDF
初めての Data API CMS どうでしょう - 仙台編 -
PPTX
Azure Container Services and Microservices design pattern
PPTX
Engineer is Hero !! DevOps MSA and AI
PDF
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
PDF
AWS CLIでAssumeRole
PDF
PHP で始める AWS モバイルサービス - PHPカンファレンス_20150530
PDF
Think.next
PDF
e10sとアプリ間通信

More Related Content

PDF
WebIntents × SNS
PPTX
Azure Service Fabric概要
PPTX
Web Intents入門
PDF
Data api workshop at Co-Edo
PDF
Scala@SmartNews AdFrontend を Scala で書いた話
PDF
AWS Black Belt Techシリーズ Amazon Cognito / Amazon Mobile Analytics
PPTX
JAZUG TOKYO NIGHT 2019-01 AADでユーザ管理しよう
PPTX
AADのお話第一回
WebIntents × SNS
Azure Service Fabric概要
Web Intents入門
Data api workshop at Co-Edo
Scala@SmartNews AdFrontend を Scala で書いた話
AWS Black Belt Techシリーズ Amazon Cognito / Amazon Mobile Analytics
JAZUG TOKYO NIGHT 2019-01 AADでユーザ管理しよう
AADのお話第一回

What's hot

PPTX
Azure Service Fabric 概要
PPTX
20120609
PPTX
CognitoとSDKでサーバーレスなマルチデバイスアプリを構築する
PPTX
20100313
PDF
Data API + AWS = (CMS どうでしょう 札幌編)
PPTX
雑談会議 Azure AD B2C 第一回
PPTX
NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -
PPTX
20111203
PDF
AWSを利用したアプリ開発
PDF
サーバレスを可能にするAWSサービスの概要
PDF
Aws lambda &amp; amazon api gateway入門
PDF
Lt7 SPA
PPTX
Cognito User Pool
PPTX
Azure Data Platform
PDF
初めての Data API CMS どうでしょう - 仙台編 -
PPTX
Azure Container Services and Microservices design pattern
PPTX
Engineer is Hero !! DevOps MSA and AI
PDF
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
PDF
AWS CLIでAssumeRole
PDF
PHP で始める AWS モバイルサービス - PHPカンファレンス_20150530
Azure Service Fabric 概要
20120609
CognitoとSDKでサーバーレスなマルチデバイスアプリを構築する
20100313
Data API + AWS = (CMS どうでしょう 札幌編)
雑談会議 Azure AD B2C 第一回
NET 開発者のための Azure Service Fabric と、 Azure Container Service - 何が違うねん? -
20111203
AWSを利用したアプリ開発
サーバレスを可能にするAWSサービスの概要
Aws lambda &amp; amazon api gateway入門
Lt7 SPA
Cognito User Pool
Azure Data Platform
初めての Data API CMS どうでしょう - 仙台編 -
Azure Container Services and Microservices design pattern
Engineer is Hero !! DevOps MSA and AI
Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -
AWS CLIでAssumeRole
PHP で始める AWS モバイルサービス - PHPカンファレンス_20150530

Viewers also liked

PDF
Think.next
PDF
e10sとアプリ間通信
PDF
Firefox mobile for android internals
PDF
Mozillaのビルドインフラ
PDF
Firefox 4 with SVG
PDF
Emoji
PDF
Raindrop
PDF
Active scripting
PPTX
AWSでGPUも安く大量に使い倒せ
Think.next
e10sとアプリ間通信
Firefox mobile for android internals
Mozillaのビルドインフラ
Firefox 4 with SVG
Emoji
Raindrop
Active scripting
AWSでGPUも安く大量に使い倒せ

Similar to Mobile Web

PDF
Kilimanjaro Event
PDF
Firefox OS - Blaze Your Own Path
PDF
Html5 seminar 1_pac
PDF
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
PPTX
HTML5とWeb開発に関する最新動向
PDF
Browser and Mozilla
PDF
Web on Kernel
PPTX
WebIntentsにより拓かれる次のWeb
PPTX
HTML5&API総まくり
PDF
Web is the OS (Firefox OS)
PDF
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
PDF
Jqm20120804 publish
PPTX
HTML5最新動向
PDF
HTML5開発最前線
PDF
Concentrated HTML5 & Attractive HTML5
PPTX
ABC2012Spring 20120324
PPTX
Phone gap+javascriptスマホアプリ開発(入門編)
 
PDF
ゲームだけじゃないHTML5
PDF
PhoneGapでWebアプリをスマホアプリ化
PDF
PhoneGapで作るハイブリッドアプリケーション
Kilimanjaro Event
Firefox OS - Blaze Your Own Path
Html5 seminar 1_pac
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
HTML5とWeb開発に関する最新動向
Browser and Mozilla
Web on Kernel
WebIntentsにより拓かれる次のWeb
HTML5&API総まくり
Web is the OS (Firefox OS)
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
Jqm20120804 publish
HTML5最新動向
HTML5開発最前線
Concentrated HTML5 & Attractive HTML5
ABC2012Spring 20120324
Phone gap+javascriptスマホアプリ開発(入門編)
 
ゲームだけじゃないHTML5
PhoneGapでWebアプリをスマホアプリ化
PhoneGapで作るハイブリッドアプリケーション

More from Makoto Kato

PDF
Moz2D
PDF
Firefox OSのアーキテクチャと構成技術
PDF
Openness, Innovation and Opptunity
PDF
Firefox Mobile
PDF
Firefox 4 and Mobile
PDF
Mobile addon
PDF
keep it real
PDF
Firefox for mobile
PDF
Firefoxの開発プロセス
PDF
"Open"
PDF
ブラウザの歴史
PDF
CSS3の最新事情
PDF
FirefoxとMozillaでのSVGの取り組み
PDF
Web Technology features with Firefox 3.6 / Gecko 1.9.2 and later
PDF
Thunderbird 3のご紹介と企業に求められるカスタマイズ
PDF
js-ctypes - ネイティブコードを呼び出す新しいカタチ
Moz2D
Firefox OSのアーキテクチャと構成技術
Openness, Innovation and Opptunity
Firefox Mobile
Firefox 4 and Mobile
Mobile addon
keep it real
Firefox for mobile
Firefoxの開発プロセス
"Open"
ブラウザの歴史
CSS3の最新事情
FirefoxとMozillaでのSVGの取り組み
Web Technology features with Firefox 3.6 / Gecko 1.9.2 and later
Thunderbird 3のご紹介と企業に求められるカスタマイズ
js-ctypes - ネイティブコードを呼び出す新しいカタチ

Mobile Web

  • 1.
    Mobile Web技術 Makoto Kato Mozilla Japan
  • 2.
    自己紹介•名前: 加藤 誠 / @makoto_kato• Firefox / Mobile / Thunderbird committer • x64 / arm • etc
  • 3.
    Agenda•Mobile Web Browser?• APIs for Mobile / Devices
  • 4.
  • 5.
    Mobile Web Browser?• モバイルデバイス用のWebブラウザには2種類が 存在する • サーバーで描画して、クライアントに描画結果 を転送 • クライアントですべてを行う(=デスクトップ用 ブラウザと同じ)
  • 6.
    サーバー側で描画 Web ServerHTMLの解析、描画をサーバー側で行う Internetクライアント側はその結果(画像)をサーバーから受け取 Rendering Serverり、描画 Mobile
  • 7.
  • 8.
    クライアント側で描画 Web Serverデスクトップ用のWebブ Internetラウザと同じテクノロジ Mobile
  • 9.
    クライアント側で描画•WebKitをベースとしたブラウザ(OSに組み込まれている標準ブラウザ) • Android • iOS • Symbian (Nokia) • Blackberry (6 or later)• Opera Mobile• Firefox Mobile• Internet Explorer Mobile (Windows Phone)
  • 10.
    各タイプの違い サーバーで描画するタイプ クライアントで描画するタイプ • モバイルデバイス側にCPU • クライアントですべて完結する パワーを余り必要としない ため、JavaScriptを利用したコ ンテンツなどの場合にいちいち利点 • サーバー側でデータを圧縮 サーバーに接続する必要がない できるので、トラフィック を縮小できる • オフラインサポート • CPUパワーを必要とする • インタラクティブなコンテ • トラフィックが増大しやすい ンツの場合には、逆にトラ欠点 フィックが増える • Opera Turboのようなプロ キシを介すことで軽減可能 • クライアントだけで処 理が完結しないため
  • 11.
  • 12.
  • 13.
  • 14.
    モバイル上での Webブラウザ• OSに”まともな”ブラウザが組み込まれていない 環境下ではサードパーティ製ブラウザが使われる • JavaME • Symbian (old version) • Windows Moble (not Windows Phone)• OSに組み込まれたブラウザが”まとも”であれば、 そのまま使われることが多い
  • 15.
  • 16.
    Network on Mobile• 常にネットワークがつながっている訳ではない • オンライン・オフラインが切り替わる• ネットワークの速度は改善されているが、デスク トップに比べれば。。。 • 効率のいいサーバーとの接続方法?
  • 17.
    Network on Mobile• モバイルではネットワークが常につながっている わけではない • 地下鉄・駅• ネットワークが接続されているときに、サーバー へアクセスして、つながってない時にローカル キャッシュ (データベース) を利用
  • 18.
    Network API• 仕様が固まり、実装がすすんでいるもの • Online / offline state • XMLHttpRequest (XHR) • Sever Sent Event • WebSocket• 使用策定中 • Network Information API
  • 19.
    On-line state• Check current network state if (navigator.onLine) { // network is online }• event window.addEventListener(“online”, function() { // network status changes to online }, true);
  • 20.
    Server Sent Event• 定期的にサーバーと通信を行う• Cross Domain Acessは現在規格制定中 • おそらく、XHRと同様になる
  • 21.
    Server Sent Event (Server)• MIME Type • text/event-stream • クライアント側はAcceptヘッダで送信 • サーバー側はContent-Typeで送信• データ形式 • id: <識別ID> • data: <送信内容> • retry: <ミリ秒> 次の秒後にリクエストを投げるかを指 定
  • 22.
    Server Sent Event (client)// http://<server>/events にリクエストvar source = new EventSource("/events");source.addEventLitener( "message", function(e) { document.body.innerHTML += e.data; }, false);
  • 23.
  • 24.
    Network Information API• 現在利用しているネットワークの種類を取得 var conType = navigator.connection.type; if (conType == "wifi") { // 現在の接続先がWIFI } else if (conType == “3G”) { // 現在の接続先が3G }
  • 25.
    Data Storage• File API• Storage • Web Storage • Indexed Database • Web SQL Database (仕様としてほぼ消滅)
  • 26.
    Web Storage• 二種類のストレージタイプ • localStorage • sessionStorage• 簡単なkey-valueスタイル localStorage.setItem(‘key’, ‘value’); localStorage.getItem(‘key’);• 大きなデータや複雑なデータには向かない
  • 27.
    Indexed Database• No SQL Database• 2 APIs • 同期API • 非同期API• Firefoxでは非同期のみ現在サポート • 非同期APIの方が負荷をかけない • 同期APIはWorkersなどUIを伴わない処理にし か向かない
  • 28.
    Indexed Database// Firefox-> mozIndexedDB// WebKit -> webkitIndexedDBvar request = window.indexedDB.open(“maildb", “Mail");request.onsuccess = function(event) { var db = request.result; var transaction = aDB.transaction([“maildb"], IDBTransaction.READ_ONLY); var cursor = transaction.objectStore(“maildb").openCursor(); cursor.onsuccess = function(event) { }}
  • 29.
    User Interaction• 実装が進んでいる物 • Touch Event • Web Notification• 現在仕様議論中 • Vibration • Intent-base events • Speech etc
  • 30.
    Touch Event• タッチデバイスのためのイベントモデル • シングルタッチもマルチタッチもサポート• iOSで最初に実装されたもの• 現在W3C – Web Events Groupで仕様を策定中l
  • 31.
    Touch Event• タッチイベントにはいろいろな定義が存在 • touchstart … タッチポイントが開始 • touchmove … タッチポイントが移動中 • touchcancel… システムなどによって、タッチイベン トがキャンセル • touchleave … 要素間の移動などタッチポイントが離 れる • touchend … タッチが終了
  • 32.
    Touch Eventfunction handleStart(event){ var touches = event.changedTouches; var x = touches[0].pageX; var y = touches[0].pageY;}function handleEnd(event) { …}function startup() { var el = document.getElementById("canvas"); el.addEventListener("touchstart", handleStart, false); el.addEventListener("touchend", handleEnd, false); el.addEventListener("touchmove", handleMove, false);}
  • 33.
    Web Notification• モバイルOSでは、通知機能はOS標準で搭載され る傾向にある • メール通知など
  • 34.
    Web Notification// Firefoxでは、mozNotification// Chromeでは、webkitNotificationvar notification = navigator.notification(“title”, “message”);notification.onclose = function() { // close時};
  • 35.
    Hardware Integration• 実装が進んでいる物 • Geo Location • Device Orientation (Accelerometer) • Media Capture• 仕様策定中 • Battey Status Event • Streaming API
  • 36.
    Device Orientation• ほとんどのデバイスに使われる傾きセンサーの値 を検出する window.addEventListner(“deviceorientation”, function(event) { alpha = event.alpha; beta = event.beta; gamma = event.gamma; }, true);
  • 37.
    Media Capture• <input type=“file”>でキャプチャデバイスを操 作• カメラや音声などを取り込む <input type=“file” accept=“image/*” capture=“camera”> • Android 3.0 Web Browser <input type=“file” accept=“image/*;capture=camera”>
  • 38.
    その他•Battery Status API• Steaming API (Web Real-Time Communication APIs)
  • 39.
    Bettery Status API• 電源の状態を取得 • ACで接続中とかバッテリ駆動中とか• バッテリの残量を取得
  • 40.
    その他APIs•Personal Information • Contact API – address book • Calendar API – calendar• Communication • Messaging API – email / SMS • P2P• Graphics • Media Query
  • 41.
    API for mediaquery• Media Query • 画面の解像度などでCSSを切り替える <link rel="stylesheet" type="text/css" media="screen and (min-device-width: 480px)" href="480px.css“>
  • 42.
    API for mediaquery• MatchMedia • DOMでmedia queryを利用する if (window.matchMedia( "(min-device-width: 400px)").matches) { // min-device-width < 400px } else { } // イベントリスナ形式 window.matchMedia( "(min-width: 400px)").addListener( function() { });
  • 43.
    APIs•セキュリティを考慮すべき場所においては、仕様 策定には非常に慎重 • Contact API • Messaging API• ユーザーに許可を求める方式は正しいのか? • Web Appsに関しては?
  • 46.

[8]ページ先頭

©2009-2025 Movatter.jp