SlideShare a Scribd company logo
Create a Web
future with
ServiceWorker
トークテーマ
● PWAの現状
● Offline Web App
● DOMとの連携
● バックグラウンド通信
Yoshiki
Kobayashi
ferret engineer
@ykyk1218
明日できることは、明日やる
マーケティング・テクノロジー
1.PWA の現状
もうすぐそこまで
PWAが来るって言っているエンジニアは
今すぐ辞めろ
結局 PWA は来るの?来ないの?
速報
本日(2018/04/02)のiOS11.3のリリースに伴い
ServiceWorker対応済みのSafariもリリースされ
ました!
参考
https://developer.apple.com/library/content/releasenotes/General/WhatsNewIn
Safari/Articles/Safari_11_1.html
ServiceWorkerできること
› レスポンス動的書き換え
› プッシュ通知
› オフラインキャッシュ
› バックグラウンド通信
2. Offline Web app
Cache storage
オフラインキャッシュの仕組み
Service
Worker
ServiceWorkerがローカルプロキシとして動く
オフラインキャッシュの仕組み
Service
Worker
キャッシュがあれば戻す
オフライン対応したサイト
https://ykyk1218.github.io/
こちらもどうぞ
ServiceWokerでオフライン対応サイトをつくる
2. DOMとの連携
click,mouseover,change...etc
Service
Worker
イベント発火
postMessage
window.onload = function() {
target = document.querySelector(".next")
if(target) {
target.addEventListener('mousedown', function(event)
{
navigator.serviceWorker
.controller
.postMessage('/list.html')
})
}
}
クライアント側js
ServiceWorker側js
self.addEventListener('message', function(event) {
fetch(new Request(event.data, {mode: 'no-cors'}))
.then(function(response) {
caches.open(CACHE_NAME).then(function(cache) {
cache.put(event.data, response)
})
})
})
イベント発火でキャッシュ生成
https://ykyk1218.github.io/
3. Background
SyncEvent
バックグラウンド通信の例
オフライン オンライン
Indexed db
など
データ取得
syncイベント発火
クライアント側js
function sendMessageWithSync(data) {
addIndexedDb(data).then(function(result) {
return
navigator.serviceWorker.ready.then(function(reg) {
return reg.sync.register('send-talk')
})
})
}
//sendMessageWithSyncはsubmit時に呼ばれる
//dataに入力データ
//addIndexedDbはindexeddbに登録するメソッドを用意
ServiceWorker側js
self.addEventListener('sync', function(event) {
if(event.tag == 'send-talk') {
event.waitUntil(
getMessage().then(function(request) {
return fetch(url,{method:'POST', body: JSON.stringify(data),
credentials: 'include', mode: 'no-cors',
headers: {'content-type': 'application/json'}
})
})
.then(function() {
return deleteMessage(1)
})
)
}
})
//getMessage: indexeddbからデータを取得する
ServiceWorker側js
self.addEventListener('sync', function(event) {
if(event.tag == 'send-talk') {
event.waitUntil(
getMessage().then(function(request) {
return fetch(url,{method:'POST', body: JSON.stringify(data),
credentials: 'include', mode: 'no-cors',
headers: {'content-type': 'application/json'}
})
})
.then(function() {
return deleteMessage(1)
})
)
}
})
実行が完了するまで待つ
オフラインの入力内容をオンライン
になったら送信する
https://ykyk1218.github.io/
デバッグつらい(T T)
まとめ
ServiceWorkerからキャッシュを取得すること
でサイトを爆速にできる
キャッシュやバックグラウンド通信によりオン
ライン、オフラインの状態を意識させずに操作
ができる

More Related Content

PPTX
PowerShellでFunction Appしよう!
PDF
無料で始めるアプリのバックエンド開発
PPTX
smartFXにおけるApache Cordovaの活用について
KEY
スマートフォンアプリケーション開発の最新動向
PDF
Vtecxlt20151201
PPTX
Cognitive serviceのすゝめ
PDF
はじめてのモバイルウェブアプリ 1
PDF
楽ちんユーザー認証付Spa
PowerShellでFunction Appしよう!
無料で始めるアプリのバックエンド開発
smartFXにおけるApache Cordovaの活用について
スマートフォンアプリケーション開発の最新動向
Vtecxlt20151201
Cognitive serviceのすゝめ
はじめてのモバイルウェブアプリ 1
楽ちんユーザー認証付Spa

What's hot (20)

PDF
はじめてのモバイルウェブアプリ 2
PPTX
WordPressサイトをスマホアプリにしちゃおう!
PDF
スマホアプリ開発者のためのWeb api開発入門の入門
PDF
スキスキIonic
PPTX
APIモック3分クッキング
PDF
KLabのSI事業について
PPTX
Hello, React!! まで導く Reactの基礎
PPTX
Hacker's meetup boost_vol1発表資料_20150902
PPTX
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
PPTX
オフラインWebアプリケーションのつくりかた
PDF
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
PDF
もっと良くなるHTMLアプリケーション設計と実装
PPTX
PWAがたぶんくる
KEY
みなさんがHtml5をやらなくていい3つの理由
PDF
テックブログのすゝめ -アウトプットで知識習得サイクルを回そう-
PPTX
SendGrid Night in Fukuoka #1
PDF
PHP実践 ~外部APIを使って情報を取得する~
PDF
ネットワークについて
PPTX
Salesforce1 アプリをGruntでデプロイ
PDF
JAWSUG初心者支部 AWSの勉強の仕方
はじめてのモバイルウェブアプリ 2
WordPressサイトをスマホアプリにしちゃおう!
スマホアプリ開発者のためのWeb api開発入門の入門
スキスキIonic
APIモック3分クッキング
KLabのSI事業について
Hello, React!! まで導く Reactの基礎
Hacker's meetup boost_vol1発表資料_20150902
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
オフラインWebアプリケーションのつくりかた
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
もっと良くなるHTMLアプリケーション設計と実装
PWAがたぶんくる
みなさんがHtml5をやらなくていい3つの理由
テックブログのすゝめ -アウトプットで知識習得サイクルを回そう-
SendGrid Night in Fukuoka #1
PHP実践 ~外部APIを使って情報を取得する~
ネットワークについて
Salesforce1 アプリをGruntでデプロイ
JAWSUG初心者支部 AWSの勉強の仕方
Ad

Similar to ServiceWorkerでつくるWebの未来 (20)

PDF
Service worker が拓く mobile web の新しいかたち
PPTX
PWA 総まとめ @ABC 2018 Spring
PDF
Let's try to use Background sync
PPTX
Challenge PWA!! WordCamp Tokyo 2018
PDF
Offline Drupal with progressive web app
PPTX
Service Workerとは何者か
PDF
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
PPTX
Challenge PWA!! TRY PWA4WP!
PDF
Service Worker を知る
PPTX
wordcamp haneda 20190420 Apps Based on WordPress
PDF
Service workerとwebプッシュ通知
PDF
Service Workers
PDF
進化する Web ~ Progressive Web Apps の実装と応用 ~
PDF
PWA for beginner#2
PPTX
Pwaを作ってみる(ejリクールトlt 2017/10/18)
PPTX
PWA has come!! / 2019/2/9 ABCD 浜松
PDF
Service Workers Push API Hands-on
PPTX
PWA A Go-Go !! @ABC2018A 20181013
PPTX
PWA4WP の ServiceWorker
PPTX
Cache 自由自在
Service worker が拓く mobile web の新しいかたち
PWA 総まとめ @ABC 2018 Spring
Let's try to use Background sync
Challenge PWA!! WordCamp Tokyo 2018
Offline Drupal with progressive web app
Service Workerとは何者か
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
Challenge PWA!! TRY PWA4WP!
Service Worker を知る
wordcamp haneda 20190420 Apps Based on WordPress
Service workerとwebプッシュ通知
Service Workers
進化する Web ~ Progressive Web Apps の実装と応用 ~
PWA for beginner#2
Pwaを作ってみる(ejリクールトlt 2017/10/18)
PWA has come!! / 2019/2/9 ABCD 浜松
Service Workers Push API Hands-on
PWA A Go-Go !! @ABC2018A 20181013
PWA4WP の ServiceWorker
Cache 自由自在
Ad

ServiceWorkerでつくるWebの未来