狠狠撸

狠狠撸Share a Scribd company logo
Service Workerとの戦い?
実装編
ヤフー株式会社
マーケティングソリューションカンパニー?
開発本部エクスペリエンスデザイン部テクニカルデザイン?
柴田 和祈
photo by halfrain
2015.3.10?SCRIPTY#3?~フロントエンド紳士?淑女のための勉強会~
柴田 和祈
@shibe97
Web Designer / Frontend Engineer
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Service Workerとは
? ブラウザのバックグラウンドで動作する
JavaScript環境
? フォアグラウンドとは別スレッド
? サーバへのリクエストをキャッチできる
? 動かせる環境は今のところ限られている?
https://jakearchibald.github.io/isserviceworkerready/
? localhost、またはhttps環境でのみ動く
画面 サーバ画面 サーバ
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
画面 サーバ画面 サーバ
Service
Worker
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
画面 サーバ
Service
Worker
クライアントサイド サーバサイド
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
今日やりたいこと
? データのキャッシュ
? Ajax通信のモックテスト
? 値のバリデーションチェック
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
今日やりたいこと
? データのキャッシュ
? Ajax通信のモックテスト
? 値のバリデーションチェック
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Ajax通信のモックテストの流れ
1. Service Workerの登録
2. Ajax通信
3. Service Workerがリクエストをキャッチ
4. ダミーJsonを返す
5. 画面に表示
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Ajax通信のモックテスト
1. Service Workerの登録
navigator.serviceWorker.register(	
 ?
	
 ? "service-?‐worker.js",	
 ?
	
 ? {scope:	
 ?"./"}	
 ?
)	
 ?
.then(function(result){	
 ?
	
 ? //	
 ?登録成功	
 ?
})	
 ?
.catch(function(result){	
 ?
	
 ? //	
 ?登録失敗	
 ?
});
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
つまずきポイント#1
root
├── index.html
└── sw
└── test.json
test.jsonへのリクエストをキャッチしたいから?
スコープを「/sw」にする
test.jsonへのリクエストをindex.htmlから行なうので?
スコープを「/」にする
○
【スコープ】
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
つまずきポイント#1
? Service Workerはスコープ内からのリクエストを
キャッチする
? リクエスト先がスコープ内にあるかどうかは関係ない
? スコープを指定していない場合はルート以下?
すべてがスコープとなる
【スコープ】
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Ajax通信のモックテスト
$.ajax({	
 ?
	
 ? url:	
 ?"/success",	
 ?
	
 ? dataType:	
 ?"json"	
 ?
})	
 ?
.done(function(result){	
 ?
	
 ? //	
 ?成功処理	
 ?
})	
 ?
.fail(function(result){	
 ?
	
 ? //	
 ?失敗処理	
 ?
});
2. Ajax通信
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Ajax通信のモックテスト
self.onfetch	
 ?=	
 ?function(event){	
 ?
	
 ? var	
 ?requestURL	
 ?=	
 ?new	
 ?URL(event.request.url);	
 ?
	
 ? if(requestURL.pathname.match("/success")){	
 ?
!
	
 ? 	
 ? //	
 ?success以外のリクエストは素通りさせる	
 ?
!
	
 ? }	
 ?
};
3. Service Workerがリクエストをキャッチ
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
つまずきポイント#2
? リクエストのキャッチが可能な状態になるのは?
ロードのタイミング
? ワーカーが登録されても、?
リロードしなければリクエストはキャッチされない
? リロードすると、index.htmlのリクエストが?
キャッチされ、本物のindex.htmlが取得できない
- URL判定でindex.htmlは素通りさせる必要がある
【リクエストのキャッチ】
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Ajax通信のモックテスト
var	
 ?result	
 ?=	
 ?[	
 ?
	
 ? {id:	
 ?1,	
 ?name:	
 ?"柴田",	
 ?mail:	
 ?"shibata@scripty.com"},	
 ?
	
 ? {id:	
 ?2,	
 ?name:	
 ?"小川",	
 ?mail:	
 ?"ogawa@scripty.com"},	
 ?
	
 ? {id:	
 ?3,	
 ?name:	
 ?"森本",	
 ?mail:	
 ?"morimoto@scripty.com"}	
 ?
];	
 ?
var	
 ?response	
 ?=	
 ?new	
 ?Response(JSON.stringify(result),	
 ?{	
 ?
	
 ? status:	
 ?200,	
 ?
	
 ? statusText:	
 ?"OK",	
 ?
	
 ? headers:	
 ?{	
 ?
	
 ? 	
 ? "Content-?‐Type":	
 ?"application/json"	
 ?
	
 ? }	
 ?
});	
 ?
event.respondWith(response);
4. ダミーJSONを返す
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
つまずきポイント#3
? JSON形式で引数に渡してしまうと上手くいかない
ので、文字列に変換する
? ヘッダー情報を与える必要がある
? レスポンス処理が行なわれない場合は、予定通りの?
fetchが行なわれる
【レスポンスの生成】
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Ajax通信のモックテスト
5. 画面に表示
$.ajax({	
 ?
	
 ? url:	
 ?"/success",	
 ?
	
 ? dataType:	
 ?"json"	
 ?
})	
 ?
.done(function(result){	
 ?
	
 ? //	
 ?成功処理	
 ?
})	
 ?
.fail(function(result){	
 ?
	
 ? //	
 ?失敗処理	
 ?
});
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
今日やりたいこと
? データのキャッシュ
? Ajax通信のモックテスト
? 値のバリデーションチェック
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
値のバリデーションチェックの流れ
1. Service Workerの登録
2. Ajax通信
3. Service Workerがリクエストをキャッチ
4. リクエストのパラメータをチェック
5. チェック結果を返す
6. 画面に表示
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
値のバリデーションチェック
1. Service Workerの登録
navigator.serviceWorker.register("service-?‐worker.js")	
 ?
.then(function(result){	
 ?
	
 ? //	
 ?登録成功	
 ?
})	
 ?
.catch(function(result){	
 ?
	
 ? //	
 ?登録失敗	
 ?
});
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
値のバリデーションチェック
$.ajax({	
 ?
	
 ? type:	
 ?"POST",	
 ?
	
 ? url:	
 ?"/success",	
 ?
	
 ? dataType:	
 ?"json",	
 ?
	
 ? data:	
 ?{	
 ?
	
 ? 	
 ? name:	
 ?$("#input_name").val(),	
 ?
	
 ? 	
 ? tel:	
 ?$("#input_tel").val()	
 ?
	
 ? }	
 ?
})	
 ?
.done(function(result){	
 ?
	
 ? //	
 ?成功処理	
 ?
})	
 ?
.fail(function(result){	
 ?
	
 ? //	
 ?失敗処理	
 ?
});
2. Ajax通信
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
値のバリデーションチェック
3. Service Workerがリクエストをキャッチ
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
self.onfetch	
 ?=	
 ?function(event){	
 ?
	
 ? var	
 ?requestURL	
 ?=	
 ?new	
 ?URL(event.request.url);	
 ?
	
 ? if(requestURL.pathname.match("/success")){	
 ?
!
	
 ? 	
 ? //	
 ?処理	
 ?
!
	
 ? }	
 ?
};
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
値のバリデーションチェック
event.request.text().then(function(data){	
 ?
	
 ? var	
 ?jsonData	
 ?=	
 ?getConverted(data);	
 ?//	
 ?JSON形式に変換	
 ?
	
 ? var	
 ?errors	
 ?=	
 ?validate(jsonData);	
 ?//	
 ?バリデーション	
 ?
});	
 ?
!
var	
 ?validate	
 ?=	
 ?function(data){	
 ?
	
 ? var	
 ?errors	
 ?=	
 ?[];	
 ?
	
 ? if(data.name	
 ?===	
 ?""){	
 ?
	
 ? 	
 ? errors.push("name:empty");	
 ?
	
 ? }	
 ?
	
 ? if(data.tel.match(/[^0-?‐9]+/)){	
 ?
	
 ? 	
 ? errors.push("tel:notNumber");	
 ?
	
 ? }	
 ?
	
 ? //	
 ?等々	
 ?
	
 ?	
 ?	
 ?return	
 ?errors;	
 ?
};
4. リクエストのパラメータをチェック
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
つまずきポイント#4
? リクエストパラメータは event.request.text()
で取得する
? console.log で event の中身を見ても?
パラメータが入っていない
【パラメータのチェック】
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
値のバリデーションチェック
5. チェック結果を返す
event.respondWith(	
 ?
	
 ? event.request.text().then(function(data){	
 ?
	
 ? 	
 ? var	
 ?jsonData	
 ?=	
 ?getConverted(data);	
 ?
	
 ? 	
 ? var	
 ?errors	
 ?=	
 ?validate(jsonData);	
 ?
	
 ? 	
 ? return	
 ?new	
 ?Response(JSON.stringify(errors),	
 ?{	
 ?
	
 ? 	
 ? 	
 ? status:	
 ?200,	
 ?
	
 ? 	
 ? 	
 ? statusText:	
 ?"OK",	
 ?
	
 ? 	
 ? 	
 ? headers:	
 ?{	
 ?
	
 ? 	
 ? 	
 ? 	
 ? "Content-?‐Type":	
 ?"application/json"	
 ?
	
 ? 	
 ? 	
 ? }	
 ?
	
 ? 	
 ? });	
 ?
	
 ? })	
 ?
)	
 ?
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
つまずきポイント#5
? Promise後に respondWith() すると動かない
? respondWith() してからPromise処理
? respondWith() はonfetch内で1度しか使えない
【Promise処理とレスポンス作成】
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
まとめ
? スコープの指定には注意が必要?
スコープ内では特定のリクエストのみキャッチさせる
? リクエストのキャッチが可能な状態になるのは?
ロードのタイミング
? リクエストパラメータは event.request.text() ?
で取得する
? Promise処理は respondWith() の後で行なう
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
参考資料
? Google Chromeサンプル?
https://github.com/GoogleChrome/samples/tree/gh-pages/service-worker
? Service Workerの紹介?
http://www.html5rocks.com/ja/tutorials/service-worker/introduction/
? Service Workerを使ったXHRのモックテスト?
http://jxck.hatenablog.com/entry/response-injection
? スペシャルアドバイザー @nhiroki_氏
!

More Related Content

What's hot (20)

PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
?
俺のTerraform CI/CD ライフサイクル
俺のTerraform CI/CD ライフサイクル俺のTerraform CI/CD ライフサイクル
俺のTerraform CI/CD ライフサイクル
HonMarkHunt
?
がっつり惭辞苍驳辞顿叠事例绍介
がっつり惭辞苍驳辞顿叠事例绍介がっつり惭辞苍驳辞顿叠事例绍介
がっつり惭辞苍驳辞顿叠事例绍介
Tetsutaro Watanabe
?
週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御
Namba Kazuo
?
REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門
Keisuke Tsukagoshi
?
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
Amazon Web Services Japan
?
Zaim 500万ユーザに向けて?Aurora 編?
Zaim 500万ユーザに向けて?Aurora 編?Zaim 500万ユーザに向けて?Aurora 編?
Zaim 500万ユーザに向けて?Aurora 編?
Wataru Nishimoto
?
碍补蹿办补と笔耻濒蝉补谤
碍补蹿办补と笔耻濒蝉补谤碍补蹿办补と笔耻濒蝉补谤
碍补蹿办补と笔耻濒蝉补谤
驰补丑辞辞!デベロッパーネットワーク
?
Apache Spark + Arrow
Apache Spark + ArrowApache Spark + Arrow
Apache Spark + Arrow
Takeshi Yamamuro
?
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
?
イマドキ!ユースケース别に见る础奥厂?滨辞罢?への接続パターン
イマドキ!ユースケース别に见る础奥厂?滨辞罢?への接続パターンイマドキ!ユースケース别に见る础奥厂?滨辞罢?への接続パターン
イマドキ!ユースケース别に见る础奥厂?滨辞罢?への接続パターン
seiichi arai
?
知っているようで知らない笔础惭のお话
知っているようで知らない笔础惭のお话知っているようで知らない笔础惭のお话
知っているようで知らない笔础惭のお话
Serverworks Co.,Ltd.
?
HBase at LINE
HBase at LINEHBase at LINE
HBase at LINE
Shun Nakamura
?
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
NTT Software Innovation Center
?
クラウド环境下における础笔滨リトライ设计
クラウド环境下における础笔滨リトライ设计クラウド环境下における础笔滨リトライ设计
クラウド环境下における础笔滨リトライ设计
Kouji YAMADA
?
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速あいまい全文検索システム
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速あいまい全文検索システム惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速あいまい全文検索システム
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速あいまい全文検索システム
Kouhei Sutou
?
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
?
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
Ryosuke Uchitate
?
飞别产エンジニアのためのはじめての谤别诲颈蝉
飞别产エンジニアのためのはじめての谤别诲颈蝉飞别产エンジニアのためのはじめての谤别诲颈蝉
飞别产エンジニアのためのはじめての谤别诲颈蝉
nasa9084
?
厂飞补驳驳别谤で始めるモデルファーストな础笔滨开発
厂飞补驳驳别谤で始めるモデルファーストな础笔滨开発厂飞补驳驳别谤で始めるモデルファーストな础笔滨开発
厂飞补驳驳别谤で始めるモデルファーストな础笔滨开発
Takuro Sasaki
?
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
Uptime Technologies LLC (JP)
?
俺のTerraform CI/CD ライフサイクル
俺のTerraform CI/CD ライフサイクル俺のTerraform CI/CD ライフサイクル
俺のTerraform CI/CD ライフサイクル
HonMarkHunt
?
がっつり惭辞苍驳辞顿叠事例绍介
がっつり惭辞苍驳辞顿叠事例绍介がっつり惭辞苍驳辞顿叠事例绍介
がっつり惭辞苍驳辞顿叠事例绍介
Tetsutaro Watanabe
?
週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御週末趣味のAWS Transit Gatewayでの経路制御
週末趣味のAWS Transit Gatewayでの経路制御
Namba Kazuo
?
REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門REST API に疲れたあなたへ贈る GraphQL 入門
REST API に疲れたあなたへ贈る GraphQL 入門
Keisuke Tsukagoshi
?
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
Amazon Web Services Japan
?
Zaim 500万ユーザに向けて?Aurora 編?
Zaim 500万ユーザに向けて?Aurora 編?Zaim 500万ユーザに向けて?Aurora 編?
Zaim 500万ユーザに向けて?Aurora 編?
Wataru Nishimoto
?
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
?
イマドキ!ユースケース别に见る础奥厂?滨辞罢?への接続パターン
イマドキ!ユースケース别に见る础奥厂?滨辞罢?への接続パターンイマドキ!ユースケース别に见る础奥厂?滨辞罢?への接続パターン
イマドキ!ユースケース别に见る础奥厂?滨辞罢?への接続パターン
seiichi arai
?
知っているようで知らない笔础惭のお话
知っているようで知らない笔础惭のお话知っているようで知らない笔础惭のお话
知っているようで知らない笔础惭のお话
Serverworks Co.,Ltd.
?
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
次世代の高速メモリストレージ利用に向けたソフトウェアのモダナイゼーション
NTT Software Innovation Center
?
クラウド环境下における础笔滨リトライ设计
クラウド环境下における础笔滨リトライ设计クラウド环境下における础笔滨リトライ设计
クラウド环境下における础笔滨リトライ设计
Kouji YAMADA
?
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速あいまい全文検索システム
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速あいまい全文検索システム惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速あいまい全文検索システム
惭测厂蚕尝?笔辞蝉迟驳谤别厂蚕尝だけで作る高速あいまい全文検索システム
Kouhei Sutou
?
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
?
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
Ryosuke Uchitate
?
飞别产エンジニアのためのはじめての谤别诲颈蝉
飞别产エンジニアのためのはじめての谤别诲颈蝉飞别产エンジニアのためのはじめての谤别诲颈蝉
飞别产エンジニアのためのはじめての谤别诲颈蝉
nasa9084
?
厂飞补驳驳别谤で始めるモデルファーストな础笔滨开発
厂飞补驳驳别谤で始めるモデルファーストな础笔滨开発厂飞补驳驳别谤で始めるモデルファーストな础笔滨开発
厂飞补驳驳别谤で始めるモデルファーストな础笔滨开発
Takuro Sasaki
?

Similar to Service Workerとの戦い ~ 実装編 ~ #scripty03 (20)

Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
?
Spring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へSpring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へ
Masatoshi Fujino
?
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
オラクルエンジニア通信
?
JavaScript 実践講座 Framework, Tool, Performance
JavaScript 実践講座 Framework, Tool, PerformanceJavaScript 実践講座 Framework, Tool, Performance
JavaScript 実践講座 Framework, Tool, Performance
クラスメソッド株式会社
?
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
?
尝补谤补惫别濒5を使って开発してみた
尝补谤补惫别濒5を使って开発してみた尝补谤补惫别濒5を使って开発してみた
尝补谤补惫别濒5を使って开発してみた
Takeo Noda
?
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
?
AWS Expert Online appsyncを使ったServerlessアーキテクチャ
AWS Expert Online appsyncを使ったServerlessアーキテクチャAWS Expert Online appsyncを使ったServerlessアーキテクチャ
AWS Expert Online appsyncを使ったServerlessアーキテクチャ
Amazon Web Services Japan
?
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Hirokazu Narita
?
20220729 AAdK15 C&S 永瀬 A360 API 【配布用】.pdf
20220729 AAdK15 C&S 永瀬 A360 API 【配布用】.pdf20220729 AAdK15 C&S 永瀬 A360 API 【配布用】.pdf
20220729 AAdK15 C&S 永瀬 A360 API 【配布用】.pdf
ssuser033561
?
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019
MKT-INTHEFOREST
?
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
?
笔贬笔における滨/翱多重化と测颈别濒诲
笔贬笔における滨/翱多重化と测颈别濒诲笔贬笔における滨/翱多重化と测颈别濒诲
笔贬笔における滨/翱多重化と测颈别濒诲
驰补丑辞辞!デベロッパーネットワーク
?
経営を支える滨罢部门実现の记録2005
経営を支える滨罢部门実现の记録2005経営を支える滨罢部门実现の记録2005
経営を支える滨罢部门実现の记録2005
Makoto Shimizu
?
YJTC18 A-1 大規模サーハ?の戦略
YJTC18 A-1 大規模サーハ?の戦略YJTC18 A-1 大規模サーハ?の戦略
YJTC18 A-1 大規模サーハ?の戦略
驰补丑辞辞!デベロッパーネットワーク
?
ソーシャルアプリ勉强会(第一回资料)配布用
ソーシャルアプリ勉强会(第一回资料)配布用ソーシャルアプリ勉强会(第一回资料)配布用
ソーシャルアプリ勉强会(第一回资料)配布用
Yatabe Terumasa
?
2018年度新入社员研修実绩绍介
2018年度新入社员研修実绩绍介2018年度新入社员研修実绩绍介
2018年度新入社员研修実绩绍介
CASAREAL, Inc.
?
闯厂非同期処理のいま
闯厂非同期処理のいま闯厂非同期処理のいま
闯厂非同期処理のいま
Masakazu Muraoka
?
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
 ぼく(たち)のかんがえた最新のJS開発環境 #scripty04 ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
