Transcript
Page 1: Web workers&parallel.js   html5勉強会lt大会

Web Workers & Parallel.js

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

(function() { let me = { “name”: “島川悠太”,

“twitter”: “@banana_umai”,

“as”: “Server Side Engineer”,

“belogns_to”: “株式会社リブセンス

} })();

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

Web Workers おさらい

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

“メインページに並行してバックグラウンドで走るワーカスクリプトを生成させられるAPI”

http://www.hcn.zaq.ne.jp/___/WEB/Workers-ja.html

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

“メインページに並行してバックグラウンドで走るワーカスクリプトを生成させられるAPI”

http://www.hcn.zaq.ne.jp/___/WEB/Workers-ja.html

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

直接DOMは操作できない

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

専用ワーカと共有ワーカ

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

専用ワーカと共有ワーカ

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

使いドコロはUIスレッドを専有したくない重たい処理の記述

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

<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)); }

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

<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)); }

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

<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)); }

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

<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)); }

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

<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)); }

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

<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)); }

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

<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)); }

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

<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)); }

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

<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)); }

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

Parallel.js

http://adambom.github.io/parallel.js/

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

ブラウザでも サーバーサイドでも 使える

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

ブラウザでは内部的に 専用ワーカを使って 並列処理を実現

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

バックグラウンド処理を書き下せる

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

<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>

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

map/reduceができるよ

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

<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>


Top Related