こんにちは、えんぞーです。
今更っぽいと言われるかも知れませんが、つい最近知って感動したので勢いで記事にしてみます。
Windows でパッケージ管理が行えるようになる「Chocolatey(チョコレーティ)」をご紹介。
あまりピンと来ない人が多数いるとは思いますが、普段から Windows 使っているのであればこの機会に使って見ましょう。
パッケージ管理って何?
そもそもパッケージ管理って何なのかという部分から簡単に説明します。
Windows はフリーのソフトウェアを使おうと思った場合、配布されている HP へ行きソフトウェアのインストーラーや圧縮ファイルをダウンロードしてからインストール作業を経てようやく使う事になりますよね。
これが結構な手間になりますし、「デスクトップがダウンロードした圧縮ファイルで一杯に」なんて PC をたまに見かけます。
パッケージ管理システムの場合、コマンド一つでダウンロードからインストールまで行ってくれるのでとても楽です。
また、ダウンロードされるファイルも特定の場所にキャッシュされるので一々どこに保存するかで悩む必要もありません。
それにパッケージ管理システムを用いてインストールしたソフトウェアはアップデートもコマンド一つで楽々アップデート出来るメリットがあります。
自動でアップデートが掛かるようなソフトウェアなら良いですが、アップデートの通知をされて HP へのリンクのみ表示する様なソフトウェアだといつまで経ってもアップデートしなくなったりします。
その点、パッケージ管理を使う事でインストール・アンインストール・アップデートが簡単に行えるようになるのでストレスが無くなります。
もちろん、目的のソフトウェアがパッケージとして用意されているかどうかにもよりますので全部がという訳にはいきませんけど・・・。
Linux 使っている人(yum や apt-get 等)はもちろん、Mac 使っている方(homebrew 等)も馴染みが深いと思いますが、Windows には無いのでちょっとイメージしづらいかも知れません。
単純にパッケージ管理出来た方が PC を綺麗に保てるし便利なんだよ位に考えてて良いかと思います^^
「Chocolatey」を使える様にしてみよう
さっそく使える様にしてみましょう。
コマンドプロンプトかパワーシェルを管理者権限で立ち上げて下さい。
立ち上げたら下記のコマンドを打ち込んだりペーストして実行します。公式ページ載っているコマンドそのままです。
Chocolatey 導入コマンド
コマンドプロンプトの場合
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
パワーシェルの場合
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
↓ コマンドプロンプトに張り付けた場合はこんな感じになります。

完了したら確認の為に Chocolatey のバージョンを確認するコマンドを打ってみましょう。
choco version
こんな風にバージョンが出てきたなら正常です。

早速何かインストールしてみよう
さて、何が良いか。
パッケージ自体は公式ページからも探せますし、コマンドからも探せます(後述)ので色々見て下さい。
公式ページで探した場合だとコマンドも一緒に記載されているのでそれをコピペするだけで OK です!
では試しに「vim」でもインストールして見ましょう。

表示されているコマンドをコピペするだけでインストールが行われます。
choco install vim
完了したらソフトウェアがインストールされているのを確認して下さい。
コマンドを打つ行為自体がしっくりこない
コマンドプロンプトが表示されるだけで拒絶反応が出る人いますからね・・・そんな人にオススメしたいのが GUI バージョン。
いわゆる普通の Windows アプリと同じようにウィンドウが出てくるタイプです。
早速インストールして見ましょう。ここだけは我慢してコマンド打って下さい。
choco install ChocolateyGUI
これで GUI 版がインストールされたはずです。
環境によっては PowerShell も合わせてアップデートが掛かるため、PC の再起動が必要になるようです。
GUI 版も管理者権限で立ち上げて下さい。こんな感じで起動します。

左側に二つタブがあり、「Installed packages」は自分がインストールしたパッケージの確認とアンインストール、「Available packages」はパッケージの検索が行えます。
右側は選択したパッケージの詳細とインストール・アンインストール・アップデートを行う部分になります。
これならコマンドを打つことも無いし直感的に使えますね。
主なコマンド
GUI は GUI で良いのですが、やはりコマンドが良いですよ。
なるべくキーボードから手を離したくないです自分。という人も多いはずw
主要なコマンドをリストアップしておきます。
- choco install パッケージ名
パッケージのインストール
cinst パッケージ名 でも可能。
バージョン指定の場合は choco install パッケージ名 -version 2.5.7.10213
choco install packages.config とする事でまとめてインストールも可能(後述) - choco update
全パッケージのアップデート
cup でも可能。
パッケージ指定の場合は choco update パッケージ名
- choco help
ヘルプ表示 - choco search パッケージ名
パッケージの検索 - choco list -localonly
インストールされたパッケージのリスト表示。「-localonly」を外すと全パッケージを表示。
clist でも可能。 - choco version
Chocolatey のバージョン情報 - choco version パッケージ名
指定パッケージのバージョン情報 - choco uninstall パッケージ名
パッケージのアンインストール。
cuninst パッケージ名 でも可能。
日常的に使うかと思われるコマンド例
- cinst hoge -y
パッケージをインストールする(全部 Yes で進める) - cup all -y
インストールしているパッケージを全部アップデート(全部 Yes で進める) - cuninst hoge -y
インストールしているパッケージを削除する(全部 Yes で進める) - clist -lo
インストールしているパッケージをリスト表示
日常的に使うコマンドとしては上記の様な感じになるでしょうか。
短縮形で「-y」で全部 Yes にて実行しちゃいますね・・。
まとめてインストールする場合のやり方
下記のような XML ファイルを事前に用意しておけばまとめてパッケージのインストールが可能らしいです。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="apackage" />
<package id="anotherPackage" version="1.1" />
<package id="chocolateytestpackage" version="0.1" source="somelocation" />
</packages>
これを適当な名前で保存して(仮に packages.config)下記の様なコマンドでまとめてインストール。
cinst packages.config
必須パッケージなどをこのようにまとめておいて環境を再構築した時等にまとめてインストール出来る様にしておくと便利ですね。
とりとめのないまとめ
もう少し早めにChocolateyの存在に気づけていれば良かった。
切望していたWindowsへのパッケージ管理機能・・・これからも要注目です。
以前記事にしている「vagrant」もパッケージありますし、「Git」や「sublime text」等必須と思えるものは大体パッケージとして用意されています。
他にも「mp3tag」や「ccleaner」なんかのソフトもありますね・・・これは一回今までインストールしたものを消して再度こっちで管理する様にしたほうが良さそうです。
Chocolatey、便利だと思いますしアプリがあちこちに散らばらないので環境を綺麗に保つことが可能になります。
これからWindowsをクリーンインストールしようかと思っている人には是非お勧めしたいです。
もちろん既存の環境で使うにしてもお勧めです。