Web workerというと、このworkerのことを指すことが多い気がする(自分もそういうふうに使っていたこともある気がする)。一番の基本形。
Chrome / Firefox / Safari / Opera はかなり前からサポートしている。IEは10からっぽい。
Shared Worker
new SharedWorker(scriptUrl)でつくるやつ。Workerに似ているんだけど、同じURLに対してはひとつのインスタンスしか作られない。ふたつの違うタブから作ってもひとつのインスタンスで共有される。タブ間で通信したりデータ共有したりするのに使える。頑張ればタブ間でコネクションの一本化とかにも使えるだろう。
Service workersは、このevent pagesをウェブ流にうまく表現したもの、ということができると思う。Chromeの場合、プロセスを適当なタイミングで閉じて、フェッチが発生したりページからpostMessageしたときだけプロセスが起こるというのもいっしょだ(よく知らないけど実装もけっこう流用できていると思う)。拡張機能を書いてて便利だったことがいろいろできるようになる。はずである。
非同期プログラミング、というタイトルでRxJS (Reactive Extension for JavaScript)の解説。語り口も明確だし、これは面白かった。イベントソースを非同期なコレクションとみなして、forEachやmapなどを駆使すると綺麗に書けますよ、Netflixではもう使ってます、というもの。
function size(input) { if (input != null) { return input.length; } return 0; }
とか、
function size(input: string | Array<string>): number { if (typeof input == "string") { return input.length; } else { for (var i = 0, sum = 0; i < input.length; i++) { sum += input[i].length; } return sum; } }
でもまあ見ていて、これでも良いのかなという気がしてきました。見る前に『All you Need Is Kill』を再読したんですが、なんというかこう、あんまし映画向きというわけでもない(部分も多々ある)よね。原作に忠実にしつつ適宜改変を加えるよりは、基本設定から再構成するという判断でもまあ良かったんじゃないかな、という気もします。原作の映像化も、それはそれで見たかったという気もするけれど……。
ただやっぱりこの本には否定できない魅力もあって、しかし、それは上の瑕疵と表裏一体なように思う。なんと書いたものか……アマゾンのレビューから引用してみると、それはつまり Past meets present and envisions future. ということになるのかもしれない(これは褒めすぎだと思うけど)。