kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 20.10 その74 - 動的にSnapパッケージの圧縮形式を変更する仕組みの検討

動的にSnapパッケージの圧縮形式を変更する仕組みの検討

以前「Snap」パッケージの圧縮形式を変更し、アプリの起動時間を大幅に短縮する取り組みを紹介しました。


  • パッケージの圧縮形式の変更によるSnapアプリの大幅な起動時間短縮

そして次に状況に応じて動的にSnapパッケージの圧縮形式を変更する仕組みが検討されています。

  • Why LZO was chosen as the new compression method

ソフトウェアの起動時間とパッケージサイズのトレードオフ

アプリの起動に時間がかかる課題に対し開発チームは、パッケージの圧縮形式に「LZO」を導入することでこの課題に対応しました。
これによりアプリの起動時間が2倍から3倍程度短縮されました。
しかしその一方でパッケージのサイズは増加しました。
パッケージに含まれるファイル構成にもよりますが、約1.3倍ほどサイズが増大しています。

これら2つの要素はお互いにトレードオフの関係にあり、多くのユーザーにとってどこで線を引くのが好ましいのか、開発者にとっては悩ましい問題です。

ソフトウェアが動作する環境

「Snap」はデスクトップアプリのためだけに作られた仕組みではなく、PCと異なり大幅にハードウェアリソースが制限されるIoTや組み込みシステムでも利用されている仕組みです。
例えば「Ubuntu Core」はIoT/組み込みシステム向けに最適化されたOSです。

  • Build secure IoT devices with Ubuntu Core

「Ubuntu Core」はまさしくSnapsで構成されたOSです。
このような環境はPCと比べストレージサイズに大きな余裕がなく、パッケージサイズの小ささが重要視されるケースもあります。

なぜ圧縮形式にXZを採用していたのか

以前Snapsでは、圧縮形式に「XZ」のみをサポートしていました。
「XZ」が採用された主な理由は、互換性とサイズでした。

Snapsを特定のLinuxディストリビューションに依存しない仕組みにするため、様々な環境(Linux kernel)で利用可能な圧縮形式を選択する必要がありました。
これはLinuxディストリビューションによって採用している「Linux kernel」が異なるためであり、「Linux kernel」が幅広くサポートしている圧縮形式を採用し、多くの環境で互換性を確保する必要がありました。

またSnapsを提供する主要なプラットフォームの1つに、IoTデバイスがあります。
IoTデバイスはストレージに余裕がなく、可能な限りサイズを小さくする必要がありました。

そして当時これらの条件を満たす圧縮形式が「XZ」でした。
今でこそ「ZSTD」のように新たに利用可能になった圧縮形式(アルゴリズム)もあります。

  • Zstandard

しかし当時このような圧縮形式は存在していませんでした。

LZOの採用

先に紹介したようにアプリの起動に時間がかかる課題がユーザーから寄せられました。
これに対応するためパッケージの圧縮形式に新たに「LZO」が追加されました。

「LZO」は古い「Linux kernel」やシステムでも利用可能であり、他の圧縮方式と比較して相対的にパフォーマンスが高く、また圧縮率も好ましくストレージの使用量やネットワークの使用量を節約でき、「XZ」採用時に条件となっていた前提を十分に満たす圧縮形式であったためです。

これでパッケージの圧縮形式に「XZ」か「LZO」を利用できるようになりました。
Snapアプリの開発者は「snapcraft.yaml」の「compression」で「xz」か「lzo」を指定し、Snapアプリのビルド時に圧縮形式を選択できるようになりました。
ちなみにデフォルトの圧縮形式は「XZ」です。

ここまでが現状です。

動的に圧縮形式を変更できるようにしてみてはどうだろうか?

ソフトウェアの起動時間とパッケージサイズは、トレードオフの関係にあります。
そして様々なLinuxディストリビューションでSnapsを利用できるようにするためには、幅広く利用可能な圧縮形式を選択する必要があります。
そしてそれらをうまく満たす圧縮形式が採用されています。

しかし個々のユーザーから見ると、自身の環境にとって最も都合の良い圧縮形式を利用したいと思うでしょう。
新しい「Linux kernel」を利用し従来より優れた圧縮形式を利用できるのならば、ユーザーはその圧縮形式を利用したいと考えるでしょう。

またソフトウェアの起動時間よりサイズの小ささを重視するユーザーもいれば、サイズは気にせずパフォーマンスを最大限重視するユーザーもいるでしょう。
後者のユーザーの中には圧縮すら不要と考えるユーザーもいるかもしれません。

これらを実現するため、「Snap Store」もしくはユーザーの環境でパッケージを動的に圧縮し直すような仕組みが検討されています。
具体的な内容はまだこれからです。

Ubuntu
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その68 - Ubuntu 26.04.1 LTS がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.04.1 LTS リリース 2026年8月27日、Ubuntu 26.04.1 LTS がリリースされました。
  • Linux その429 - GNOME 向けアプリとアップデートの紹介・ RSS リーダーのインポート機能や映画マトリックスのデスクトップ効果など
    GNOME 向けアプリとアップデートの紹介 GNOME 向けアプリとアップデートの紹介です。
  • Ubuntu 18.04 その195 - PolicyKitにクラッシュや権限の昇格など複数の脆弱性・今すぐアップデートを
    PolicyKitの脆弱性 2018年7月16日、クラッシュや権限の昇格など複数の脆弱性に対応した「PolicyKit」がリリースされました。
  • Ubuntu 26.10 その24 - Ubuntu 26.10 の公式壁紙と壁紙コンペの結果発表
    Ubuntu 26.10 の公式壁紙と壁紙コンペの結果発表 Ubuntu 26.10 の公式壁紙と壁紙コンペの結果が発表されました。
  • Ubuntu 26.04 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Linux その428 - KDE Plasma で実装予定の新機能や改善・マウスの中央ボタンの機能改善やリモートデスクトップの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Lubuntu その28 - Lubuntu 26.04 LTS の新機能と変更点・既知の問題
    Lubuntu 26.04 LTS の新機能と変更点 リリースノートから Lubuntu 26.04 LTS の新機能と変更点を紹介します。
  • Ubuntu 26.10 その23 - x86-64-v3 に対応したデイリービルドのディスクイメージが利用可能に
    x86-64-v3 に対応したデイリービルドのディスクイメージが利用可能に x86-64-v3 に対応した Ubuntu Desktop 26.10 のデイリービルドのディスクイメージが利用可能になりました。
  • Linux その437 - KDE Plasma で実装予定の新機能や改善・オーバービュー効果の改善や Kup の通知機能の改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Ubuntu 26.10 その22 - Dracut のパフォーマンス改良・初期 RAM ディスクのサイズ削減と生成時間の短縮
    Dracut のパフォーマンス改良 Ubuntu 26.10 では Dracut のパフォーマンス改良作業が行われています。 その過程が以下で紹介されています。
記事のピックアップ
オプション