SHOEISHA iD

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

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

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

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

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


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

条件付きコンパイル

 C言語には#ifdefなどのプリプロセッサ・ディレクティブが備わっており、条件によって異なるコンパイル結果を生成できます。dojoにも非常にシンプルではありますが条件に応じて異なるビルド結果を生成する手段が存在します。

exclude/includeディレクティブ

 リスト6はexcludeStart/excludeEndディレクティブの使用例です。行が//から始まることから分かるように、このディレクティブはJavaScriptとしては単なるコメントですが、ビルド・ツールがこれを解釈します。excludeStart/excludeEndの第一引数は対応する両者のマッチングを調べるためのマーカーです。任意の文字列で構いませんが、対応するStartとEndで一致している必要があります。excludeStartの第二引数は条件式です。任意の論理式を記述できます。kwArgsオブジェクトにはbuildコマンドのコマンドラインで指定されたオプションの値が格納されています。

リスト6. excludeStartの例
process: function(){
//>>excludeStart("marker1", kwArgs.noIE);
    if(dojo.isIE){
        ....
    }
//>>excludeEnd("marker1");
    ....
}

 リスト6の例ではコマンドラインで指定されたnoIEオプションの値を条件としているので、例えば次のようにnoIE=trueを指定してビルドすると、excludeStartとexcludeEndで囲まれた範囲のコードがビルドから削除されます。

> build profile=myapp action=release noIE=true

 同様にして、includeStart/includeEndディレクティブを使うと、条件を満たす場合のみそれらで囲まれた範囲のコードをビルドに含めることができます。

 これらのディレクティブにはさまざまな用途が考えられますが、一例として、ブラウザの種類ごとに最適化された別々のビルドを用意し、サーバーがブラウザの種類を判定してそのブラウザ専用のビルドを送信するといった使い方が考えられます。使用ブラウザにとっては不要なコードを排除できるのでコードのスリム化に役立ちます。

webkitMobileオプション

 iPhoneやAndroidで採用されているモバイル用webkitベース・ブラウザのために、dojo baseモジュールには次のようなコードが多数含まれています。

//>>excludeStart("webkitMobile", kwArgs.webkitMobile);
    ....
//>>excludeEnd("webkitMobile");

 これらは、モバイル用webkitベース・ブラウザでは不要なコードを囲んでいます。モバイル向けのアプリケーションでは特にパフォーマンスに対する要求が厳しい傾向にあります。もしそのアプリケーションをデスクトップ・ブラウザでも動かす必要がないのであれば、ビルド時に次のようにしてwebkitMobile=trueオプションを与えることで、モバイル用webkitベース・ブラウザに不要なコードが削除され、パフォーマンスを向上させることができます。

> build profile=myapp action=release webkitMobile=true

次のページ
Google Closure

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング