Snapアプリは遅い?
「Snap」はソフトウェアの管理や配置を行うパッケージ管理システムです。「APT/dpkg(deb)」もソフトウェアの管理や配置を行うパッケージ管理システムです。
どちらもソフトウェアのインストールやアンインストール、アップデートなど、ソフトウェア管理に使用される仕組みであり、「Ubuntu」ではデフォルトで「Snap」と「APT/dpkg」を採用しています。
ソフトウェアは複数のファイルから構成され、それらのファイルを一つに纏めたパッケージで配布されます。
「Snap」で利用されるパッケージ形式は「Snaps(Snapパッケージ)」であり、「APT」で利用されるパッケージ形式は「deb(debパッケージ)」です。
SnapとAPTの違い
「Snap」も「APT」もソフトウェアの管理を行う仕組みですが、これらの違いの一つは「Snap」は「APT」と異なりソフトウェアをコンテナーとして管理及び配置する点です。「Snaps」はアプリケーションコンテナーであり、既存のシステムから隔離された環境にソフトウェアを配置し、既存のシステムに影響を与えずにソフトウェアを配置でき、セキュアな環境でソフトウェアを実行できます。
よく挙がる話題
「Snap」のようにアプリケーションをコンテナー化する仕組みでは、コンテナー化されたアプリケーションは動作が重い(パフォーマンスが悪い)という話題がよく挙がります。ユーザーの感覚や主観
デスクトップアプリケーションのパフォーマンス及びその感じ方は、ユーザーの感覚や主観で左右されることが往々にしてあります。そのためデスクトップアプリケーションのパフォーマンス分析は、そう単純なことではありません。
加えてパフォーマンスは、ユーザーのハードウェア環境やソフトウェアの設定、システムの負荷状況にも依存します。
例えばブラウザーのユーザーから見たパフォーマンスは、ネットワークのスループットやネットワークの遅延により、異なる結果になります。
またディスクI/Oを頻繁に行うアプリでは、高速なストレージを搭載しているシステムの方がより良いパフォーマンスを得られるでしょうし、CPUに依存する処理ではCPUクロックが高いCPUの方がより良いパフォーマンスを得られるでしょう。
アプリケーションの特性も考慮する必要があり、昨今のマルチコアCPUを活かして処理を行うアプリもあれば、シングルコアで処理を行うアプリもあります。
さらにユーザーが利用しているデスクトップ環境や「Linux kernel」のバージョンも、アプリのパフォーマンスに影響を与える可能性があります。
様々な要素が絡み合う
このようにデスクトップアプリケーションのパフォーマンスと一口に言っても、様々な要素が絡み合った上で導き出されるものであり、「Snaps」や「deb」といったパッケージ管理システムの違いだけでパフォーマンスを語るのは困難です。この状況を踏まえた最善のパフォーマンス分析方法は、全く同じシステム上でこれらのパフォーマンスを分析・比較することであり、ハードウェアやデスクトップ環境といったパフォーマンスに影響を与え得る要素を統一化し排除することです。
この手法はパフォーマンスの包括的なテストにはなりませんが、理に適った手法ではあります。
Snapアプリケーションの初回起動時
Snapアプリケーションの初回起動時は、起動に時間がかかります。これはSnapデスクトップ統合ツールによるもので、このツールはフォントの設定やテーマの設定などアプリケーション環境の初期化と準備を行います。
開発チームは初回起動時にかかる時間を短縮するため、「snap 2.36.2」で大きな改良を行いました。
core snapにフォント設定を行う仕組みを採用することで、インストール時に自動的にフォントキャッシュを生成するようにし、アプリの起動時間を短縮します。
テスト内容
ここでは以下のテスト内容でテストが行われています。- 一般的に使用される複数のアプリケーションをSnap/APTで比較する
- アプリケーション実行時のCPUとメモリー使用量の平均及び最大値の調査と分析
- 一般的に使用されるデスクトップ向けハードウェアを複数使用(ソフトウェア以外の要素が影響を与えていることを確認するため)
テスト内容の詳細は、以下を参照してください。
テストには、「VLC」と「GIMP」が使用されています。
またOS及びデスクトップ環境は、「Kubuntu 18.04(KDE Plasma/Snaps/deb)」と「Fedora 28(GNOME/Snaps/rpm)」が使用されています。
テスト結果から分かること
実行中のアプリのパフォーマンスは、パッケージ種の違いによる有意な差は見られませんでした。アプリの起動時間に差が出る
ただしアプリの起動にかかる時間は、Snapsの方が時間がかかります。アプリがキャッシュに配置されている状態では、アプリの起動に約200ミリ秒多くの時間がかかっています。
アプリがキャッシュに配置されていない状態では、アプリの起動に約3秒多くの時間がかかっています。
前者はともかく後者は、ユーザーに”Snapアプリは遅い”という印象を抱かせる結果に繋がります。
アプリ開発者に対する取り組み
開発チームはアプリ開発者にUXを改善するためにできる取り組みを、今後も紹介して行く予定です。またSnapに関する提案や意見を以下のフォーラムで募集しています。