ぼく(たち)のかんがえた最新のJS開発環境 #scripty04
驰补丑辞辞!デベロッパーネットワーク
?
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
softlayerjp
?
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナーEc cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
?
Spring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へSpring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へ
Masatoshi Fujino
?
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
オラクルエンジニア通信
?
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
?
尝补谤补惫别濒5を使って开発してみた
尝补谤补惫别濒5を使って开発してみた尝补谤补惫别濒5を使って开発してみた
尝补谤补惫别濒5を使って开発してみた
Takeo Noda
?
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
?
AWS Expert Online appsyncを使ったServerlessアーキテクチャ
AWS Expert Online appsyncを使ったServerlessアーキテクチャAWS Expert Online appsyncを使ったServerlessアーキテクチャ
AWS Expert Online appsyncを使ったServerlessアーキテクチャ
Amazon Web Services Japan
?
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Right scaleの利用効果、苦労話 クラウドマネジメントツール勉強会
Hirokazu Narita
?
20220729 AAdK15 C&S 永瀬 A360 API 【配布用】.pdf
20220729 AAdK15 C&S 永瀬 A360 API 【配布用】.pdf20220729 AAdK15 C&S 永瀬 A360 API 【配布用】.pdf
20220729 AAdK15 C&S 永瀬 A360 API 【配布用】.pdf
ssuser033561
?
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019
MKT-INTHEFOREST
?
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
?
経営を支える滨罢部门実现の记録2005
経営を支える滨罢部门実现の记録2005経営を支える滨罢部门実现の记録2005
経営を支える滨罢部门実现の记録2005
Makoto Shimizu
?
ソーシャルアプリ勉强会(第一回资料)配布用
ソーシャルアプリ勉强会(第一回资料)配布用ソーシャルアプリ勉强会(第一回资料)配布用
ソーシャルアプリ勉强会(第一回资料)配布用
Yatabe Terumasa
?
2018年度新入社员研修実绩绍介
2018年度新入社员研修実绩绍介2018年度新入社员研修実绩绍介
2018年度新入社员研修実绩绍介
CASAREAL, Inc.
?
闯厂非同期処理のいま
闯厂非同期処理のいま闯厂非同期処理のいま
闯厂非同期処理のいま
Masakazu Muraoka
?
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
softlayerjp
?

More from 驰补丑辞辞!デベロッパーネットワーク (20)

ゼロから始める転移学习
ゼロから始める転移学习ゼロから始める転移学习
ゼロから始める転移学习
驰补丑辞辞!デベロッパーネットワーク
?
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
驰补丑辞辞!デベロッパーネットワーク
?
ヤフーでは开発迅速性と品质のバランスをどう取ってるか
ヤフーでは开発迅速性と品质のバランスをどう取ってるかヤフーでは开発迅速性と品质のバランスをどう取ってるか
ヤフーでは开発迅速性と品质のバランスをどう取ってるか
驰补丑辞辞!デベロッパーネットワーク
?
オンプレML基盤on Kubernetes?パネルディスカッション
オンプレML基盤on Kubernetes?パネルディスカッションオンプレML基盤on Kubernetes?パネルディスカッション
オンプレML基盤on Kubernetes?パネルディスカッション
驰补丑辞辞!デベロッパーネットワーク
?
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
驰补丑辞辞!デベロッパーネットワーク
?
オンプレML基盤on Kubernetes ?Yahoo! JAPAN AIPF?
オンプレML基盤on Kubernetes ?Yahoo! JAPAN AIPF?オンプレML基盤on Kubernetes ?Yahoo! JAPAN AIPF?
オンプレML基盤on Kubernetes ?Yahoo! JAPAN AIPF?
驰补丑辞辞!デベロッパーネットワーク
?
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
驰补丑辞辞!デベロッパーネットワーク
?
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
驰补丑辞辞!デベロッパーネットワーク
?
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
驰补丑辞辞!デベロッパーネットワーク
?
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
驰补丑辞辞!デベロッパーネットワーク
?
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
驰补丑辞辞!デベロッパーネットワーク
?

Recently uploaded (11)

贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?

