その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

大量の画像ファイルを圧縮したzipファイルをiPhoneで解凍するのに要する時間

画像をたくさん使いたい、でもバイナリサイズ20MBは超えたくないという場合に、


1. 初回起動時にサーバーからダウンロードする
2. zipで圧縮しておいて初回起動時に解凍する
3. あきらめる。なんとか切り詰める


といった選択肢があるわけですが、サーバー連携がないアプリで1のためだけにサーバー用意するのも何だし、サーバーがある場合にしても、初回起動時にオフラインだと遊べないのも何なので、2の選択肢を試してみました。


とりあえず画像をzip圧縮するとどれぐらいサイズ減るのかなと、手元にある94MB、91項目の画像ファイル群をmacの右クリックメニューから圧縮したところ、なんと3MBに。
圧縮画像は圧縮対象によって大きく変わるとは思いますが、それにしても劇的なサイズダウン。。

計測結果

zipファイルを解凍するモックアプリを作って解凍に要する時間を計測してみました。


iPhone4で前述したzipファイルを解凍するのに要した時間は、
32.2秒
でした。


半分ぐらいにして15秒ぐらいに納めれば実用的かも。
あるいは見せ方次第で30秒でもありかも。
(やってから思い出しましたが、かのGoodReaderでもzip展開するときかなり待たされますね)

zipファイル解凍に用いたライブラリ

zipを扱うライブラリとしては
http://d.hatena.ne.jp/hisaboh/20081220/p3
こちらの「HetimaUnzip改変版」がメジャーな気がしますが、
今回の実験では下記記事にて
http://d.hatena.ne.jp/shunsuk/20100416/1271406745

iPhone SDKだと、Cのライブラリをそのまま使えるので、libzを使うことができます。でも、Objective-Cなカンジで書きたいですよね。Objective-Cでzipを扱うライブラリをいくつか触ってみましたが、いちばん手軽に使えそうなライブラリを紹介します。

と評されている「ZipArchive」を用いました。