特集:.NET開発の新標準「NuGet」入門(前編)

.NETで開発モジュール導入が楽々に! NuGet入門

芝村 達郎
2011/09/15
Page1 Page2 Page3 Page4

NuGetとは何か

 ASP.NET MVC 3ベータ版が公開されたときに、「NuPack」と呼ばれるアプリケーションも同時に公開されたことをご存じだろうか。

 .NET開発者にはなじみがないかと思うが、RubyやPerlにはRubyGemsやCPANといった、公開されているモジュールを簡単にダウンロード、インストールするパッケージ・マネージャ機能が提供されている。NuPackはそれらパッケージ・マネージャの.NET版と考えていただければいいだろう。

 その後、「NuPack」は「NuGet」と名前を変え、ASP.NET MVC 3と同時にリリースされた。当初はASP.NET MVC専用といっても過言ではない状況だったが、バージョン・アップを重ねた今ではSilverlightやWindows Phone 7用のパッケージも公開可能になり、.NETのパッケージ・マネージャとして今なお成長を続けている。

 そこで本特集では、NuGetについてASP.NET MVC 3(Visual Studio 2010以降)とWebMatrix両方の視点から紹介し、今すぐにでも開発に使えることを実感してもらいたいと考えている。前編でNuGetの概要とASP.NET MVC 3とWebMatrixでの使い方を解説し、後編では実際にNuGetにパッケージを発行するところまでを解説する予定だ。

NuGetの概要

 NuGetとは、前述したとおり.NET向けのパッケージ・マネージャだ。そしてここで指す「パッケージ」とは、「NuGet gallery」で公開されているソフトウェアだったり、JavaScriptライブラリだったりさまざまだ。そして、数多く公開されているパッケージを検索、インストール、更新、アンインストールなどを行うためのアプリケーションがNuGetというわけだ。具体的な例を挙げて説明してみよう。

 例えば、有名なUIライブラリであるjQuery UIを利用することを考えてみよう。jQuery UIを利用するためにはjQueryや専用のスタイルシートが必要となるし、Visual StudioでIntelliSenseを活用した開発を行うためには、メソッドの引数や戻り値などのメタデータが同時に記述されたVisual Studio専用の.vsdocファイルも必要になる(次の図を参照)。これらのファイルをダウンロードして、プロジェクトに追加しないと開発は行えない。

jQuery UIに必要なファイル群

 「jQuery UIぐらいなら、ダウンロードして準備するぐらい大したことはない」と思うかもしれないが、今後のjQueryのバージョン・アップやプラグインが必要とするjQueryバージョンの差異などを考えると、依存関係の問題は思った以上に厄介であることは間違いないだろう。

 しかし、NuGetを利用すると、これらすべての依存関係を自動的に解決し、必要なパッケージをダウンロードして、すぐに開発できる状態にまで設定を行ってくれる。さらに依存関係の解決時にはバージョン情報も見ているため、必要としているパッケージが対応外のバージョンであれば自動的に最新版への更新を行うので、バージョンの差異などを全く気にする必要がない。

 使いたいパッケージを中心に考えることができ、それ以外の面倒なことはNuGetが全てやってくれるのは大きなメリットだと断言できる。

 ライブラリを中心に話をしてきたが、NuGetにはライブラリ以外にWebサービスを簡単に利用できるヘルパーと呼ばれる再利用可能なパッケージも数多く公開されていて、有名なものとしてFacebookやTwitterなどのソーシャルWebサービスを利用するもの、変わり種といえばWindows Azureストレージを扱うためのヘルパーなど多種多彩となっている。

利用する場面

 すでに説明したとおり、NuGetを利用すると、さまざまなライブラリやWebサービスを利用したアプリケーションを簡単に開発することが可能になる。

 例えば、開発したWebサービスにソーシャル対応としてFacebookの[いいね]ボタンとTwitterの[ツイートする]ボタンを付けたい場合には、NuGetからFacebookやTwitterのヘルパーをインストールして、そのヘルパーに含まれる1つのメソッドを呼び出すだけでよい。わざわざJavaScriptコードをページに貼り付ける必要もなく、ソーシャル対応を実現できる。

 次の画面は、実際にヘルパーを利用してソーシャル対応すると表示されるボタンである。

ヘルパーで[ツイート][いいね!]ボタンを表示

 記述したヘルパー・メソッドを呼び出すコードは、次のように非常にシンプルだ。

