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 CPUfreq その1 - CPUfreqについて・ CPUfreqドライバーについて・ CPUfreqガバナーについて
    CPUfreq   CPUfreqは、CPUのクロック数を動的に変更する機能です。   CPUfreqを利用することで、OSの負荷に応じて動的にCPUのクロック数を調整することができます。  これにより、省電力効果を得ることができます。   CPUfreqを利用する場合...
  • Ubuntu 26.04 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Ubuntu 24.04 その93 - Linux kernel 7.0 が利用可能に・Linux kernel 7.0 にアップグレードするには
    Linux kernel 7.0 が利用可能に 現在 Ubuntu 24.04 LTS を利用しているユーザーは、Linux kernel 7.0 へアップグレードできるようになりました。
  • Ubuntu 22.04 その79 - 画面ロックの有効・無効を設定するには・画面ロック時の設定をカスタマイズするには
    画面ロックの有効・無効を設定するには 一定時間ユーザーによる操作がない時に、自動的に画面をロックしパスワードで保護したり、画面をブランク状態にできます。
  • Ubuntu 26.04 その59 - amdgpu ドライバーでパフォーマンス低下のお知らせ
    amdgpu ドライバーでパフォーマンス低下のお知らせ 次期 Linux kernel のアップデートで、amdgpu ドライバーのパフォーマンスが低下するお知らせが出ています。
  • Linux Mint その120 - Linux Mint 19.2のTipsとトラブルシューティング
    Linux Mint 19.2のTipsとトラブルシューティング リリースノートから「Linux Mint 19.2」のTipsとトラブルシューティングを紹介します。
  • Ubuntu 26.04 その56 - amdgpu ドライバーでシステムがフリーズする現象
    amdgpu ドライバーでシステムがフリーズする現象 amdgpu ドライバーでシステムがフリーズする現象が報告されています。
  • Linux その402 - KDE Plasma で実装予定の新機能や改善・録音オプションの追加や VRAM の使用量表示など
    KDE Plasma で実装予定の新機能や改善 2026年7月11日、KDE Plasma で実装予定の新機能や改善が以下で紹介されました。
  • Linux Mint その291 - 次期バージョンで Wayland セッションの提供・Cinnamon の改良など
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Linux その407 - COSMIC DE 開発7ヶ月の歩み・COSMIC DE に搭載された新機能のまとめ
    COSMIC DE 開発7ヶ月の歩み COSMIC デスクトップ環境の開発者が、ここ7ヶ月の開発の歩みと、今までに COSMIC デスクトップ環境に搭載された新機能を紹介しています。
記事のピックアップ
オプション