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 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Linux Mint その292 - Linux kernel 7.0 採用の Linux Mint 22.3 リリース・システム管理ツールにカーネル管理機能追加など
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Linux その422 - GNOME Boxes の再構築と未来・Flatpak のみの提供やモダンな機能の実装など
    GNOME Boxes の再構築と未来 GNOME Boxes の再構築と未来が以下で紹介されています。
  • Ubuntu 26.04 その68 - Ubuntu 26.04.1 LTS がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.04.1 LTS リリース 2026年8月27日、Ubuntu 26.04.1 LTS がリリースされました。
  • Kubuntu その117 - Kubuntu 26.04 LTS にもっと手厚いサポートを・最高の信頼性を誇る KDE 搭載ディストリビューションを目指して
    最高の信頼性を誇る KDE 搭載ディストリビューションを目指して Kubuntu 26.04 LTS に手厚いサポートが導入されました。
  • Linux その421 - GNOME Shell のデザイン構想と長期的な見通し
    GNOME Shell のデザイン構想と長期的な見通し GNOME Shell のデザイン構想と長期的な見通しが、以下で紹介されています。
  • Linux その420 - KDE Plasma で実装予定の新機能や改善・UI レイアウトの調整やリモートデスクトップの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Windows その29 - Windows 向け Coreutils 登場・Coreutils のインストールやコマンドの一覧など
    Windows 向け Coreutils 登場 Windows 向け Coreutils が登場しました。
  • Linux その386 - Arch Linux の AUR パッケージで悪意あるコミットが続く・今度はソースコードの難読化か
    Arch Linux の AUR パッケージで悪意あるコミットが続く Arch Linux の AUR パッケージで悪意あるコミット(マルウェア)が続いています。
  • Ubuntu 18.04 その195 - PolicyKitにクラッシュや権限の昇格など複数の脆弱性・今すぐアップデートを
    PolicyKitの脆弱性 2018年7月16日、クラッシュや権限の昇格など複数の脆弱性に対応した「PolicyKit」がリリースされました。
記事のピックアップ
オプション