@TwitterGoodies.TweetButton()
<br />
@Facebook.LikeButton()
表示に利用したコード

 すでにNuGetでは1万以上のパッケージが入手可能な状態になっており、SQL Server CompactやEntity Frameworkなどのマイクロソフト公式のソフトウェア、「jQuery」や「Modernizr」などOSSで公開されている、今、はやりのライブラリ、果てには先日発売された書籍『Pro ASP.NET MVC 3』のサンプル・コードまでが登録されている。

 Web開発で利用するライブラリ以外にも、テスト時に使用するモック・クラスを簡単に作成できる「Moq.dll」やWPF/Silverlightで利用可能なMVVMライブラリである「MVVM Light Toolkit」などが公開されている(次の画面を参照)。そのため、それらを利用したアプリケーションの開発もNuGetを利用すると簡単に行うことができる。

NuGet galleryにはWeb開発向け以外のライブラリも数多く存在する

 今では利用する場面はWeb開発以外にも広がり、デスクトップ・アプリケーションやスマートフォン向けの開発にもNuGetを利用できるようになった。これからもパッケージの数の増加とNuGetの更新に伴い、さまざまな利用形態が確立されていくものと考えられる。

 それでは、これからは実際にNuGetを利用していくが、その前にNuGet自体のインストールを行う。

NuGetのインストール

 NuGetのインストール方法はいくつかあるが、どの方法も共通して非常に簡単になっている。一番簡単な方法はWeb PI(Web Platform Installer)を使ってASP.NET MVC 3をインストールすることだ。ASP.NET MVC 3のインストールと同時にNuGetがインストールされる。

 ほかの方法としてはVisual Studio 2010の[拡張機能マネージャー]からインストールする方法もある。Visual Studioの(メニューバーの)[ツール]メニューにある[機能拡張マネージャー]を選択して、そこで表示されるダイアログの左側サイドバーから[オンライン ギャラリー]を選択後、右上にある検索フォームから“NuGet”で検索すると、簡単にインストールできる。次の画面は、実際に検索したときのダイアログの表示例である。

[機能拡張マネージャー]ダイアログから“NuGet”を検索

 何らかの問題が発生した場合など、[拡張機能マネージャー]からのインストールができなかった場合には、「Visual Studio Gallery」からvsix形式のパッケージとしてダウンロードしてインストールすることも可能だ。

 インストールが完了すると、Visual Studioの(メニューバーの)[ツール]メニューに[Library Package Manager]というメニュー項目が追加される。基本的にNuGetの各機能には、このメニュー項目からアクセスすることになる。[Library Package Manager]メニューの配下には、さらに以下の4つのメニュー項目が存在する。

  • [Package Manager Console]:PowerShellベースで操作を行う。
  • [Manage NuGet Packages]:ダイアログ・ベースで操作を行う。
  • [Package Manager Setting]:NuGet自体の設定(=自動更新やパッケージのキャッシュなどの設定)を行う。
  • [Package Visualizer]:パッケージの依存関係をグラフィカルに表示する。

 基本的には、この中の[Package Manager Console]と[Manage NuGet Packages](いずれも同名のメニュー項目から起動されるダイアログやウィンドウ)を使っていく。次のページからは、まず、ASP.NET MVCでのNuGetの利用方法を見ていくことにしよう。


 INDEX
  特集:.NET開発の新標準「NuGet」入門(前編)
  .NETで開発モジュール導入が楽々に! NuGet入門
  1.NuGetの概要/利用場面/インストール
    2.ASP.NET MVCで利用する
    3.WebMatrixで利用する
    4.公開されている代表的なパッケージ
 
  特集:.NET開発の新標準「NuGet」入門(後編)
  NuGetをさらに便利に使う方法とパッケージの公開
    1.さらにNuGetを便利に使う
    2.NuGetパッケージの作成
    3.NuGet galleryで公開

@IT Special

- PR -

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Microsoft Translator Text API (2017/5/23)
     Translator Text APIはマイクロソフトが提供するクラウドベースの機械翻訳API。さまざまな言語で書かれたテキストをさまざまな言語に翻訳してくれる
  • マイクロソフトが考えるコンピューティングの未来とは (2017/5/19)
     2017年5月に開催されたマイクロソフトの開発者向けイベント「Build 2017」で、コンピューティングの将来像をどのように提示したかを考察していこう
  • 配列の複製を作るには?(シャローコピー編) (2017/5/17)
     ArrayクラスのCloneメソッドを使い、配列をコピー(シャローコピー)する方法を説明する。また、拡張メソッドを使いキャストを抑制する方法も取り上げる
  • Google Translate API (2017/5/16)
     Translate APIは、グーグルが提供するREST形式の翻訳API。APIに渡した文字列がどの言語で記述されたものかを検出したり、翻訳したりできる
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH