SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Web Workers & Parallel.js
(function() {
let me = {
name : 島川悠太 ,
twitter : @banana_umai ,
as : Server Side Engineer ,
belogns_to : 株式会社リブセンス
}
})();
Web Workers おさらい
メインページに並行してバッ
クグラウンドで走るワーカスク
リプトを生成させられるAPI
http://www.hcn.zaq.ne.jp/___/WEB/Workers-ja.html
メインページに並行してバッ
クグラウンドで走るワーカスク
リプトを生成させられるAPI
http://www.hcn.zaq.ne.jp/___/WEB/Workers-ja.html
直接DOMは操作できない
専用ワーカと共有ワーカ
専用ワーカと共有ワーカ
使いドコロはUIスレッド
を専有したくない重たい
処理の記述
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
<script>
var worker = new Worker("js/worker.js");
worker.onmessage = function(event) {
console.log(event.data);
};
worker.postMessage(msg);
</script>
self.onmessage = function(event) {
loadScripts( proc.js );
postMessage(procWithData(event.data));
}
Parallel.js
http://adambom.github.io/parallel.js/
ブラウザでも
サーバーサイドでも
使える
ブラウザでは内部的に
専用ワーカを使って
並列処理を実現
バックグラウンド処理を
書き下せる
<script src= js/parallel.js ></script>
<script>
var data = …;
var p = new Parallel(data);
p.spawn(function (data) {
// some proc with data running in background
…
return result;
}).then(function (result) {
// some proc with result
…
});
</script>
map/reduceができるよ
<script src= js/parallel.js ></script>
<script>
var data = [1, 2, 3, 4];
var p = new Parallel(data);
p.map(function (datum) {
return datum * 2;
}).reduce(function (mappedData) {
return mappedData[0] + mappedData[1];
}).then(function (reduced) {
console.log(mappedData); // 20
});
</script>

Weitere ähnliche Inhalte

Was ist angesagt?

20130614 jaws ug山形-lt
20130614 jaws ug山形-lt20130614 jaws ug山形-lt
20130614 jaws ug山形-lt
Seiji Akatsuka
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
 
Using SockJS(Websocket) with Sencha Ext JS
Using SockJS(Websocket) with Sencha Ext JSUsing SockJS(Websocket) with Sencha Ext JS
Using SockJS(Websocket) with Sencha Ext JS
Kazuhiro Kotsutsumi
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
emasaka
 
ISUCONの話(夏期講習2014)
ISUCONの話(夏期講習2014)ISUCONの話(夏期講習2014)
ISUCONの話(夏期講習2014)
SATOSHI TAGOMORI
 

Was ist angesagt? (20)

jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
 
Start React with Browserify
Start React with BrowserifyStart React with Browserify
Start React with Browserify
 
ピピピのPWA
ピピピのPWAピピピのPWA
ピピピのPWA
 
20130614 jaws ug山形-lt
20130614 jaws ug山形-lt20130614 jaws ug山形-lt
20130614 jaws ug山形-lt
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8
 
200k/sec
200k/sec200k/sec
200k/sec
 
Enhancements with 3D Touch
Enhancements with 3D TouchEnhancements with 3D Touch
Enhancements with 3D Touch
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
 
Using SockJS(Websocket) with Sencha Ext JS
Using SockJS(Websocket) with Sencha Ext JSUsing SockJS(Websocket) with Sencha Ext JS
Using SockJS(Websocket) with Sencha Ext JS
 
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
 
EC2起動終了を出退勤と連動させてみた
EC2起動終了を出退勤と連動させてみたEC2起動終了を出退勤と連動させてみた
EC2起動終了を出退勤と連動させてみた
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞ
 
おすすめ gem
おすすめ gemおすすめ gem
おすすめ gem
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
 
ISUCONの話(夏期講習2014)
ISUCONの話(夏期講習2014)ISUCONの話(夏期講習2014)
ISUCONの話(夏期講習2014)
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrant
 
React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示する
 

Andere mochten auch

PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
Yuta Shimakawa
 
Chineese smuggling
Chineese smugglingChineese smuggling
Chineese smuggling
grigor545
 
Diasanpatrick's xavicid
Diasanpatrick's xavicidDiasanpatrick's xavicid
Diasanpatrick's xavicid
xavi1090
 
Udemy Market-Research Entrepreneurship by Udemology
Udemy Market-Research Entrepreneurship by UdemologyUdemy Market-Research Entrepreneurship by Udemology
Udemy Market-Research Entrepreneurship by Udemology
Nicky Wong
 
