ScoopでWindowsにおける開発環境構築を最適化しよう
はじめに
Windows には他の OS には無い致命的な問題が一つあった。そう、OS 標準のパッケージマネージャが無いことだ。
Windows10 ではPackageManagementという大変素晴らしい OS 標準のパッケージマネージャが搭載された。
これでコマンドラインだけで開発環境をガンガン作れるに違いない。そう考える人がいてもおかしくはない。正直、僕だってそう思いたい。
PackageManagement の問題点
僕は PackageManagement のアーキテクチャが難しすぎる事は大きな問題だと考えている。このエントリを是非読んで欲しい。
もうね、 何でこんなに大変なことになってるのかと。
いや、歴史的経緯を鑑みつつ、OS に標準搭載されるパッケージマネージャが持つべき仕組みをキチンと備えた妥当な設計になっているじゃないか、と強い調子で言われれば説得力があるようにも思える。
じゃあ、この素晴らしい抽象度で実装された PackageManagement 様におかれましては、それはそれは様々なバリエーションの動作をするんですよね?というと、実態はそうじゃない。
現在の PackageManagement は、雑に言えばChocolateyの何かややこしいラッパーでしかない。確かに、PowerShell Galleryには、沢山のモジュールがあるよ。あれ、便利なモジュールどんだけあんの?
僕としては、直接 Chocolatey 使えば良いと思うんだよね。ジッサイ。
「OS に標準搭載されたボキャブラリでアプリケーションをインストールし、アンインストールできることは大変すばらしい事だ!」
アア、ハイ、ソノトオリデスネ。
Chocolatey の問題点
Chocolatey 使ってて、まずダルいなって思うのは、UAC のポップアップ。コマンドラインで作業してるのに突然現れてマウスでクリックしないと先にすすめなくなるアレ。マジでイライラする。
Windows10 はマルチユーザ OS だけど、ユーザの切り替えなんてやってねぇよ。というか、複数の環境が必要なら Docker なり、Hyper-V なり使ってる。だからね、現在のユーザローカルにだけコマンドのパスが通れば良いんだよ。
次にダルいなって思うのは、結構な頻度でアンインストールが失敗すること。インストールが綺麗にできる以上に、大事なのはアンインストールが綺麗にできることだ。
いやいや、MSI 形式のインストーラの問題だろ、それって言われれば、確かにちゃんと切り分けてないから、これは言いがかりかもしれないけどね。
ある程度の規模感で Chocolatey 使おうと思うと、ローカルリポジトリ的なものが欲しくなると思うんだけど、それを用意するのがとんでもなく面倒なのも辛い。確かに、How To Host Feed辺りをちゃんと読めば出来るよ。
面倒すぎるんで、僕としてはあんまやりたくない感じの手順だけどね。
というわけで、僕の個人的な趣向としては Chocolatey が嫌いだ。避けようが無くて使う事があるのは否定しないが、出来る限り使いたくないとさえ思っている。
Scoop について
というわけで、今週のおススメはScoopだ。
Scoop を使うべきか?
まず、最初に言っておく 。Scoop は真っ当なパッケージマネージャではない。そして、linux 文化圏にいるけど、色々理由があって今は Windows を使ってるって人間に向けて開発されている。
Scoop がどういう思想で作られているかみたいな話は、公式の Wiki に書いてある。
これを読めば、自分が Scoop を使うべきなのかは、ある程度ハッキリと理解できるだろう。
Windows しか使わないし、linux 文化圏のやり方を Windows 上でやることに意義を感じないなら、Scoop を使う必要はない。
そして、Scoop は開発環境を構築するためのツールだ。開発環境構築を楽にすることに強くフォーカスしているおかげで、色んなことがシンプルで簡単になっている。細かいことは、あまり考慮していない。
Scoop の何が素晴らしいか
ユーザのローカルディレクトリに何でもインストールするので、あのうざったい UAC ポップアップが出ない。
C:\Users\taichi\scoop\shims