Ajaxの起動を高速化するツール「Doloto」、マイクロソフトが発表

2009年9月10日

Doloto - Microsoft Research

マイクロソフトリサーチが、AjaxによるWebアプリケーションを最適化して起動速度を改善するツール「Doloto」をの公開を、9月8日から開始しました。

DolotoのWebページの解説によると、Dolotoとは「Download Time Optimizer」の略であり、またロシア語で「彫る、干渉する」という意味の単語だとのこと。発表されている資料を基にDolotoがどのようなツールなのか、紹介していきましょう。

JavaScriptのロードを最適化するDoloto

最近の大規模なWebアプリケーション、例えばGMailやGoogle MapなどのAjaxで開発されたアプリケーションは、Webページを呼び出した時点で大量のJavaScriptコードをサーバからWebブラウザへとダウンロードするため、起動に時間がかかるようになってきています。

DolotoはこうしたWebアプリケーションを解析し、大規模なJavaScriptを分割します。そしてWebアプリケーションの起動に最低限必要なJavaScriptコードだけを最初にロードし、それ以外の部分を後からバックグラウンドで、もしくはその機能が呼び出された時点でロードするように変更することで、Webアプリケーションを素早く利用できるように最適化してくれます。

マイクロソフトによると、これによってWebアプリケーションの起動時に必要なJavaScriptのダウンロードサイズが平均で50%程度削減そうです。以下に、マイクロソフトによるテスト結果のグラフを示します。

fig 主要なAjaxアプリケーションの起動時にダウンロードされるJavaScriptの大きさを、オリジナルとDolotoで最適化した場合の比較。おおむね半分程度になっている

ネットワークの帯域幅にもよりますが、ダウンロードサイズの削減によりWebアプリケーションの起動時間が20%から40%減少するとしています。

ローカルプロキシとして動作し、プロファイル分析を実行

Dolotoは.NET Framework 3.5ベースで開発されたローカルプロキシとして動作するツールです。Dolotoが動作している環境でWebアプリケーションを動作させると、Dolotoが自動的にプロファイリングを開始します。

プロファイリング情報を基に、Webアプリケーションでロードされ呼び出されたJavaScriptの関数が、役割別にまとめられていくつかの「Cluster」に分類されます。「Cluster」が、ダウンロードされるJavaScriptの新たなまとまりとなります。

プロファイリングが終了すると、最適化したHTMLファイル、JavaScriptファイルなどが、指定したディレクトリに自動的に生成されます。生成されたファイルをWebサーバにアップロードし以前のファイルを置き換えることによって、最適化されたWebアプリケーションを実行することができるようになります(念のため、生成されたファイルのチェックをマイクロソフトは勧めています)。

JavaScriptの読み込みをできるだけ遅らせるテクニックは「Splitting the Initial Payload」と呼ばれており、Ajaxプログラミングのテクニックとして用いられてきました。Dolotoはこのテクニックを自動的に実現してくれるツールです。Ajaxプログラマの方はいちど試してみる価値があるのではないでしょうか。

関連記事 on Publickey

参考記事 on the Web

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : Ajax , JavaScript , Microsoft , Webブラウザ



≫次の記事
Twitterは企業と顧客をダイレクトに結ぶツールとなる、SalesforceがTwitterに対応
≪前の記事
TechCrunchとInfoQとCNETの共通点

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus