BAD_ACCESS

おもにiOS、ときどき変な電子工作、ガジェット話。

アプリをなんとか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を試した)