SlideShare a Scribd company logo
Web Workersを
          使おう
   2010/01/23
   mollifier
   http://d.hatena.ne.jp/mollifier/
   Web Workers とは
   Web Workers の使い方
   活用できる場面
   Web Workers とは
   Web Workers の使い方
   活用できる場面
Web Workersは、
新しいJavaScript
の機能
例えば、
JavaScriptで
足し算したい場合
素朴な書き方
function setText(elem, text) {
  if (! elem.firstChild) {
    elem.appendChild(document.createTextNode(""));
  }
  elem.firstChild.data = text;
}

function run() {
  var num =
    parseInt(document.getElementById("num").value, 10);
  var result = 0;

    for (var i = 0; i <= num; i++) {
      result += i;
    }
    // 計算完了
    var retElem = document.getElementById("result");
    setText(retElem, result.toString());
}
計算してる間
ブラウザが反応し
ない
Web Workersを
使うと解決する
というわけでデモ
Web Workersを
使うとバックグラ
ウンドで処理を実
行できる
   Web Workers とは
   Web Workers の使
    い方
   活用できる場面
Web Workers の
コードってどうい
う風に書くの?
簡単な例として、
入力した数字まで
の合計を計算して
みる
Try Webworkers
まずは HTML ファ
イル
<!DOCTYPE html>

<html>
<head>
  <meta charset="UTF-8">
  <script type="application/javascript"
src="main.js"></script>
</head>

<body>
  <h1>計算したい</h1>
  <p>
    1 から <input type="text" id="num" value="10"> までの合計
  </p>
  <button id="run">計算!</button>
  <p id="result"></p>

  <p><a href="../index.html">index</a></p>
</body>

</html>
普通です。
特に変わったとこ
ろは無し。
つぎに、
JavaScript
ファイル
main.js
worker.js

二つファイルを
作った
main.js              worker.js

  ブラウザ本体側               バックグラウンド処理


             計算してくれ !


                                  計算する

                  計算したよ !

表示する
main.js の中身
(function() {
  function init() {

      function run() {
        var num = parseInt(document.getElementById("num").value, 10);

           // 計算を行うワーカを生成
          var worker = new Worker("worker.js");

           // ワーカから結果を受け取る
          worker.onmessage = function(event) {
              var retElem = document.getElementById("result");
              if (! retElem.firstChild) {
                retElem.appendChild(document.createTextNode(""));
              }
              retElem.firstChild.data = event.data;
           };

           // ワーカーに計算させる
          worker.postMessage(num);
      }

      document.getElementById("run").
        addEventListener('click', run, false);
  }

  window.addEventListener('load', init, false);
})();
// バックグラウンドで計算を行う
// ワーカを作成する。
// 引数として JavaScript ファイルの
// URL を指定する。
var worker =
  new Worker("worker.js");

// この時点ではまだ計算を開始しない。
// バックグラウンドで計算を開始する
// (num には数字が入っている)
worker.postMessage(num);
// 計算結果をワーカーから受けとる
worker.onmessage =
   function(event) {
     // event.data に
     // 計算結果が入っている
     // ここで結果を表示する
};
worker.js の中身
これがバックグラウ
ンドで行われる処理
// バックグラウンド処理を登録する
onmessage = function(event) {
  // main.js の
  // worker.postMessage(num);
  // が呼び出されたとき、
  // ワーカー側では
  // この関数が実行される

  // ... 次のページに続く
};
onmessage = function(event) {
   // event.data に main.js 側で
  // 指定した数字が入っている
  var num = event.data;
   var result = 0;
   for (var i = 0;i <= num; i++) {
     result += i;
   }
   // 結果を main.js 側に通知する
  postMessage(result);
};
main.js                      worker.js

new Worker()       (1) worker が作られる


                (2) postMessage


                                          (3) onmessage

                        (4) postMessage

(5) onmessage
   Web Workers とは
   Web Workers の使い方
   活用できる場面
じゃあ、これって
いつ使うの?
現状では
別にいらない。
無くても大丈夫。
それでも、どん
な場面で役に立
つか考えてみた
1. 画像の処理を
する場合
JavaScript で
動的に画像を作
成する
たぶん重たい処
理になる
その間もブラウ
ザ本体の操作が
できる
2. ローカルの
データを扱う場合
例えば
Web Storage
Web Database
クライアント側で
データベースを扱
う場合
データベースのア
クセスを
Web Workers で
読み書きしている
間もブラウザ本体
の操作ができる
3. 巨大な数値、
文字列を扱う場合
例えば
データ圧縮
暗号化
もしやるとなった
ら、かなり重たい
処理になる
その間も普通のブ
ラウザ操作ができ
るように
というわけで、現
状では活用例が無
いけど
Web Workers の
登場で、
JavaScript 側に
重たい処理をまか
せられる可能性が
出てきた
ひょっとしたら
流行るかもしれ
ません
というわけで、
新しい可能性の紹
介でした
ありがとう
ございました