Service Workerとの戦い ~ 実装編 ~ #scripty03

  • 2. 柴田 和祈 @shibe97 Web Designer / Frontend Engineer Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 3. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 Service Workerとは ? ブラウザのバックグラウンドで動作する JavaScript環境 ? フォアグラウンドとは別スレッド ? サーバへのリクエストをキャッチできる ? 動かせる環境は今のところ限られている? https://jakearchibald.github.io/isserviceworkerready/ ? localhost、またはhttps環境でのみ動く
  • 4. 画面 サーバ画面 サーバ Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 5. 画面 サーバ画面 サーバ Service Worker Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 6. 画面 サーバ Service Worker クライアントサイド サーバサイド Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 7. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 今日やりたいこと ? データのキャッシュ ? Ajax通信のモックテスト ? 値のバリデーションチェック
  • 8. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 今日やりたいこと ? データのキャッシュ ? Ajax通信のモックテスト ? 値のバリデーションチェック
  • 9. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 Ajax通信のモックテストの流れ 1. Service Workerの登録 2. Ajax通信 3. Service Workerがリクエストをキャッチ 4. ダミーJsonを返す 5. 画面に表示
  • 10. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 Ajax通信のモックテスト 1. Service Workerの登録 navigator.serviceWorker.register( ? ? "service-?‐worker.js", ? ? {scope: ?"./"} ? ) ? .then(function(result){ ? ? // ?登録成功 ? }) ? .catch(function(result){ ? ? // ?登録失敗 ? }); Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 11. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 つまずきポイント#1 root ├── index.html └── sw └── test.json test.jsonへのリクエストをキャッチしたいから? スコープを「/sw」にする test.jsonへのリクエストをindex.htmlから行なうので? スコープを「/」にする ○ 【スコープ】
  • 12. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 つまずきポイント#1 ? Service Workerはスコープ内からのリクエストを キャッチする ? リクエスト先がスコープ内にあるかどうかは関係ない ? スコープを指定していない場合はルート以下? すべてがスコープとなる 【スコープ】
  • 13. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 Ajax通信のモックテスト $.ajax({ ? ? url: ?"/success", ? ? dataType: ?"json" ? }) ? .done(function(result){ ? ? // ?成功処理 ? }) ? .fail(function(result){ ? ? // ?失敗処理 ? }); 2. Ajax通信 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 14. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 Ajax通信のモックテスト self.onfetch ?= ?function(event){ ? ? var ?requestURL ?= ?new ?URL(event.request.url); ? ? if(requestURL.pathname.match("/success")){ ? ! ? ? // ?success以外のリクエストは素通りさせる ? ! ? } ? }; 3. Service Workerがリクエストをキャッチ Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 15. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 つまずきポイント#2 ? リクエストのキャッチが可能な状態になるのは? ロードのタイミング ? ワーカーが登録されても、? リロードしなければリクエストはキャッチされない ? リロードすると、index.htmlのリクエストが? キャッチされ、本物のindex.htmlが取得できない - URL判定でindex.htmlは素通りさせる必要がある 【リクエストのキャッチ】
  • 16. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 Ajax通信のモックテスト var ?result ?= ?[ ? ? {id: ?1, ?name: ?"柴田", ?mail: ?"shibata@scripty.com"}, ? ? {id: ?2, ?name: ?"小川", ?mail: ?"ogawa@scripty.com"}, ? ? {id: ?3, ?name: ?"森本", ?mail: ?"morimoto@scripty.com"} ? ]; ? var ?response ?= ?new ?Response(JSON.stringify(result), ?{ ? ? status: ?200, ? ? statusText: ?"OK", ? ? headers: ?{ ? ? ? "Content-?‐Type": ?"application/json" ? ? } ? }); ? event.respondWith(response); 4. ダミーJSONを返す Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 17. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 つまずきポイント#3 ? JSON形式で引数に渡してしまうと上手くいかない ので、文字列に変換する ? ヘッダー情報を与える必要がある ? レスポンス処理が行なわれない場合は、予定通りの? fetchが行なわれる 【レスポンスの生成】
  • 18. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 Ajax通信のモックテスト 5. 画面に表示 $.ajax({ ? ? url: ?"/success", ? ? dataType: ?"json" ? }) ? .done(function(result){ ? ? // ?成功処理 ? }) ? .fail(function(result){ ? ? // ?失敗処理 ? }); Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 19. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 今日やりたいこと ? データのキャッシュ ? Ajax通信のモックテスト ? 値のバリデーションチェック
  • 20. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 値のバリデーションチェックの流れ 1. Service Workerの登録 2. Ajax通信 3. Service Workerがリクエストをキャッチ 4. リクエストのパラメータをチェック 5. チェック結果を返す 6. 画面に表示
  • 21. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 値のバリデーションチェック 1. Service Workerの登録 navigator.serviceWorker.register("service-?‐worker.js") ? .then(function(result){ ? ? // ?登録成功 ? }) ? .catch(function(result){ ? ? // ?登録失敗 ? }); Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 22. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 値のバリデーションチェック $.ajax({ ? ? type: ?"POST", ? ? url: ?"/success", ? ? dataType: ?"json", ? ? data: ?{ ? ? ? name: ?$("#input_name").val(), ? ? ? tel: ?$("#input_tel").val() ? ? } ? }) ? .done(function(result){ ? ? // ?成功処理 ? }) ? .fail(function(result){ ? ? // ?失敗処理 ? }); 2. Ajax通信 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 23. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 値のバリデーションチェック 3. Service Workerがリクエストをキャッチ Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 self.onfetch ?= ?function(event){ ? ? var ?requestURL ?= ?new ?URL(event.request.url); ? ? if(requestURL.pathname.match("/success")){ ? ! ? ? // ?処理 ? ! ? } ? };
  • 24. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 値のバリデーションチェック event.request.text().then(function(data){ ? ? var ?jsonData ?= ?getConverted(data); ?// ?JSON形式に変換 ? ? var ?errors ?= ?validate(jsonData); ?// ?バリデーション ? }); ? ! var ?validate ?= ?function(data){ ? ? var ?errors ?= ?[]; ? ? if(data.name ?=== ?""){ ? ? ? errors.push("name:empty"); ? ? } ? ? if(data.tel.match(/[^0-?‐9]+/)){ ? ? ? errors.push("tel:notNumber"); ? ? } ? ? // ?等々 ? ? ? ?return ?errors; ? }; 4. リクエストのパラメータをチェック Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 25. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 つまずきポイント#4 ? リクエストパラメータは event.request.text() で取得する ? console.log で event の中身を見ても? パラメータが入っていない 【パラメータのチェック】
  • 26. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 値のバリデーションチェック 5. チェック結果を返す event.respondWith( ? ? event.request.text().then(function(data){ ? ? ? var ?jsonData ?= ?getConverted(data); ? ? ? var ?errors ?= ?validate(jsonData); ? ? ? return ?new ?Response(JSON.stringify(errors), ?{ ? ? ? ? status: ?200, ? ? ? ? statusText: ?"OK", ? ? ? ? headers: ?{ ? ? ? ? ? "Content-?‐Type": ?"application/json" ? ? ? ? } ? ? ? }); ? ? }) ? ) ? Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止
  • 27. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 つまずきポイント#5 ? Promise後に respondWith() すると動かない ? respondWith() してからPromise処理 ? respondWith() はonfetch内で1度しか使えない 【Promise処理とレスポンス作成】
  • 28. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 まとめ ? スコープの指定には注意が必要? スコープ内では特定のリクエストのみキャッチさせる ? リクエストのキャッチが可能な状態になるのは? ロードのタイミング ? リクエストパラメータは event.request.text() ? で取得する ? Promise処理は respondWith() の後で行なう
  • 29. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用?転載禁止 参考資料 ? Google Chromeサンプル? https://github.com/GoogleChrome/samples/tree/gh-pages/service-worker ? Service Workerの紹介? http://www.html5rocks.com/ja/tutorials/service-worker/introduction/ ? Service Workerを使ったXHRのモックテスト? http://jxck.hatenablog.com/entry/response-injection ? スペシャルアドバイザー @nhiroki_氏 !