■補講 スマートフォンでのWeb Workers  iOS5では並列処理を行うWeb Workersに対応しています。本書の第2刷以降での掲載サンプルはiOS5のSafariでも動作します。  本書でも説明しましたが、Web Workersを使うとバックグランドで処理が行われます。特に重い処理、つまり時間がかかる処理を行う場合はWeb Workersを使う方がよいでしょう。というのも、Web Workersを使わない場合に時間がかかる処理を行うとiPhone/iPadでは画面の操作が全くできなくなってしまうためです。  ただし、iPhone/iPadでWeb Workersを使う場合、ワーカーを生成するコストやバックグランドでの処理コストも考慮した方がよいでしょう。特にiPhone 4S以前の機種ではCPUは1つしかありません。パソコンのように複数のCPUがあれば、話は違いますが2011年時点ではシングルプロセッサ(CPUが1つ)のものが多くを占めています。  スマートフォンはiPhone/iPadだけではありません。2011年時点ではAndroidも多くのシェアを持っています。ところが、AndroidはOSバージョン4になってもWeb Workersには対応していません。このため、AndroidではWeb Workersを使った並列処理を行うことはできません。  となると時間のかかる処理、例えば本書で解説しているような画像処理を行うと、操作がまったくできなくなってしまいそうです。ところが、Androidの場合はiPhoneやパソコンでのJavaScriptとは異なり、時間のかかる処理を行っていても画面の操作を行うことができます。このため、時間のかかる処理を行わせてもユーザーは、あまりストレスを感じないでしょう。  最近のスマートフォンは性能が向上し下手にWeb Workersを使って処理するよりも普通に処理した方が高速なこともあります。どうしても負荷が高くてどうしようもない場合にWeb Workersの使用を検討するのがよいと思います。 【図】fig1.png 本書のレッスン36のサンプルをiPhone 4S(iOS5)で実行した結果 (注意:第二刷以降のサンプルコードでないとiOS5では動作しません)