xoprojを活用した組み込み例
ビルドイベントの中で呼び出したXapOptimizerでピン設定を毎回手動で実施するのは、作業ミスなどが起こりやすくなり、非効率です。そこでピン設定をxoprojファイルに保存しておき、その保存値を自動適用するように変更してみましょう。
まずは前段階として、設定値を保存します。
- XapOptimizerを起動する
- XAPファイルを指定する
- ピン設定を行う
- バックアップを取得するように設定する
- 名前を付けて設定を保存する(aaa.xapならaaa.xoprojとしてプロジェクトファイルと同じ場所に保存する)
次にビルドイベントのビルド後に実行するコマンドラインを設定します。
"C:\Program Files (x86)\GrapeCity\XapOptimizer1\bin\XapOptimizer.exe" /p: $(ProjectDir)$(ProjectName).xoproj /cmd
今回のコマンドラインでは、/pパラメタでxoprojファイルを指定しています。入力XAPファイルや出力XAPファイルはxoprojの中で定義されているもののみが有効なため、/iパラメタや/oパラメタを同時に指定することはできません。
/cmdオプションは/pオプション指定時だけ設定できるパラメタで、/cmdオプションを指定するとXapOptimizerの画面を表示せずに最適化を実施します。
ビルドイベントの設定が終わったら、Visual StudioでターゲットをWindows Phone Emulatorにして実行してみてください。ビルドが行われ、最適化された状態でWindows Phone Emulatorへ発行されて、アプリが起動します。
まとめ
最後に、もう少し実用的なWindows Phoneアプリを最適化した結果を確認してみましょう。
アプリケーション名 | 最適化前 | 最適化後 |
CZ1203ContextMenu | 127KB | 56KB |
CZ1205FourSquareVB | 226KB | 146KB |
CZ1205Metro4sqVB | 596KB | 516KB |
CZ1206ImageVB | 204KB | 110KB |
必要なピン設定を行い、正常に動作する設定を確認できたら、xoprojとして保存して測定した結果となります。最適化により小さくなる割合はWindows Phoneアプリによってまちまちです。これは除去できるライブラリが異なるという要因が大きいでしょう。しかし、効果はありますし、表にもあるように最大で50%近い削減は、Windows Phoneのリソースに良い影響を与えるでしょう。