JavaScriptの1行が、今日のブログ技術に多くのパワーを与えている。ウィジェット、共有ツール、訪問者の追跡、広告。多くの場合、ブロガーは新しい技術を自分のブログに導入するのに、JavaScriptを1行加えるだけでいい。問題は、それらの1行のJavaScriptが多数組み合わされたときに起こる。
物理学には、非線形性と呼ばれる有名な現象がある。多くの異なることが相互作用すると、結果を予測するのが難しくなるのだ。ソフトウェアの場合も違いはない。多くのコンポーネントを組み合わせると、何が起こるか予測できなくなる。これは、各コンポーネントはスタンドアロンのように振る舞うが、それらは決まった区画内のスペースと閲覧者の注意を争う関係にあるからだ。そして、この争いはすべての人を傷つける。読者、ブロガー、サービス。誰もが不満を抱くことになる。
この記事では、多くのJavaScriptの1行がどうしてページをハングさせるのか、それに対してどうすればいいのかについて述べていく。
ウィジェットは今流行の、ページに含まれる小さなコンテンツだ。ブロガーは自分の個性や好みのコンテンツをブログに並べてみせるのが大好きだ。これが、ブロガーがdel.icio.usやFlickr、Twitter、AddThis、Sphereといった新しいウィジェットを競ってインストールする理由だ。これらのウィジェットは便利で需要も多い。
HTMLとブログプラットフォームに親しんでいれば、ウィジェットのインストールは比較的簡単だ。ブロガーはウィジェットのHTMLを、それを配置したい場所にペーストすればいいだけだ。コードをHTMLドキュメントの先頭に挿入しなければならない場合もあるが、これは難しくはない。少し技術的な理解があればそれを自分でやることもできるし、Widgetboxのようなプラットフォームを使って自動的にインストールすることもできる。
これは十分簡単で、ブロガーはより多くのウィジェットをブログにインストールしている。そして、それが物事をおかしくさせ、ブログのロード時間を長くしてしまう可能性のある原因だ。
現在主流のウィジェットの実装技術は、Adobe FlashとJavaScriptの2つだ。Flashウィジェットには、重いこと、サイズを変えられないこと、DOMを操作できないことなど、それ自体の問題がある。しかし、問題を起こすのは普通FlashウィジェットではなくJavaScriptウィジェットの方だ。
皮肉なことだが、JavaScriptは最低限の双方向性と、HTMLドキュメントのクライアント側での素早い操作を狙った軽快な言語として構想され、設計された。しかし、その技術が辿ってきたねじれた道のりのために、JavaScriptはウェブのプログラミング言語に進化した。Ajaxからウィジェットまで、JavaScriptは多くの最先端プロジェクトで使われている。しかし、実際には、JavaScriptも問題を抱えている。以下ではそれらについて見ていこう。
経験を積んだ技術者にとって最もショッキングな事実は、JavaScriptがシングルスレッド型の言語だということかもしれない。これは、JavaScriptが物事を同時にではなく順番に処理するということだ(Ajaxの呼び出しは例外である)。JavaScriptの断片がロードされ、あるいは評価されているとき、他のすべての処理はその終了を待たなくてはならない。
これは、遅いJavaScriptが1つあれば、ブログ全体の読み込みが遅くなってしまう場合があるということだ。ブログ界のあらゆるところでこれが起こっている。では、どうすれば解決できるのか。
残念ながら、この問題に対する特効薬はない。これは、1つのトリックや技術だけでこの問題を解決することはできないということだ。企業が他のウィジェットと一緒に使われたされた際の影響を和らげるために使える技術の組み合わせはある。ただし、多くのウィジェットが組み合わせられれば、最終的には問題は起こる。業界によるこの問題への対処が行われるまでは、JavaScriptの提供者は次のようなことを考慮するべきだ。
CNET Japanの記事を毎朝メールでまとめ読み(無料)
ものづくりの革新と社会課題の解決
ニコンが描く「人と機械が共創する社会」
ZDNET×マイクロソフトが贈る特別企画
今、必要な戦略的セキュリティとガバナンス