SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
Service Workers

PUSH API Hands-on
中川武憲
Supported by
http://www.infiniteloop.co.jp/
社内勉強会資料 2015/04/17
自己紹介
中川武憲 @ww24
北海道科学大学 B4
IL アルバイト 4年目突入
来年から渋谷の緑色の会社勤務
Agenda
・Service Workers 概要  5~6min
・Service Workers 活用例   1min
・Hands-on      40~50min
Service Workers
Web Workers なら
聞いたことある
Web Workers
ブラウザ上の JavaScript でマルチスレッドを扱
う仕組み。
フロント(UI スレッド)とは別にバックグラウン
ドで処理を走らせることが可能。
ブラウザをフリーズさせない
Demo
π = 4 × arctan1 を利用して π の値を求める。
http://dev.ww24.jp/javascript/PI/
本題
Service Workers
Web Workers はページを表示している間しか
バックグラウンドで動かせない!
Service Workers
Web Workers はページを開いている間しか
動かせない!
Service Workers ならページを閉じていても
稼働する。
Service Workers で出来る事
・Cache
 ApplicationCache よりも高度なキャッシュ機能
・Push
 PUSH 通知
・Sync
 指定した任意のタイミングで起動
http://www.w3.org/TR/service-workers/
PUSH 通知
Chrome は 42 から対応
Web の PUSH 通知事情
今までも Notification API を使う事で、通知は可能。
WebSocket 等でリアルタイム通信を行い、
Notification API でネイティブのような通知を発行。
ただし、
ブラウザを開いている時だけ。
Service Workers PUSH API
GCM
Server
Google Cloud Messaging
(Chrome の場合)
イベント通知
イベント通知
データ取得
イベ
ン
ト
通
知
スマホ等の

ブラウザ
①
②
③
昨日、Chrome 42 リリース!
http://googlechromereleases.blogspot.jp/2015/04/stable-channel-update_14.html
http://googlechromereleases.blogspot.jp/2015/04/chrome-for-android-update.html
Chrome for Android は数日中にリリース予定
本日、Chrome for Android 42
リリース!
PUSH API を実際に試そう!
bit.ly/pdemo14
bit.ly/pdemo14
bit.ly/pdemo14
bit.ly/pdemo14
bit.ly/pdemo14
bit.ly/pdemo14
bit.ly/pdemo14
PUSH API 活用例
突然ですが…
薬、飲み忘れませんか?
僕はよく飲み忘れます。
Okusureminder
お薬リマインダー
お薬の飲み忘れ防止アプリ
薬を飲む時間になると、
PUSH API を利用してブラウザに通知。
ネイティブアプリにしない
理由
薬を常時服用しない為、習慣化していなくて
飲み忘れる人をターゲットとしたアプリ。
↓
薬が不要な時は使わない。
↓
毎日、毎週、毎月は使わない。
使用頻度が低い

↓

ネイティブアプリに
するほどではない
(使わない時は全く使わないし、使うときは頻繁に使う)
Demo.
進 🙅でした。
https://github.com/ww24/okusureminder
Hands-on
Google Cloud Messaging
参考:
Google Cloud メッセージング(GCM)の使用
- Google Play デベロッパー ヘルプ
https://support.google.com/googleplay/
android-developer/answer/2663268?hl=ja
https://console.developers.google.com/
↑ Developer Console を開きます。
※このスクリーンショットは古いので、現在の UI とは
異なっている箇所が何点かありますが、雰囲気は同じ
なので察してください。
https://console.developers.google.com/
https://console.developers.google.com/
gcm_sender_id
https://console.developers.google.com/
両方有効化する!
https://console.developers.google.com/
https://console.developers.google.com/
https://console.developers.google.com/
https://console.developers.google.com/
0.0.0.0/0 を設定すると、全ての IP アドレスを許可
https://console.developers.google.com/
API Key
準備終わり
Coding
http://git.io/vvDyb
manifest.json
{
"name": "push test",
"short_name": "push!",
"icons": [{
"src": "html5.png",
"sizes": "64x64",
"type": "image/png"
}],
"start_url": "/",
"display": "standalone",
"gcm_sender_id": "849903130382",
"gcm_user_visible_only": true
}
gcm_sender_id
Web Server
Service Workers を試すには、 Web Server が
必要。
ホスト名が localhost の場合に限って HTTP
Server でも使える。

