PowerShell上で動作するNuGet

Windows OSに限った話ではありませんが、GUI(グラフィカルユーザーインターフェース)を採用したOSでは、アプリケーションの導入にインストーラーを使うのが一般的です。レジストリエントリの自動作成や設定ファイルの生成など煩雑な処理を自動化すると同時に、アンインストールを正しく行うため、このプログラムが生まれました。

インストーラーの存在は、利便性を維持すると同時にユーザーにGUI操作を強いるという欠点を生み出したことにお気付きでしょうか。例えばLinuxでは、いくつかのパッケージ管理システムを採用し、同様の利便性を維持しています。このシステムがGUI系インストーラーより勝っているのが、リポジトリ(データの一元情報を管理するデータベース)サーバー経由でパッケージのダウンロードおよびインストールを一括して行える点。

例えばDebian GNU/LinuxやUbuntuなどのLinuxディストリビューションで開発環境をそろえる場合、「apt-get install gcc」と実行すれば依存関係にあるパッケージ(そのパッケージ利用時に必須となるパッケージ)が自動的に選択され、ユーザーは必要最小限の操作でgcc(GNU Compiler Collection)をインストールすることが可能。さらに必要とするパッケージがある場合は「apt-get install gcc gpp……」とパッケージ名を追記するだけという簡単さは、経験がある方ならご承知のとおりです(図01)。

図01 Debian GNU/Linux上で「apt-get」コマンドを使用した例。コマンドラインから簡単にパッケージをインストールできます

もちろんLinuxとWindowsにおけるソフトウェア市場の違いやオープンソースベースに対する考え方など、"文化の違い"があるため、Windows OSでフリーのパッケージ管理システムが普及しなかったのは仕方ありません。だが、同様の仕組みをWindows OSにも導入しよう試みました。それはMicrosoftがApache License 2.0で公開している「NuGet」です。

.NET Frameworkに対応したパッケージ管理システムとして、2010年10月頃から同社が運営するオープンソース開発プロジェクト用ホスティングWebサイト「CodePlex」で公開し始めました。PowerShellコマンドレットとして動作するため、Windows PowerShell 2.0以降をインストールしたWindows XPからWindows 8までの各Windows OSサポートしています(図02)。

図02 「NuGet」の公式ページ。執筆時点では、全パッケージ数が11万2,414本、そのうちユニークなパッケージが 1万4,597本と紹介されています

主に開発環境としてVisual Studioエクステンションとして使われるなど、ソフトウェア開発者でなければ必要性を感じないのは事実でしょう。このNuGetをさらに使いやすくするのが、コマンドラインから操作できるフロントエンドの「Chocolatey(チョコレーティ)です。前述した「apt-get」コマンドのようにパッケージ名でインストールできるのはもちろん、独自のパッケージを多数用意し、オープンソースのファイル圧縮/伸張プログラムである「7-Zip」やテキストエディターの「Notepad++」も加わるようになりました(図03)。

図03 NuGetのフロントエンドとなる「Chocolatey」の公式ページ。執筆時点では1,160本のパッケージが用意されています

執筆時点は1,160本とまだ少なく感じますが、「Visual Studio Express 2012 for Windows Desktop 11.0」など、無償使用可能なデスクトップアプリのパッケージも用意されています(もちろん同アプリケーションを利用するには、ライセンス条項に同意する必要があります)。必ずしも万人向けではありませんが、複数のWindows OS用アプリケーションをインストールするケースや、新バージョンへのアップデートを面倒に感じる方には興味深い存在ではないでしょうか。そこで、Windows 8をベースにChocolateyや各パッケージの導入方法まで、順を追って紹介します。