28
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ICU のライブラリサイズを削減する方法

Posted at

ICU とは Unicode 関連の処理をまとめたクロスプラットフォームでポータブルな、そして実績があり MITライセンス と組み込みにやさしいライブラリである。

ICU の変換や正規化などに使われるリソースデータは 20MB と大きく、再配布するアプリケーションには大きな足かせとなる。これを削減したい場合はどうすればよいだろうか?

答えは公式の FAQ にのっている。これに基づいて削減してみよう。
http://userguide.icu-project.org/icufaq#TOC-How-can-I-reduce-the-size-of-the-ICU-data-library-

1. ICU Data Customizer を使う

ICU Data Customizer は ICU で使われる変換テーブル、正規化ルールなどを必要に応じてカスタマイズし、データを生成してダウンロードできる便利なサービスである。
http://apps.icu-project.org/datacustom/

バージョン毎に異なるので、古い ICU のバージョンを使っている場合はそれに対応するものを使う必要がある。例えば ICU 49 なら以下を使う。
http://apps.icu-project.org/datacustom/ICUData49.html

デフォルトでは圧縮なしで約 20MB あることがわかる。ここでは ShiftJIS <=> UTF-8 の変換だけ行うというニーズをやってみる。

The estimated uncompressed size of this data library is 19195 KB

まず変換テーブル (Charset Mapping Tables) だけ残し、残りのチェックを外す。これだけでなんと約 25% になる。

The estimated uncompressed size of this data library is 4696 KB

つぎに一旦変換テーブルのチェックを外し、ShiftJIS 関連にチェックを入れる(もしかしたら ibm-943_P15A-2003 だけでよいかもしれない)。

  • ibm-942_P12A-1999.cnv
  • ibm-943_P130-1999.cnv
  • ibm-943_P15A-2003.cnv
  • ibm-5039_P11A-1998.cnv

すると 500KB 程になり、元の約 20MB に比べると約 40 倍の差が出た。これで "Get Data Library" ボタンをクリックするとダウンロードできるようになる。

The estimated uncompressed size of this data library is 503 KB

ちなみに一度ダウンロードすると 410 で再ダウンロードは出来ないので、再ダウンロードしたい場合はもう一回 "Get Data Library" で再生成しておく必要がある。また、UTF-8/UTF-16 はコアにバンドルされているため問題ない。

2. ファイルを置換してビルドする

その前に置換前の icudata ライブラリを確認してみよう。ダウンロードしてすぐ ../source/runConfigureICU MacOSX した場合はサイズは約 20MB あることがある。

-rwxr-xr-x  1 hkrn staff 20787296 libicudata.50.1.dylib

話に戻って入手したデータは ICU のソースコード中の icu/data/source/data/in/icudt[xx]l.dat ([xx] は ICU のバージョン) と置換し、もう一度ビルドする。そしてサイズを確認すると 520KB 程度になっていることがわかる。

-rwxr-xr-x  1 hkrn staff  520288 11 17 libicudata.50.1.dylib

文字コードを変換するだけなら通常 icuuc と先ほどの icudata のみでよく、必要に応じて icui18n をリンクする。前者の場合静的リンクしても 2MB 程度になり、小型化を図ることが出来る。

28
26
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?