Microsoft はオープンソースの .NET 用パッケージマネージャ NuPack CTP 1 をリリースした。.NET には OpenWrap という別のパッケージマネージャがあって,共通点が多いが,違いもいくつかある。そして CoApp は,更新機能に加えて C,C++,.NET,PHP,Python,Perl など複数の言語サポートを特徴とする Windows 用のパッケージマネージャだ。
NuPack
NuPack は視覚的インターフェースあるいはコマンドラインを通じて,VS プロジェクトに.NET ライブラリを追加する機能を持つ。基本的には適切なパッケージの検索とダウンロード,ハッシュの確認,解凍,ライブラリ参照の追加,web.config ファイルの編集といった作業から,開発者を解放するためのものだ。これらを手作業で行う代わりに,NuPack が依存関係に従ってパッケージのダウンロードを行い,インストールし,参照の追加や web.config ファイルの編集を行ってくれる。さらに NuPack は PowerShell に組み込まれているため,コマンドライン操作を好むユーザはプロンプトから同じタスクを実行することもできる。
NuPack は ASP.NET MVC 3 ベータ版 にバンドルされているが,将来的には VS に完全に統合される予定だ。NuPack は 所定のプロジェクトにアクセスするために CodePlex から Atom フィードをダウンロードしているが,もっとよい場所が準備されている。その NuPack ギャラリに実装計画中の 要件 について,ASP.NET チームの上級プログラムマネージャである Phil Haack 氏が説明してくれている。
1. パッケージをホストし,フィードを提供する既定サイトであること。私たちにとっての rubygems.org となるものです。自身のフィードを別に (CodePlex.com のように) 持つことは可能ですが,ツールの既定の検索対象はここになります。
2. 承認プロセスを持たないこと。サイトにアカウントさえあれば,誰でもパッケージを追加できます。
3. パッケージはホスト置くことも,他のサイトに置いてポイントすることも可能なこと。つまりサイト自体はパッケージをホストすること (GPLv3 は除く) も,パッケージをホストする他のサイトを参照すること (Web プラットフォームインストーラのように) もできます。その選択は開発者に委ねるつもりです。
NuPack は Outercurve 財団 (旧 CodePlex 財団) の承認を受けて ASP.NET ギャラリに登録され,協力者を幅広く募集している。
OpenWrap
InfoQ では以前,2010 年 5 月に発表された同種のプロジェクトである OpenWrap についても紹介している。そこで我々は NuPack のリリースが OpenWrap に与えるインパクト,そして OpenWrap プロジェクト自体の状況について確認すべく,メインコミッタのひとりである Sebastien Lambla 氏に話を聞いた。
InfoQ: NuPack についてどのように思われますか? OpenWrap の開発には影響するでしょうか?
SL: NuPack は,OpenWrap が取り組んでいる問題のかなりの部分に対処しています。しかし実装の詳細部分では,ほとんどすべてにおいて異なるアプローチを採用しているのです。この分野で競争があるのは望ましいことですが,依存管理という問題を扱うならば,もっと優れた代案や "独自の" 方法の余地があるはずです。OpenWrap は長く開発が続けられていて,間もなくベータ版に到達します。ですから私たちはその作業を継続して,次の波である OpenRasta 開発でもコアに留まるつもりです。
いずれにせよ,NuPack が存在することで,パッケージをビルドする OSS 開発者は増加すると思います。OpenWrap とはフォーマットが異なりますが,それでもよいことには違いありません。パッケージによってバージョン管理が適切に行われて,コミュニティ全体が前進できるからです。私たちは NuPack パック形式のサポートも積極的に進めていきます。ただし取り出し時に変換が必要な,従来型フォーマットという扱いになると思います。
InfoQ: Microsoft の支援する NuPack が公開された訳ですが,今後も OpenWrap の開発を続けていく考えをお持ちですか?
SL: もちろんです。NuPack がリリースされたことによる,私たちのロードマップへの影響はありません。ただし現行の office パッケージフォーマットをサポートする .NET のレガシーパッケージとして,NuPack パッケージ形式のサポートを追加する可能性はあります。
リリースの数週間前,Microsoft に協力していた開発者がプロジェクトを離れました。それでもすでにコードベースがありますし,それを Microsoft のプロジェクトに引き渡すべき理由もありません。すでにそれを使っている人々,それをベースに開発している人々がいますし,他に私たちが構築したものと置き換えるような機能セットも見当たりません。
InfoQ: OpenWrap は NuPack とどのように違うのでしょう? 基本的には同じ機能を提供している,または提供する予定なのでしょうか? あるいは目標が違うのでしょうか? OpenWrap の開発を続けるとすれば,ロードマップはどのようなものでしょう?
SL: OpenWrap は,アーキテクチャに統合されるレベルが違います。プロジェクトを手作業で変更するのではなく,ビルドプロセスの一部として組み込まれるのです。また OpenWrap では,ランタイム依存性の展開に重点を置いています。アセンブリだけでなく,アプリケーションの実行に必要なものすべてを対象とするのです。長期的に見ればこれが,依存性管理の方法としてより効果的なものだと思っています。
今のところ,NuPack の機能の多くは OpenWrap に似ているように見えます。私たちの最初のリリースでのスコープが,5月に発表された,限定された機能範囲だからでしょう。4月末に NuPack の開発を開始したとき,Microsoft は明らかに私たちと同じ機能セットを選択しました。進化の収束,とでも言っておきましょう。
OpenWrap にはまた,システム全体のリポジトリの概念と,プロジェクト単位の OpenWrap バージョン管理があります。どちらの機能も長い目で見れば,アセンブリや JavaScript の単なる参照よりもはるかに意味の深い,非常にたくさんのシナリオを実現するのです。
OpenWrap の新バージョンの構築と展開には,どちらも OpenWrap 自身が使用されています。この自己起動システムは以前からのものですが,これがコード開発の効率向上に本当に役に立っています。
ロードマップにはテストランナの追加,環境単位の依存関係,メタパッケージ,ビルドシステムからの独立,リリースされていないバージョンのサポートなどが挙げられています。もちろん,ファイアウォールの内外でリソースを提供する専用 Web サイトの供用も含まれています。
.net 3.5 と .net 4.0,VS 2008 と VS2010 のサポートは,今後も継続していきます。さらに,OpenWrap を開発者にとって非常に感動的なエクスペリエンスにするような,本当にエキサイティングな機能を数週間以内に提供する予定です。
当然ですが,私たちにはマーケティングの資金がありません。ブログエントリやウェブサイトを記述してくれる人をフルタイムで雇用する資金もありませんが,やり遂げるつもりです。私たちのプロジェクトは Microsoft のリリースサイクルに組み込まれていません。ですから,MVC3 のリリースが近づくことが NuPack に確実に影響するような,出荷期限に悩まされることもないのです。
CoApp
我々は,Microsoft がサポートするもうひとつの Windows 用パッケージャ開発プロジェクトである CoApp についても知りたいと考えた。そこで CoApp プロジェクトの起案者である Garrett Serack 氏にコンタクトを取り,プロジェクトの状況とNuPack との関係について質問した。Serack 氏の主張によれば,NuPack が .NET 開発者と単一のプロジェクトだけを対象としているのに対して,CoApp はより広いスコープを持っている。
CoApp は,ソフトウェア開発者とユーザ (エンドユーザ,管理者など) を対象とするパッケージ管理処理を実行します。パッケージはシステムレベルでインストールされます。これにはコンポーネントやアプリケーションのスコープ,あるいは一度にひとつのプロジェクトのみ,といった制限なくパッケージを共用可能にする,という意図があります。
CoApp には更新サービスが含まれています。パッケージのセキュリティや機能をアップデートすることで,常に最新システム上のアプリケーションを状態に維持します。
さらに CoApp は,(C あるいは C++ で記述された)ネイティブアプリケーションや .NET,Python,PHP,Perl その他からも利用可能なように開発されているのです。
氏はさらに,NuPack のコードの一部を選択して CoApp に流用すること,さらに予定として "CoApp を使用するソフトウェアの公開において,NuPack パッケージを利用可能にする" ことにより,NuPack の恩恵を受ける予定があることにも言及した。
Serack 氏によると,CoApp プロジェクトは今も健在である。40 人ほどのコミッタが,チーム内あるいは独立した形で "クライアント,開発者ツール,公開用ツール,コアライブラリ,内部エンジン" などのパートで順調に作業していて,2011 年の早い時期にベータリリースを予定している。
CoApp もまた Outercurve 財団に承認されているが,登録されているのは Windows プラットフォームを対象とした相互運用性と統合を目標とする System Infrastructure and Integration ギャラリ である。