アプリをなんとか20MB以内におさめたい時の試行錯誤。
iOSのアプリを提供する際に気を付けたいのはアプリのデータを20MB以内におさめるということ。
アプリが3G経由でダウンロードできる最大のサイズが20MBだから。
ちなみにアプリのサイズの内訳として、85%以上のアプリが20MB以下という結果になっている。(ソース:[iPhone] 数字で見るApp Store « taichino.com)
一般的には画像や音声がアプリのデータ量を圧迫していると思われる。
今回は特に画像の圧縮方法についてのメモ。
まずはPNGを最適化してみる。
こちらの記事でも紹介されていますがImageOptimというツールがあります。画像圧縮ツール ImageOptim がすごい!iPhoneアプリのサイズ問題など - gabuchanの日記
無料でダウンロードできます。ImageOptim — make websites and apps load faster (Mac app)
63個のPNGファイルで試してみたところ、
27.1 MB(26,963,176 バイト)ー>26.8 MB(26,702,442 バイト)となった。
今回対象としたPNG画像が透過を含まないものが多かったこともあり、
圧縮にほとんど寄与していなかったと思われる。
PNGからJPEGに変えてみる。
iOSアプリの開発するにあたって「画像=PNG」というイメージがあったのでてっきりJPEGのデータ量は大きいものだと思っていた。
PNGとJPEGの比較の記事を見て結構な勘違いをしていたみたいだった。
PNGとJPEG…こんなときはどっち? Web用画像の書き出し、比べてみました! | VIVID COLORS + BLOG -福岡で働くWebデザイナーのブログ-
記事を参考に、画質を落とさぬようにJPEG圧縮。
結果
26.8 MB -> 3.1 MB
これはすごい!
最後に
Appleの公式ドキュメントにもある通り、
PNG形式は、データ損失のない画像コンテンツを提供します。つまり、画像データをPNG形式で保存してから、それを読み込むとまったく同じピクセル値に戻すことができます。また、PNGの最適化された保存形式は、画像データをより高速に読み込めるように設計されています。PNGは、iOS用の画像形式としてよく使われています。
最適化されていない画像フォーマットを使う限り、パフォーマンスに少なからず影響が出ることを気をつけておきたい。(今回はデータ量を抑えるためだけの目的でJPEGを試した)