Nodachisoft Nodachi Sword Icon
  
@あまじ✎ 2020年7月18日に更新

winget、Chocolatey、scoop の比較と開発環境の構築自動化

開発環境が変わったとき、必要なソフトをすぐに導入できるようにしておけると便利ですね!

開発する前に、自分の開発環境にあった exe を公式からダウンロードしたり zip を展開したり、依存関係を気にしたり、といった手動作業はずっと 1 つの PC でやるには良いのですが、複数人数で開発したり、別の環境で毎回同じ手順を繰り返したりするのは時間のムダです。

ソフトウェア管理ソフトを使うことで、 Windows 上で必要なソフトをまとめてコマンド一本でパパっとインストールできます。

ここは主流なCLI(真っ黒な画面にコマンド打ちこんで操作するやつ) の無料のソフト管理ソフトの比較と利用方法をまとめた資料です。

当記事は以下の管理ソフトを対象に調べましたので記録しておきます。

記事で扱うパッケージ(アプリ)管理ソフト

  • Chocolatey ... このソフトは Unity や VisualStudioCode、JDK、NodeJS だけでなく Chrome や VLC など、開発者向け以外のソフトも扱える。開発者じゃなくても使って便利だけど、アンインストール時にうまくデータが消えずトラブルにあったこともあり、トラブル対応できる開発者以外にはちょっと難易度高い印象。
  • Scoop ... 環境を汚さずに手軽にアプリのインストール、アンインストールの管理ができるし、管理の構造もシンプル。扱っているパッケージは Chocolatey と比べたら少な目だが、プログラマ等の開発環境構築ソフトの扱いに特に力が入れられていて、フロントエンド開発系やサーバサイド開発系のソフトを入れるとき、これさえあれば一通りよくある環境を作れる。
  • winget ... Microsoft社公式のパッケージ管理ソフト。2020年7月18日時点ではまだ正式リリースはしてない。なので導入しやすさとかは想定も含みます。

各ソフトのインストールとか基本操作、注意点とかは別途まとめてますので良ければご参照ください!

パッケージ管理ソフトを使って解消できること

Chocolatey 公式とかにも書いてありますが、インストールしているソフトの管理するソフトを導入することで

  • 時間:ソフトウェア開発は自動化して時間のムダをなくそう!
  • 複雑:昔ながらのツールを管理するのって複雑だし非効率だよ
  • 費用:標準的な管理ソフトが無い状態でのソフトインストールや管理は余計な時間(=お金)食うよ

といった問題を大幅に解決出来ると思います。

前提

ここでは Windows 環境のみを対象としてまとめています。

MacOS の Homebrew や Linux の apt-get や yum などはまた別にまとめたいな。

Chocolatey vs Scoop vs winget (比較)

機能 Chocolatey Scoop winget
開発の中心 Chocolatey Software lukesampson様(個人) Microsoft社
初版 2011年3月~ 2013年9月~ 2020年5月~プレビュー版
ソフト分類 OSS OSS OSS
パッケージ登録数 5,036 件 2,959 件 657 件
利用可能なOS Win7~, Win2003~ Win7~, Win2008~ Win10(ver 1709~)
導入しやすさ
独自リポジトリ作成
無料・有料 無料
一部サービスに有料あり
無料 無料
使いやすさ
パッケージ充実度

3段階評価です。◎…すごい! 〇…十分 △…ちょっと手間とか感じた

どれもそんなに優劣はなくて目的に合わせて使うものを選ぶのがよさそうですね。

「使いやすさ」はあくまで使ってみた私個人の感想なので、 人によって評価は異なるか思います。パッケージのインストール時に権限求められたりとかで自動化の妨げを感じたら△にしてます。

パッケージ登録数は 2020/07/18 時点で公式パッケージ数で確認しました。

  • Chocolatey の標準リポジトリでの件数で集計。(公式ページ上だと213,316 件とあったけどカウント方法がなるべく他とあうようにバージョン重複とかなしのパッケージ数単位で自前集計)
  • Scoop は標準bukets以外に公式で推奨してる 9 個のbuketsを加えて集計。
  • winget は標準のGitHub microsoft/winget-pkgs 登録数から集計しましたー。

ということで、筆者的にはアプリ開発とかする人には現時点で Scoop をオススメしたいと思ってます。

OneGet について

さらに Chocolatey も Scoop の両方に接続して共通したコマンドで管理できる OneGet という Microsoft のソフトもあるようですが、まだ使ったことがないので割愛します。

Chocolatey

特徴

  • 簡単に Windows 環境のソフトウェアを管理し、自動的にサーバへデプロイするような "DevOps" を推進することを目的の一つに置いている。
  • ソフトウェア管理時には Windows で標準で入っている PowerShell の機能を利用しており、複雑な処理を一行のコマンドで実現できるようにしている。
  • 無償版に加えて有料のサービスもある。無償版で必要な機能は一通り使える。

いろんなソフトウェアのインストーラや EXE ファイル、Zip圧縮ファイル、そのほかインストールスクリプト等をパッケージングした Chocolatey のパッケージファイル(拡張子 .nupkg のファイル)の形で配信しています。

利用にあたってのデメリットや注意点

  • 処理が PowerShell に依存しているため、企業内とかセキュリティ制限が厳しい環境だと動かせないことがありそう。
  • 利用には基本的に管理者権限が必要。公式いわく"最後の手段"として管理者権限不要のインストール手順&パッケージ管理手順も用意はされている。当記事では詳細はかかないので、必要な方は 公式の手順をご参照。
  • exe形式や MSI(Microsoftのインストーラ・パッケージファイル)を PowerShell でインストール、アンインストールしているが、失敗することもあり。アンインストール処理が十分でなくゴミが残ったりすることが、結構ある。

Chocolatey と NuGet について

NuGet は Microsoft の .NET フレームワーク向けのライブラリ管理ソフトですが、Chocolatey のパッケージの説明にちょくちょく NuGet の話が出てくるのでどいういう関係性があるのかを備忘しておきます。

NuGet ってなに?

  • NuGet ... 様々な開発向けの.NET ライブラリを導入したり、依存性の管理をしたりできるパッケージ管理。様々な開発ライブラリ・ソフト等が NuGet gallery などで公開されており、IDE(統合開発環境)のVisual Studio やコマンドラインから簡単に必要なライブラリを追加・削除・更新できる。

Chocolatey と NuGet の関係

Chocolatey は NuGet のパッケージング・フレームワークを利用しています。

実際、Chocolatey でソフトをインストールするときは、内部的に NuGet.Core.dll を使っています。

Chocolatey と NuGet は管理したいものが違うよ

Chocolatey の公式FAQ にも書いてありましたが、

NuGet は開発ライブラリを簡単に導入することを主な目的としているのに対し、 Chocolatey はアプリやツールを簡単に導入することを主な目的にしている。別に開発者中心に使ってもらうことを目的にしていない。ということのもよう。

Chocolatey と NuGet のパッケージファイルの違い

具体的に、Chocolatey のパッケージファイル(.nupkgファイル)も NuGet のパッケージファイルも実体は zip ファイル。中身のメタファイルなどが違うようです。

Chocolatey にはソフトウェアインストール時の GUI 処理をすっとばせるように、PowerShell を使ったサイレントインストール(GUIでやりとりしなくてもインストールできるモード)を nupkg ファイルのメタ情報を使って実行する。

nupkg ファイルについて

nupkg ファイルは NuGet パッケージファイルの拡張版で、Chocolatey 用にいろいろなメタ情報が追加で含まれている。なので、 Chocolatey は素の NuGet パッケージに対しても互換性を持っている。(情報元:公式 wiki - What Are Chocolatey Packages?(英語)

おまけ。Chocolatey と apt-get などの apt との違い

Chocolateyの公式FAQ を見た感じだと、下の違いのもよう。

apt と違って、Chocolatey はソースコードの管理は意識してない。 Chocolatey はビルドされた状態のソフトやツールを意識しているソフトだよ。

公式リポジトリ

公式にChocolatey Community Package リポジトリがある。

Web 上からでもパッケージを検索することができるし、Chocolatey をインストールしたら、コマンド上から検索もできる。

このリポジトリは Chocolatey Community が管理してるとのこと。 リポジトリに登録するときは危ないソフトが登録されないように、セキュリティチェック とか品質チェックしているとのこと。

自前サーバ

自身のリポジトリサーバを立てることができるよ。 Chocolatey は NuGet パッケージに Chocolatey 用の拡張情報を付与したものなので、NuGet 用のリポジトリサーバを使えるよ。

リポジトリには幾つか種類があるよ。 "folder/unc share"、"simple server"、"package gallery"、"commercial packge repositories" というリポジトリの種類があるよ。

"folder/unc share" を使えば、 Windowsファイル共有などをつかった、ネットワークで共有するフォルダの 指定のパスをリポジトリにすることができるよ。

詳細は公式の Host your own server(英語)をご参照。

公式は責任持たないけど、という前提付きで、 以下の Chocolatey パッケージに互換性のあるサーバプログラムが紹介されている。どれも NuGet パッケージホスティングサーバ。

  • Klondike ... プライベートな NuGet パッケージホスティングが可能なサーバプログラム。Chocolatey パッケージも配信してるのかは謎。Lucene と呼ばれる検索エンジンへ接続しているっぽい?
  • PHP NuGet ... PHP 上で動作するホスティング用のサーバプログラム
  • LaGet ... PHP の有名フレームワークである Laravel 上で作られたホスティング用のサーバプログラム。

他にも探したらありそう。

Scoop について

Git で公開されているアプリについて、Bucket(リポジトリ的なもの)を通じてインストール、アンインストールや更新をコマンドライン(CLI)管理できる。

特徴

  • ユーザ毎に個別に好きなソフトをインストールできる。例外あるけど。
  • インストールする時の権限許可のポップアップ(UAC と呼ばれる)を排除
  • GUIでのインストール画面はとばせるように
  • 環境変数PATH がいろいろインストールして汚れていくのを防止
  • パッケージのインストールとかアンインストールが他に影響を与えないようにする。
  • パッケージ依存性の解決する。
  • 個々のパッケージの独立性を高めるため、Chocolatey と違って内部的に NuGet を使わない。
  • パッケージ管理するというより、ただの JSON ファイルでインストール方法や依存性を管理。シンプル。
  • アプリは Git 上のリポジトリで管理している。
  • 他のアプリとの依存性次第で、古いアプリをインストールすることもある。

用意されているパッケージの種類

レジストリを汚すようなものや、システム設定、環境を汚すようなパッケージはあまり扱っていないようです。 そういったアプリの事を Scoop 公式ではポータブルアプリと読んでいます。

逆に、単体で動作する exe とか、Powershell スクリプトなんかは、圧縮してなくてもパッケージとして扱えるようにしているとのこと。

ただ、ポータブルアプリ以外も scoop-extras と呼ばれるリポジトリ的なものを Scoop の検索対象に加えれば、 Skype とかもインストールできる。

リポジトリ的なやつ

パッケージを管理しているところを buckets と呼んでます。 Scoop ではインストール直後は「main」と呼ばれる公式の buckets のみインストールされています。

他にも以下のような buckets が公式で紹介されています。 個人的に気になったもののみ抜粋。

buckets 概要
main 汎用的なCLIアプリ
extras mainには合わないなぁというアプリ
games OSSとかフリゲ、フリゲ関連ツール
java JDK関連
nonportable ポータブルアプリ以外のアプリ
php いろんなPHPバージョンとか

winget について

特徴

GitHub で公開されているOSS のアプリ等を winget (Windows Package Manager)を使ってコマンドラインからローカルにインストールしたり更新することができる。

使用に必要なスペック

  • Windows 10 のバージョン 1709 (build 16299) 以降が必要とのこと。

使っているWindows PC のOS のバージョンやビルド番号を調べる、いろんな手順については 別記事のコチラで記載してますので、よろしければご参照いただければ。

詳細な情報は...

Windows Package Manager のプレビュー版参加ページでは、正式リリースしてないので、まだ変更される可能性があるとのこと。プレビュー版のAppInstaller アプリに含まれるとのこと。

今後、正式リリースされたら情報更新していこうと思います。

パッケージ管理ソフト導入前に考えた方が良いこと。

似たような機能をもつソフトが選択可能であれば、 採用するときには将来性を考えたほうが良い思います。

自動的に構築するスクリプトを頑張って作ったは良いものの、 コミュニティや使っている技術の衰退があって、別の管理ソフトに移行しなきゃならないということも十分にあり得ます。

なので他の管理ソフトへの移植のしやすさも、導入する時には頭のカタスミに入れておくといいかもですね。

参考

変更履歴

  • 2020/07/18 初版公開
 
 
送信しました!

コメント、ありがとうございます。

なんかエラーでした

ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。

Twitter:@NodachiSoft_jp
お名前:
 
連絡先:
 
メッセージ:
 
戻る
内容の確認!

以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください

お名前:
 
連絡先:
 
メッセージ:
 
Roboto からの操作ではないという確認のため確認キーを入れてください。
確認キー=95
戻る
 / 
送信確認へ
コメント欄
コメント送信確認へ

関連ありそうな記事(5件)です!

Chocolatey の使い方とインストール手順

#パッケージ管理✎ 2020-10-16
Chocolatey をインストールする手順、基本的な使い方について。
広告領域
追従 広告領域
目次
winget、Chocolatey、scoop の比較と開発環境の構築自動化
winget、Chocolatey、scoop の比較と開発環境の構築自動化
記事で扱うパッケージ(アプリ)管理ソフト
記事で扱うパッケージ(アプリ)管理ソフト
パッケージ管理ソフトを使って解消できること
パッケージ管理ソフトを使って解消できること
前提
前提
Chocolatey vs Scoop vs winget (比較)
Chocolatey vs Scoop vs winget (比較)
Chocolatey
Chocolatey
特徴
特徴
利用にあたってのデメリットや注意点
利用にあたってのデメリットや注意点
Chocolatey と NuGet について
Chocolatey と NuGet について
NuGet ってなに?
NuGet ってなに?
Chocolatey と NuGet の関係
Chocolatey と NuGet の関係
Chocolatey と NuGet は管理したいものが違うよ
Chocolatey と NuGet は管理したいものが違うよ
Chocolatey と NuGet のパッケージファイルの違い
Chocolatey と NuGet のパッケージファイルの違い
おまけ。Chocolatey と apt-get などの apt との違い
おまけ。Chocolatey と apt-get などの apt との違い
公式リポジトリ
公式リポジトリ
自前サーバ
自前サーバ
Scoop について
Scoop について
特徴
特徴
用意されているパッケージの種類
用意されているパッケージの種類
リポジトリ的なやつ
リポジトリ的なやつ
winget について
winget について
特徴
特徴
使用に必要なスペック
使用に必要なスペック
詳細な情報は...
詳細な情報は...
パッケージ管理ソフト導入前に考えた方が良いこと。
パッケージ管理ソフト導入前に考えた方が良いこと。
参考
参考
変更履歴
変更履歴
Nodachisoft © 2020