More Related Content

PDF
あの時AngularJSと出会った僕らは
PDF
BMXUG ブロックチェーンハンズオン 20190622
PDF
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
KEY
Ll xcode
PDF
ScaLa+Liftとか
PDF
Backbone.js
PPT
20130924 Picomon CRH勉強会
PDF
これからのJavaScriptの話
あの時AngularJSと出会った僕らは
BMXUG ブロックチェーンハンズオン 20190622
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
Ll xcode
ScaLa+Liftとか
Backbone.js
20130924 Picomon CRH勉強会
これからのJavaScriptの話

What's hot (20)

PDF
WebGL and Three.js
PDF
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
PDF
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
PPTX
Metro スタイル アプリで印刷
PDF
メディア芸術基礎 II Canvas + Javascriptで図形を描く
PDF
ASP.NETを利用したAJAX開発の応用
PDF
cronからjobschedulerにマイグレーションする方法
PDF
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
PDF
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
PDF
PHP 2大 web フレームワークの徹底比較!
PDF
One night Vue.js
PPT
20090212
PDF
Vue.js でタイマーを作る
PDF
introduction to Marionette.js (jscafe14)
PDF
これからのJavaScriptー関数型プログラミングとECMAScript6
PDF
MlnagoyaRx
PDF
ECMAScript6による関数型プログラミング
PDF
javascript を Xcode でテスト
PPTX
背景にCanvasを動かす
PPT
実行時のために最適なデータ構造を作成しよう
WebGL and Three.js
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
情報編集(Web) HTML5 実践1 Canvas + Javascriptで図形を描く
Metro スタイル アプリで印刷
メディア芸術基礎 II Canvas + Javascriptで図形を描く
ASP.NETを利用したAJAX開発の応用
cronからjobschedulerにマイグレーションする方法
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
PHP 2大 web フレームワークの徹底比較!
One night Vue.js
20090212
Vue.js でタイマーを作る
introduction to Marionette.js (jscafe14)
これからのJavaScriptー関数型プログラミングとECMAScript6
MlnagoyaRx
ECMAScript6による関数型プログラミング
javascript を Xcode でテスト
背景にCanvasを動かす
実行時のために最適なデータ構造を作成しよう
Ad

Viewers also liked (9)

PDF
Yüzyılın İndirimi 28 Aralik 2011 - 01 Ocak 2012
PPTX
гзн васильева т.в
PPTX
Leren onderzoeken op het HLO
PPT
Mediatechnologyworkneedtocomplete
PPS
Doce meses
PPT
Social innovations
PPTX
Don't stop me now
PDF
Ee2352 ssd may june 2014
PDF
กินกบ ขายปลา หาเนยแข็ง Frog fish cheese
Yüzyılın İndirimi 28 Aralik 2011 - 01 Ocak 2012
гзн васильева т.в
Leren onderzoeken op het HLO
Mediatechnologyworkneedtocomplete
Doce meses
Social innovations
Don't stop me now
Ee2352 ssd may june 2014
กินกบ ขายปลา หาเนยแข็ง Frog fish cheese
Ad

Similar to Try Webworkers (20)

PPTX
Web Workers
PPTX
Lt 111217
PDF
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
PDF
Hadoop jobbuilder
PDF
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
PDF
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
PPTX
13016 n分で作るtype scriptでnodejs
PDF
Pro aspnetmvc3framework chap19
PDF
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
KEY
Arctic.js
PDF
Ajax 応用
PDF
emc++ chapter32
PDF
jQuery超入門編
PPTX
Node.js - JavaScript Thread Programming
PDF
About Jobs
PDF
Apache Torqueについて
PDF
Knockout.js を利用したインタラクティブ web アプリケーション開発
PDF
Vue.js で XSS
PDF
Data api workshop at Co-Edo
PDF
究極のバッチフレームワーク(予定)
Web Workers
Lt 111217
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Hadoop jobbuilder
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
13016 n分で作るtype scriptでnodejs
Pro aspnetmvc3framework chap19
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
Arctic.js
Ajax 応用
emc++ chapter32
jQuery超入門編
Node.js - JavaScript Thread Programming
About Jobs
Apache Torqueについて
Knockout.js を利用したインタラクティブ web アプリケーション開発
Vue.js で XSS
Data api workshop at Co-Edo
究極のバッチフレームワーク(予定)

Try Webworkers