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

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

More Related Content

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

What's hot

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

Viewers also liked

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

Similar to Mobile Web

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

More from Makoto Kato

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

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