それ以外の場合は HTTPS Server が必要。
簡単に HTTP Server を
用意する方法
$ python -m SimpleHTTPServer
もしくは
$ php -S localhost:8000
ブラウザで開く
http://localhost:8000/
F12

or

Cmd + Alt + i
Developer Tools を開く
コロン : の右側が subscription ID
Debug
Debug
新しいタブで開く
chrome://serviceworker-internals/
Push Event を発火
通知結果
実際の Push Event の発火方法
curl --header "Authorization: key=API_KEY"
--header "Content-Type: application/json"
https://android.googleapis.com/gcm/send
-d "{"registration_ids":["SUBSCRIPTION_ID"]}"
Invoke-RestMethod -Headers @{Authorization="key=API_KEY"}
-ContentType "application/json"                
-Uri "https://android.googleapis.com/gcm/send" -Method POST
-Body "{`"registration_ids`":[`"SUBSCRIPTION_ID`"]}"
Mac, Linux の場合
Windows (PowerShell) の場合
(入力する際に改行は不要です)
参考資料 Ⅰ
Service Worker の紹介: Service Worker の使い方 - HTML5 Rocks
http://www.html5rocks.com/ja/tutorials/service-worker/
introduction/
ServiceWorker API - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/ServiceWorker_API
Push Notifications on the Open Web
http://updates.html5rocks.com/2015/03/push-notificatons-on-the-
open-web
参考資料 Ⅱ
Is ServiceWorker ready? (ブラウザの対応状況)
https://jakearchibald.github.io/isserviceworkerready/
W3C Working Draft
http://www.w3.org/TR/service-workers/
GCM HTTP Connection Server | Android Developers
https://developer.android.com/google/gcm/http.html
Chrome - Service Worker 開発するときのデバッグ方法 - Qiita
http://qiita.com/tmtysk/items/f77e31d6e9380e1c94a2

Weitere ähnliche Inhalte

Was ist angesagt?

Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会
VOYAGE GROUP
 

Was ist angesagt? (20)

svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発
 
React.js + Flux
React.js + FluxReact.js + Flux
React.js + Flux
 
jQueryを中心としたJavaScript
jQueryを中心としたJavaScriptjQueryを中心としたJavaScript
jQueryを中心としたJavaScript
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
 
a-sap09「a-blog cmsとWordPress」
a-sap09「a-blog cmsとWordPress」a-sap09「a-blog cmsとWordPress」
a-sap09「a-blog cmsとWordPress」
 
DevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJSDevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJS
 
イマドキのフロントエンドエンジニアの道具箱
イマドキのフロントエンドエンジニアの道具箱イマドキのフロントエンドエンジニアの道具箱
イマドキのフロントエンドエンジニアの道具箱
 
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会
 
React を導入した フロントエンド開発
React を導入したフロントエンド開発React を導入したフロントエンド開発
React を導入した フロントエンド開発
 
a-sap08「a-blog cmsとMovable Type」
a-sap08「a-blog cmsとMovable Type」a-sap08「a-blog cmsとMovable Type」
a-sap08「a-blog cmsとMovable Type」
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころ
 
SaCSS vol.79「CMSがらみのサイトの受発注で確認すべきこと」
SaCSS vol.79「CMSがらみのサイトの受発注で確認すべきこと」SaCSS vol.79「CMSがらみのサイトの受発注で確認すべきこと」
SaCSS vol.79「CMSがらみのサイトの受発注で確認すべきこと」
 
a-sap10「モジュールIDを理解する」
a-sap10「モジュールIDを理解する」a-sap10「モジュールIDを理解する」
a-sap10「モジュールIDを理解する」
 
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
 
Reactつかってみた
ReactつかってみたReactつかってみた
Reactつかってみた
 
a-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなすa-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなす
 
S14 t3 yosuke_yamashita
S14 t3 yosuke_yamashitaS14 t3 yosuke_yamashita
S14 t3 yosuke_yamashita
 
( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!( ゚∀゚)o彡° Flux! Flux!
( ゚∀゚)o彡° Flux! Flux!
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
 
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみようa-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
a-blog cms 勉強会 in 札幌 x SaCSS 2016 投稿画面を改良してみよう
 

Ähnlich wie Service Workers Push API Hands-on

2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
Operation Lab, LLC.
 
Soft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイントSoft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイント
Shuichi Yukimoto
 

Ähnlich wie Service Workers Push API Hands-on (20)

Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
 
PWAがたぶんくる
PWAがたぶんくるPWAがたぶんくる
PWAがたぶんくる
 
React way at_eight
React way at_eightReact way at_eight
React way at_eight
 
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirlsHello Girl's World!!@女子エンジニアLT会 #dotsgirls
Hello Girl's World!!@女子エンジニアLT会 #dotsgirls
 
Com camp2014
Com camp2014Com camp2014
Com camp2014
 
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!
 
Let's try to use Background sync
Let's try to use Background syncLet's try to use Background sync
Let's try to use Background sync
 
Enterprise x AngularJS
Enterprise x AngularJSEnterprise x AngularJS
Enterprise x AngularJS
 
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
2014-07-26 jawsug-chiba ドキュメントを書こう! 運用自動化時代のドキュメンテーション
 
OpenCV on mobile
OpenCV on mobileOpenCV on mobile
OpenCV on mobile
 
爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話爆速フレームワークでREST APIを作った話
爆速フレームワークでREST APIを作った話
 
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
 
OpenShift のある生活
OpenShift のある生活OpenShift のある生活
OpenShift のある生活
 
HTML5とか勉強会#48 ionic
HTML5とか勉強会#48 ionicHTML5とか勉強会#48 ionic
HTML5とか勉強会#48 ionic
 
Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809
 
スキトラ Spring + mybatis
スキトラ Spring + mybatisスキトラ Spring + mybatis
スキトラ Spring + mybatis
 
VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発VueとAWSAppSyncで始めるチャットアプリ開発
VueとAWSAppSyncで始めるチャットアプリ開発
 
Soft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイントSoft layer APIの使い方と実装のポイント
Soft layer APIの使い方と実装のポイント
 
20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 

Mehr von Takenori Nakagawa

Mehr von Takenori Nakagawa (20)

TensorFlow 入門
TensorFlow 入門TensorFlow 入門
TensorFlow 入門
 
機械学習を用いたパターンロック認証の強化手法
機械学習を用いたパターンロック認証の強化手法機械学習を用いたパターンロック認証の強化手法
機械学習を用いたパターンロック認証の強化手法
 
Docker で Deep Learning
Docker で Deep LearningDocker で Deep Learning
Docker で Deep Learning
 
GitHub Travis-CI Go!
GitHub Travis-CI  Go!GitHub Travis-CI  Go!
GitHub Travis-CI Go!
 
01.app
01.app01.app
01.app
 
OpenGL 3DCG
OpenGL 3DCGOpenGL 3DCG
OpenGL 3DCG
 
WebGL
WebGLWebGL
WebGL
 
01:artificial life
01:artificial life01:artificial life
01:artificial life
 
後期05
後期05後期05
後期05
 
後期03
後期03後期03
後期03
 
後期02
後期02後期02
後期02
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
phpck
phpckphpck
phpck
 
Git 初心者のための GitHub Pages
Git 初心者のための GitHub PagesGit 初心者のための GitHub Pages
Git 初心者のための GitHub Pages
 
OpenIL vol.1
OpenIL vol.1OpenIL vol.1
OpenIL vol.1
 
後期講座08
後期講座08後期講座08
後期講座08
 
後期講座07
後期講座07後期講座07
後期講座07
 
後期講座05
後期講座05後期講座05
後期講座05
 
後期講座03
後期講座03後期講座03
後期講座03
 
後期講座01
後期講座01後期講座01
後期講座01
 

Service Workers Push API Hands-on