BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース FacebookがSuperpackでコード分析を活用してAndroidアプリを圧縮

FacebookがSuperpackでコード分析を活用してAndroidアプリを圧縮

ブックマーク

原文(投稿日:2021/09/20)へのリンク

最近、記事で、FacebookはSuperpackについて説明している。これはAndroidアプリ圧縮の新しい手法で、コンパイラ分析にデータ圧縮を組み合わせたものだ。まだすべての人が利用できるわけではないが、Facebookはオープンソース化を望んでいる。

Facebookのエンジニアによると、Superpackは過去2年間で、AndroidアプリのサイズをデフォルトのAndroid APK Zip圧縮から20%以上削減することができた。

Superpackのベースとなるアプローチは、コルモゴロフのアルゴリズムによる複雑さの測定に基づいています。これは、データの情報コンテンツを、そのデータを生成できる最短のプログラムの長さとして定義するものです。

たとえば、フィボナッチ数列を生成するプログラムは、フィボナッチ数のリストの圧縮表現と見なすことができる。Facebookによると、コルモゴロフの複雑さの軽減はデータ圧縮の新しいアプローチではない。しかし、Superpackで際立つ点は、コンパイラーメソッドと最新の圧縮技術を組み合わせていることである。

Superpack圧縮は、解析やコード生成などの一般的なコンパイラ技術に加えて、Satisfiability modulo theories(SMT)ソルバーなどの最近の技術革新を活用して最小のプログラムを見つけます。

コンパイラによって、圧縮ステップを効果的に強化するために使用されるプログラムに関するセマンティック知識が提供される。この強化は、冗長性の排除と頻繁な情報の表現の最適化、つまりエントロピーコーディングの削減の両方を支援することにより提供される。

このアプローチは、実行可能コードを圧縮するために使用される。非コードデータの場合、Superpackはそれらを解凍時に実行して元のデータを生成できるプログラムに変換しようとする。

この手法の例は、Dex参照の圧縮である。Dex参照はDexコードの既知の値に対するラベルである。Dex参照には、大きな局所性があります。この局所性を活用するために、参照を論理レジスタに最近の値を格納する言語に変換し、ピン留めされた値からのデルタとして次の値を発行します。

Facebookによると、Superpackの制限の1つは、Androidアップデートの作成と配布に使用されるツールとのインテグレーションがないことだ。実際、Superpackで圧縮されたアプリの更新は、Zipで圧縮されたアプリの更新よりも大きな処理となる。これは、基本的に、アプリの更新が圧縮されたアーカイブとして配布されるためである。そのため、アプリのコンテンツを解凍し、そのデルタを計算し、その後、再度圧縮する必要がある。

このタイプの問題は、SuperpackとAndroidツールの間のよりきめ細かいインターフェース、Androidの配布メカニズムのカスタマイズ性の向上、Superpackのファイル形式と圧縮方法の公開ドキュメントによって対処できると考えています。

前述のように、SuperpackはFacebook以外では利用できない。ただし、そのアプローチは、iOSなど他のプラットフォームにも複製可能だ。Facebook自体は、より広く利用できるようにすることを目的として、これらに取り組んでいる。

FacebookのエンジニアはSuperpackについて、ここに要約しているものよりもはるかに多くカバーしているので、全詳細についてはオリジナルの記事をお見逃しなく。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT