SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「Dojo道場」~実用アプリ構築のためのベストプラクティス

Dojo道場 ~ 第4回「ビルドでパフォーマンス・チューニング(2)」
高度なチューニング・テクニック

「Dojo道場」~実用アプリ構築のためのベストプラクティス


  • X ポスト
  • このエントリーをはてなブックマークに追加

Google Closure

 Google ClosureはGoogleが提供するJavaScriptのビルド・ツールです。JavaScriptのソース・コードに対して高度な最適化が行われるため、圧縮率が高いと言われています。Google Closureは特定のJavaScriptライブラリ専用のシステムではなく、任意のJavaScriptに対して適用できるようになっています。Dojoのビルド・システムもバージョン1.4からGoogle Closureを利用できるようになりました。ただし、Dojoのビルド・システム自体にはGoogle Closureは同梱されていませんので、Googleから直接ダウンロードし、Dojoのビルド・システムに組み込む必要があります。以下にその手順を説明します。

  1. Java 6を用意します。Closureコンパイラを動作させるためには必ずJava 6を使用してください。
  2. Closureコンパイラを下記のサイトからダウンロードします。
    http://code.google.com/p/closure-compiler/downloads/list
  3. compiler.jarを適当なフォルダ(例:dojo/util/closurecompiler/)に置きます。
  4. dojo/util/buildscripts/build.batを(必要に応じてバックアップを取った上で)次のように書き換えます。compiler.jarへのクラスパスは適宜調整してください。
    java -classpath ../shrinksafe/js.jar;../closurecompiler/compiler.jar org.mozilla.javascript.tools.shell.Main build.js %*
    
  5. ビルドを実行します。以下はその例です。
    > build profile=standard action=release optimize=closure layerOptimize=closure
    

 表1、表2はそれぞれDojoビルド・システムの標準コンパイラであるShrinksafeとClosureを使って"standard"プロファイルでビルドした場合の圧縮率を調べた結果です。

表1. Shrinksafeによるビルドの圧縮率
ファイル サイズ ビルド後 gzip後 ビルド後圧縮率 gzip後圧縮率
dojo.js 386,325 89,283 30,321 23.11% 7.85%
dijit-all 842,667 356,017 92,647 42.25% 10.99%
DataGrid.js 514,365 225,863 61,236 43.91% 11.91%
Chart2D.js 443,744 200,769 52,227 45.24% 11.77%
表2. Closureによるビルドの圧縮率
ファイル サイズ ビルド後 gzip後 ビルド後圧縮率 gzip後圧縮率
dojo.js 386,325 73,631 26,562 19.06% 6.88%
dijit-all 842,667 323,986 83,276 38.45% 9.88%
DataGrid.js 514,365 201,475 54,187 39.17% 10.53%
Chart2D.js 443,744 175,335 46,970 39.51% 10.58%

 多くの場合、webアプリケーションの本番運用環境ではJavaScript等のファイルはサーバー側でgzip圧縮してクライアントへ送信されるため、ビルド結果をgzipしたサイズがパフォーマンスの目安となります。表2、表3から、Closureのビルド結果はShrinksafeに比べて約10%程度サイズが小さいことが分かります。また、Dojoのビルド・システムからClosureを使う場合は、Closureの"simple"最適化モードしかサポートしていません。本来のClosureには"advanced"最適化モードが存在し、グローバル変数名の短縮、使用されないコードの削除、関数のインライン化などより大胆な最適化を施します。将来それが利用できるようになった場合はさらなるサイズ圧縮が期待できると思われます。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「Dojo道場」~実用アプリ構築のためのベストプラクティス連載記事一覧

もっと読む

この記事の著者

神山 淑朗(カミヤマ ヨシロウ)

日本アイ・ビー・エム株式会社 ソフトウェア開発研究所に勤務。現在は主にdojoベースのwebアプリケーションの研究開発に従事。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5694 2012/01/30 11:50

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング