開発環境が変わったとき、必要なソフトをすぐに導入できるようにしておけると便利ですね!
開発する前に、自分の開発環境にあった exe を公式からダウンロードしたり zip を展開したり、依存関係を気にしたり、といった手動作業はずっと 1 つの PC でやるには良いのですが、複数人数で開発したり、別の環境で毎回同じ手順を繰り返したりするのは時間のムダです。
ソフトウェア管理ソフトを使うことで、 Windows 上で必要なソフトをまとめてコマンド一本でパパっとインストールできます。
ここは主流なCLI(真っ黒な画面にコマンド打ちこんで操作するやつ) の無料のソフト管理ソフトの比較と利用方法をまとめた資料です。
当記事は以下の管理ソフトを対象に調べましたので記録しておきます。
各ソフトのインストールとか基本操作、注意点とかは別途まとめてますので良ければご参照ください!
Chocolatey 公式とかにも書いてありますが、インストールしているソフトの管理するソフトを導入することで
といった問題を大幅に解決出来ると思います。
ここでは Windows 環境のみを対象としてまとめています。
MacOS の Homebrew や Linux の apt-get や yum などはまた別にまとめたいな。
機能 | 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 時点で公式パッケージ数で確認しました。
ということで、筆者的にはアプリ開発とかする人には現時点で Scoop をオススメしたいと思ってます。
さらに Chocolatey も Scoop の両方に接続して共通したコマンドで管理できる OneGet という Microsoft のソフトもあるようですが、まだ使ったことがないので割愛します。
いろんなソフトウェアのインストーラや EXE ファイル、Zip圧縮ファイル、そのほかインストールスクリプト等をパッケージングした Chocolatey のパッケージファイル(拡張子 .nupkg のファイル)の形で配信しています。
NuGet は Microsoft の .NET フレームワーク向けのライブラリ管理ソフトですが、Chocolatey のパッケージの説明にちょくちょく NuGet の話が出てくるのでどいういう関係性があるのかを備忘しておきます。
Chocolatey は NuGet のパッケージング・フレームワークを利用しています。
実際、Chocolatey でソフトをインストールするときは、内部的に NuGet.Core.dll を使っています。
Chocolatey の公式FAQ にも書いてありましたが、
NuGet は開発ライブラリを簡単に導入することを主な目的としているのに対し、 Chocolatey はアプリやツールを簡単に導入することを主な目的にしている。別に開発者中心に使ってもらうことを目的にしていない。ということのもよう。
具体的に、Chocolatey のパッケージファイル(.nupkgファイル)も NuGet のパッケージファイルも実体は zip ファイル。中身のメタファイルなどが違うようです。
Chocolatey にはソフトウェアインストール時の GUI 処理をすっとばせるように、PowerShell を使ったサイレントインストール(GUIでやりとりしなくてもインストールできるモード)を nupkg ファイルのメタ情報を使って実行する。
nupkg ファイルは NuGet パッケージファイルの拡張版で、Chocolatey 用にいろいろなメタ情報が追加で含まれている。なので、 Chocolatey は素の NuGet パッケージに対しても互換性を持っている。(情報元:公式 wiki - What Are Chocolatey Packages?(英語))
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 パッケージホスティングサーバ。
他にも探したらありそう。
Git で公開されているアプリについて、Bucket(リポジトリ的なもの)を通じてインストール、アンインストールや更新をコマンドライン(CLI)管理できる。
レジストリを汚すようなものや、システム設定、環境を汚すようなパッケージはあまり扱っていないようです。 そういったアプリの事を Scoop 公式ではポータブルアプリと読んでいます。
逆に、単体で動作する exe とか、Powershell スクリプトなんかは、圧縮してなくてもパッケージとして扱えるようにしているとのこと。
ただ、ポータブルアプリ以外も scoop-extras と呼ばれるリポジトリ的なものを Scoop の検索対象に加えれば、 Skype とかもインストールできる。
パッケージを管理しているところを buckets と呼んでます。 Scoop ではインストール直後は「main」と呼ばれる公式の buckets のみインストールされています。
他にも以下のような buckets が公式で紹介されています。 個人的に気になったもののみ抜粋。
buckets | 概要 |
---|---|
main | 汎用的なCLIアプリ |
extras | mainには合わないなぁというアプリ |
games | OSSとかフリゲ、フリゲ関連ツール |
java | JDK関連 |
nonportable | ポータブルアプリ以外のアプリ |
php | いろんなPHPバージョンとか |
GitHub で公開されているOSS のアプリ等を winget (Windows Package Manager)を使ってコマンドラインからローカルにインストールしたり更新することができる。
※使っているWindows PC のOS のバージョンやビルド番号を調べる、いろんな手順については 別記事のコチラで記載してますので、よろしければご参照いただければ。
Windows Package Manager のプレビュー版参加ページでは、正式リリースしてないので、まだ変更される可能性があるとのこと。プレビュー版のAppInstaller アプリに含まれるとのこと。
今後、正式リリースされたら情報更新していこうと思います。
似たような機能をもつソフトが選択可能であれば、 採用するときには将来性を考えたほうが良い思います。
自動的に構築するスクリプトを頑張って作ったは良いものの、 コミュニティや使っている技術の衰退があって、別の管理ソフトに移行しなきゃならないということも十分にあり得ます。
なので他の管理ソフトへの移植のしやすさも、導入する時には頭のカタスミに入れておくといいかもですね。
コメント、ありがとうございます。
ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。
Twitter:@NodachiSoft_jpお名前:以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください
お名前: