Snap (ソフトウェア)

Snap（旧称・Snappy）とはカノニカルが設計・開発したソフトウェアデプロイメントシステムかつパッケージ管理システムであり、元々はUbuntu Phoneオペレーティングシステム用に設計・開発された。パッケージは 'Snap' と呼ばれ、Snapを使うツールは 'Snapd' と呼ばれる。Snapは様々なLinuxディストリビューションで動作するので、ディストリビューションの上流のソフトウェアデプロイメントに依存しない。Snapのシステムは携帯電話、クラウド、IoTやデスクトップパソコン向けに設計されているhttps://snapcraft.io/。

 機能 
ソフトウェアにおける "Snap" アプリケーションパッケージは自己完結型であるため、様々なLinuxディストリビューションで動作する。APTやYUMなどの伝統的なLinuxパッケージ管理のアプローチでは、Linuxパッケージ毎に適合させた特別なパッケージが必要となるため、開発者からソフトウェアのエンドユーザーに対してのアプリケーションデプロイメントが遅延する原因となるが、Snapのアプローチはこれとは異なるJohn Kingによるbugs.launchpad.net/ubuntu上のUpgrading packaged Ubuntu application unreasonably involves upgrading entire OS Bug #578045 (2010-05-10)Linus Torvalds on the problems of distro packaging DebConf 2014におけるリーナス・トーバルズ。Snap自体は外部のストア（アプリケーションストア）に全く依存せずどこからでも入手できるため、上流のソフトウェアデプロイメント用に利用可能である。SnapがUbuntuやそれ以外のLinuxにデプロイされるとUbuntu app storeがデフォルトバックエンドとして使用されるが、他のストアもバックエンドとして利用可能である。

開発者はコマンドラインツール、バックグラウンドサービス、そしてデスクトップアプリケーションのいずれかの作成においても同様にSnapを使うことができる。Snapアプリケーションを使うと、アトミック操作を通じた更新や差分による更新が可能であるhttps://web.archive.org/web/20151118103457/http://www.ubuntu.com/cloud/snappyhttp://www.zdnet.com/article/ubuntu-snap-takes-charge-of-linux-desktop-and-iot-software-distribution/。

2016年6月、SnapdはUbuntu CoreだけでなくどのLinuxディストリビューションでも利用できるよう、様々なLinuxディストリビューションに移植された。SnapdはArch Linux、CentOS、Debian、Fedora、Gentoo Linux、OpenWrt、openSUSEで既に利用可能であるか、または開発中である。各ディストリビューションはSnapメタデータを解釈することにより、ディストリビューション固有の方法でSnapのセキュリティやその他の機能を実装することが可能となる。

 Snapcraft 
Snapcraftは、開発者によって作られたプログラムをSnap用にSnapフォーマットでパッケージングするツールである。

 '.snap'ファイルフォーマット 
snapファイルフォーマットは圧縮された単一のファイルシステムであり、ホストのオペレーティングシステムにより動的にマウントされる。Snapフォーマットには宣言的メタデータも含まれており、これは適切に整形された安全なサンドボックスやコンテナを設定するためSnapシステムにより解釈される。

 反響と使用例 
Snapパッケージは消費者向け製品からエンタープライズデバイス管理ゲートウェイまでをカバーするIoT環境に展開されている。SnapはUbuntu 16.04デスクトップイメージからデフォルトで含まれている。

近年のシステムにおいて、Linuxディストリビューションに依存しない様々なLinuxディストリビューションへのポータブルソフトウェアデプロイメントという、Snapと類似の目標を持つシステムには、Flatpakがある。Snapはモバイルに焦点を当てたカノニカルの "Click" パッケージフォーマットの進化形であり後継であるhttps://web.archive.org/web/20150316010129/http://manpages.ubuntu.com/manpages/trusty/man1/click.1.htmlhttps://askubuntu.com/questions/583076/difference-between-snappy-and-click/635560#635560。

またsnapファイルはhttps://search.apps.ubuntu.com/api/v1/package/の後にソフト名を入れると最新版のみがダウンロード出来る。

 批判 
スクリーンキャプチャツールPeekの開発者は、Snapパッケージへのサポートを中止した。一方、FlatpakおよびAppImageのサポートは継続している。その理由として以下の点を挙げている。

snapdが公式のArch Linuxリポジトリで利用できなくなった事実を批判し、Snapは「まだ主にUbuntuをターゲットにしている（Ubuntu show）」。

開発者にとって、snapへの対応はFlatpakやAppImageよりも多くの時間が取られる。

Snapはsnapsプラットフォームを利用できるということ以外にあまり利点がない。

Ubuntu Software CenterにはAppStreamのデータ以上の利点はないにもかかわらず、専用のエントリーデータが必要である。

Linux Mintは、APTでChromiumをインストールしようとすると自動的にSnapパッケージをインストールする仕様に対し、SnapがAPTに取って代わることは決してないという約束を破るものとして、Linux Mint20より最初からSnapをインストールしない従来の仕様を堅持するとともに、APTからSnapのインストールを無効にする措置を取った(ユーザーが手動で特定のファイルを削除すればインストール可能)、また独自にビルドしたChromiumパッケージの提供を開始した。

 関連項目 

 AppImage
 Autopackage
 Flatpak
 は、をアプリケーションバンドルとして使用している。

 脚注 

 外部リンク 


Category:フリーパッケージ管理システム
Category:Ubuntu
Category:ソフトウェア配布
Category:オペレーティングシステムの仕組み
Category:GNU General Public Licenseを利用するソフトウェア
Category:Pythonでプログラムされた自由ソフトウェア
Category:Goでプログラムされた自由ソフトウェア