kan resume
kan resumekan resume
kan resume
Kan Mani
 
2011.02.05 run’oプレゼン
2011.02.05 run’oプレゼン2011.02.05 run’oプレゼン
2011.02.05 run’oプレゼン
大祐 伊東
 
Joomla upgrades
Joomla upgradesJoomla upgrades
Joomla upgrades
Peter Bui
 

Andere mochten auch (20)

Livesense tech night immutable-js at a glance
Livesense tech night   immutable-js at a glanceLivesense tech night   immutable-js at a glance
Livesense tech night immutable-js at a glance
 
Trait in scala
Trait in scalaTrait in scala
Trait in scala
 
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみる
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみるFluxのDispatcherとAction周りのことでもやもやしていることを晒してみる
FluxのDispatcherとAction周りのことでもやもやしていることを晒してみる
 
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
PHPでもモダンでスケーラブルな開発を DevLOVE現場甲子園2013発表資料
 
型についてあれこれ
型についてあれこれ型についてあれこれ
型についてあれこれ
 
タスクボード始めました(仮)++ アジャイルサムライ他流試合
タスクボード始めました(仮)++ アジャイルサムライ他流試合タスクボード始めました(仮)++ アジャイルサムライ他流試合
タスクボード始めました(仮)++ アジャイルサムライ他流試合
 
Presentatie Internet Marketing FBAA 2011 Sept 14
Presentatie Internet Marketing FBAA 2011 Sept 14Presentatie Internet Marketing FBAA 2011 Sept 14
Presentatie Internet Marketing FBAA 2011 Sept 14
 
Framework Foundation Basicão
Framework Foundation BasicãoFramework Foundation Basicão
Framework Foundation Basicão
 
Review of work in progress October 2012 Part 1
Review of work in progress   October 2012 Part 1Review of work in progress   October 2012 Part 1
Review of work in progress October 2012 Part 1
 
Chineese smuggling
Chineese smugglingChineese smuggling
Chineese smuggling
 
Linguagem sql
Linguagem sqlLinguagem sql
Linguagem sql
 
Heal from within
Heal from withinHeal from within
Heal from within
 
Build Your Best Auction Catalog Ever
Build Your Best Auction Catalog EverBuild Your Best Auction Catalog Ever
Build Your Best Auction Catalog Ever
 
Diasanpatrick's xavicid
Diasanpatrick's xavicidDiasanpatrick's xavicid
Diasanpatrick's xavicid
 
Canción la fruta presentación
Canción la fruta presentaciónCanción la fruta presentación
Canción la fruta presentación
 
Udemy Market-Research Entrepreneurship by Udemology
Udemy Market-Research Entrepreneurship by UdemologyUdemy Market-Research Entrepreneurship by Udemology
Udemy Market-Research Entrepreneurship by Udemology
 
kan resume
kan resumekan resume
kan resume
 
2011.02.05 run’oプレゼン
2011.02.05 run’oプレゼン2011.02.05 run’oプレゼン
2011.02.05 run’oプレゼン
 
Dinamikakelompokprajab3
Dinamikakelompokprajab3Dinamikakelompokprajab3
Dinamikakelompokprajab3
 
Joomla upgrades
Joomla upgradesJoomla upgrades
Joomla upgrades
 

Ähnlich wie Web workers&parallel.js html5勉強会lt大会

クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
Tomonori Yamada
 

Ähnlich wie Web workers&parallel.js html5勉強会lt大会 (20)

Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration
 
Web socketドロンくん その後-
Web socketドロンくん その後-Web socketドロンくん その後-
Web socketドロンくん その後-
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
about miruzo
about miruzoabout miruzo
about miruzo
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training SlideLabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
 
アプリコンテスト
アプリコンテストアプリコンテスト
アプリコンテスト
 
もうひとつのNo sql couchdbとは
もうひとつのNo sql couchdbとはもうひとつのNo sql couchdbとは
もうひとつのNo sql couchdbとは
 
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
 
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
.NET Core 3.0 で Blazor を使用した​フルスタック C# Web アプリ​の構築
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
Durable Functions (Core) 気になっていたことを勉強がてら実装してみた
Durable Functions (Core) 気になっていたことを勉強がてら実装してみたDurable Functions (Core) 気になっていたことを勉強がてら実装してみた
Durable Functions (Core) 気になっていたことを勉強がてら実装してみた
 

Web workers&parallel.js html5勉強会lt大会