ホーム > 製品情報 > SophiaCompress(BREW) EARTH > 圧縮原理

SophiaCompress(BREW) EARTH 圧縮原理

SophiaCompress(BREW) EARTH は、BREW mod ファイルを圧縮し、これを解凍し、 実行するための「ブートローダー」を生成するソフトウェアです。

ダイレクト圧縮、ファイル分割圧縮、フォーク圧縮の 3 つの方式がサポートされています。 以下に述べるメモリ効率の観点の理由から、ファイル分割圧縮またはフォーク圧縮を選択することを推奨します。

  

ダイレクト圧縮では、ブートローダーが埋め込まれた圧縮アプリだけのファイルが生成されます。 このファイルは、アプリ実行時にアプリ本体とは別にヒープ上に常駐します。そのため、他の方式に比べてメモリ効率が劣ります。

ファイル分割圧縮では、 ブートローダーと圧縮アプリの 2 つのファイルが生成されます。 アプリ実行時、アプリ本体以外では 4 〜 8 KB のブートローダーだけがヒープ上に常駐するので、 メモリ効率に関してはダイレクト圧縮よりも優位性があります。

フォーク圧縮では、ブートローダーに圧縮アプリの起動時に画像やテキストを表示するためのプラグインを埋め込むことが可能です。 ファイル分割圧縮と同様にブートローダーと圧縮アプリの 2 つのファイルが生成されます。 プラグインがブートローダーに埋め込まれるので、ブートローダーのサイズは約 "5 KB + プラグインのサイズ" になります。 アプリ実行時、アプリ本体以外ではのブートローダーだけがヒープ上に常駐します。

利用者は、以上の 3 つの圧縮方式から目的に応じて最適な方式を選択できます。

※ SophiaCompress(BREW) EARTH 5.0 から LZMA アルゴリズムがサポートされました。


ダイレクト圧縮

ダイレクト圧縮
  1. SophiaCompress(BREW) EARTH を起動し、 圧縮する BREW アプリの mod ファイルを選択して実行します。
  2. mod ファイルは圧縮され、ブートローダーと圧縮アプリが一体となったファイル(APPL.mod )が出力されます。
  3. 圧縮率は 70% 程度です。
  4. ここまでが開発時の動作の流れです。
  5. APPL.mod は携帯電話のデータフォルダに格納されます。
  6. APPL.mod が、ヒープにロードされます。
  7. 圧縮アプリは、ブートローダーによりヒープに展開されて実行されます。
  8. ※1. 圧縮アプリのデータがヒープに常駐するため、 ヒープ使用効率は「ファイル分割圧縮」や「フォーク圧縮」よりも劣ります。
  9. ※2. mif ファイルでファイル特権レベルを設定する必要はありません。

ファイル分割圧縮

ファイル分割圧縮では、アプリ圧縮後、 ブートローダーと圧縮アプリの 2 つのファイルが生成されます。

ファイル分割圧縮
  1. SophiaCompress(BREW) EARTH を起動し、圧縮する BREW アプリの mod ファイルを選択して実行します。
  2. mod ファイルは圧縮され、ブートローダー ( APPL.mod ) と圧縮アプリ ( APPL.scb ) の 2つのファイルが出力されます。
  3. 圧縮率は 70% 程度です。
  4. ここまでが開発時の動作の流れです。
  5. ブートローダーと圧縮アプリは、携帯電話のデータフォルダに格納されます。
  6. ブートローダーが、ヒープにロードされます。
  7. 圧縮アプリは、ブートローダーにより、ヒープに展開され、実行されます。
  8. ※1. 圧縮アプリのデータはヒープにロードされないので、ヒープ使用効率は「ダイレクト圧縮」よりも優れています。
  9. ※2. ブートローダーのサイズは約 3 KB ですが、実際にはクラスタ単位のサイズ(4, 6, または 8 KB)になります。
  10. ※3. mif ファイルでは、ファイルの特権レベルを設定する必要があります。

フォーク圧縮

フォーク圧縮は、ファイル分割圧縮の一種です。 ブートローダーにプラグインを埋め込む点だけが異なります。

フォーク圧縮
  1. SophiaCompress(BREW) EARTH を起動し、 圧縮する BREW アプリの mod ファイルとプラグイン ( PlugIn.mod ) を選択して実行します。
  2. mod ファイルはプラグインと一緒に圧縮され、ブートローダー ( APPL.mod ) と圧縮アプリ ( APPL.scb ) の 2つのファイルが出力されます。
  3. このとき、プラグインのコードは、ブートローダーに埋め込まれています。
  4. 圧縮率は 70% 程度です。
  5. ここまでが開発時の動作の流れです。
  6. ブートローダーと圧縮アプリは、携帯電話のデータフォルダに格納されます。
  7. ブートローダーが、ヒープにロードされます。
  8. 圧縮アプリは、ブートローダーにより、ヒープに展開され、実行されます。
  9. 圧縮アプリのロード・展開前にブートローダーに組み込まれたプラグインのコードが実行できます(ロード・展開後、または、ロード展開のエラー時に実行することも可能です)。
  10. ※1. 圧縮アプリのデータはヒープにロードされないので、ヒープ使用効率は「ダイレクト圧縮」よりも優れています。
  11. ※2. ブートローダーのサイズは、約 5 KB + プラグインモジュールのサイズです。実際にはクラスタ単位のサイズになります。
  12. ※3. mif ファイルでは、ファイルの特権レベルを設定する必要があります。

※フォーク圧縮は、 アプリのサイズが大きくてロード・展開に 2 〜 3 秒かかるときに、 その間画像やテキストを表示したい場合に有効です。