オープンソースのパッケージマネージャーである「NuGet」

Microsoftの「.NET Framework」に対応したものですが、これは開発環境にどのように影響するのでしょうか。

初めて「NuGet」を使う人に向けて、使い方と導入の仕方について解説します

「NuGet」について

「NuGet」の概要



「NuGet」は、「.NET Framework」に対応する、オープンソースのパッケージマネージャーです。ニューゲットヌゲットなど、複数読み方があります。

Microsoft .NET Frameworkは、マイクロソフトが開発したアプリケーション開発・実行環境のことです。

<関連記事>
.NET frameworkをわかりやすく解説!導入手順やインストールできない場合の対処法は?バージョン確認方法もご紹介

「NuGet」は、以前は「NuPack」という名前で知られていました。

しかし、ソフトウェアパッケージにも「NUPACK」というものがあります。

混同して間違えないように「NuPack」から「NuGet」という名前へ変更になり、2010年に「ASP.NET MVC3」と同時に公開されました。

「ASP.NET MVC3」はマイクロソフトが提供しているソフトウエア開発・実行用プログラムのことです。

最初の「NuGet」は、「ASP.NET MVC3」専用というイメージでした。

しかしバージョンアップを重ね、「.NET」のパッケージマネージャーとして現在も成長し続けています。


「NuGet」は何をするアプリケーションなのか

「NuGet」は公開されているパッケージを検索・インストール・アンインストール・更新などを実行するアプリケーションです。

「.NETプロジェクト」に、ライブラリやツールを追加するための「パッケージ管理ツール」ともいえます。

具体的にはオープンソースなライブラリなどの、プログラミング素材に特化した「パッケージマネージャー管理システム」です。

以前は「.NET Framework」関連専用でしたが、現在では広くプラットフォーム全体をサポートしています。


「NuGet」を使うメリット

ビジネスマンの手元のクローズアップ


他のライブラリの「jQuery UI」では、「jQuery」やスタイルシートが必要です。

さらに今後の「jQuery」バージョンアップやプラグインの違いが発生する恐れもあるでしょう。

これにより、かなり大きい依存関係の問題が起きてしまうことが考えられます。

そこで「NuGet」を使用することによって、全ての依存関係を自動的に解決してくれるのです。

「NuGet」は必要なパッケージをダウンロードしてすぐに開発出来るところまで設定を行います。

必要としているパッケージが該当しない場合、自動的に最新版のバージョンへ更新を行ってくれるのです。

そのためバージョンを気にせず使用することが出来ます。

面倒な作業は全部「NuGet」が行ってくれますので、使用者にとってはとても使用しやすくて大きなメリットだといえます。


「NuGet」の活用

パソコンの画面を見る男性たち


「NuGet」を使用すると、いろいろなライブラリWEBサービスを利用したアプリケーション手軽に開発することが出来ます。

活用例としては、「NuGet」を使用して「Twitter」の「いいね」や「ツイートする」ボタンを追加したいとしましょう。

「NuGet」からそれぞれの「ヘルパー」をインストールします。

「ヘルパー」とはネット上のコンテンツが、全ての人にとってアクセスし易いものになることを目指して開発されたシステムのことです。

そして「ヘルパー」に入っているメソッドを、一つだけ呼び出すことで実行できます。

改めて、別に「JavaScript」のコードをページに貼る必要はありません。

ヘルパーを使用したことにより、ソーシャル対応をしてくれてボタンが表示されます。


「NuGet」入門

「NuGet」の種類

女性 フリーランスエンジニア


「NuGet」は全部で3種類あります。

  • Visual Studio版

プロジェクトのパッケージ管理が出来るようにするものです。

  • コマンドライン版

Visual Studio版に比べると、使い方が難しいとされています。

自分でパッケージを作成したりする場合は、コマンドライン版を使用しなければなりません。

  • Web Matrix版

あまり主流ではないため、今回は省略します。


システムの要件

Visual Studio版を使用するには、以下の条件が必要となります。

  • VS2012以上
  • VS2010の場合は、製品版のみ
  • Express Editionは不可
  • Windows7以上


「NuGet」 パッケージマネージャーとは?

パッケージマネージャーについて

女性プログラマーを横から撮影した写真


パッケージマネージャーは、「インストール用の管理ツール」になります。

このパッケージは、ライブラリやアプリケーションをインストールする時の集合体です。

Windowsで行うインストールはインストーラーを使用するのが一般的ですが、「Linux」などは、パッケージマネージャーを使用します。

その他、独自のパッケージマネージャーを持つものが増えているのが現状です。


パッケージマネージャーのメリット

パッケージマネージャーは、ライブラリをインストールする際に「依存ライブラリ」もまとめてインストールしてくれるメリットがあります。

「依存ライブラリ」というものは他のライブラリに依存していたり、バージョンの制限があったりします。

手動でこれを一つ一つチェックやインストールするのは、とても大変な作業になり非効率です。

そこで、このパッケージマネージャーでは整合性のチェックができます。

更にインターネット対応をしていれば、不足しているものを自ら取って来てインストールしてくれるのです。


「.NET」 パッケージマネージャーとは?

パッケージマネージャー

オフィスで働くプログラマー


「.NET」上のパッケージマネージャーが、「NuGet」のことになります。インターネットからのダウンロードにも対応しています。

「.NET」にもパッケージマネージャーが出来てうれしい反面、注意点がないわけではありません。


「NuGet」のパッケージマネージャーを使う際の注意点

一般的なパッケージマネージャーは、システムに対してインストールをして使用します。

しかし「NuGet」は、プロジェクトに対してインストールを行うのです。

「プロジェクト用」ということは、プロジェクトフォルダにインストールした「dll」なども含んでいることになります。

この「プロジェクト用」というのが注意点のことであり、気をつけなければなりません。

ちなみにdllとは、複数のプログラムで同時に使用できるコードとデータを含むライブラリのことです。

注意する点は、同じライブラリを使用するソリューションが数回あった時には、その都度インストールすることが必要になります。

結果として、何個も同じ「dll」をシステム上に持つことになってしまうのです。

更に他にも気をつけなければならない点もあります。

他のパッケージマネージャーを使用している人がプロジェクト用だと気づかずに使用しないようにしましょう。

メニューが出なかったり、おかしなエラーが出てしまったりします。

「NuGet」のインストールについて

インストール

インフラエンジニア


まずは、「NuGet」自体のインストールを行いましょう。

「NuGet」のインストール方法はいくつかありますが、どの方法もとても簡単です。


インストール方法

インストーラーを使用したインストール方法と、「Visual Studio」からのインストール方法の2種類があります。


インストールするパッケージの場所

公式の「NuGet」パッケージギャラリーにあります。


インストーラーを使用したインストール方法

インストール

チームで開発


インストーラーを直接ダウンロードして、インストールを行います。

複数のバージョンが入っているパソコンであれば、一度にインストール出来るのでとても便利です。

「NuGet」自体のインストール方法は何種類かありますが、どの方法もシンプルなので分かりやすいでしょう。

一番簡単な方法は、Web PI(Web Platform Installer)を使用して、「ASP.NET MVC3」をインストールする方法です。

「ASP.NET MVC3」のインストールと同時に、「NuGet」がインストールされる仕組みになっています。とても便利です。

  • マイクロソフト・ダウンロード:Web Platform Installer3.0


インストール手順

  1. 「NuGet Package Manager拡張機能」から、「NuGet.Tools.Vsix」をダウンロード
  2. ダウンロードしたファイルを実行すると、インストールウィザードが開始
  3. VSIX インストーラーからインストールするバージョンを確認
  4. 「インストール」を押す

これでインストールは完了です。


「Visual Studio」からのインストール方法

インストール

白いノートパソコン


他の方法としては、「Visual Studio」拡張機能マネージャーからインストールする方法もあります。


インストール手順

  1. 「Visual Studio」からインストール
  2. メニューバーの「ツール」メニューにある、「拡張機能マネージャー」を選ぶ
  3. 表示されるダイアログボックスの左側のバーより、「オンラインギャラリー」を選ぶ
  4. 右上の検索フォームから「NuGet」と入力して、検索する
  5. インストールボタンを押す

これでインストールが完了です。


ツールに追加されるメニュー

インストールが完成すると、「Visual Studio」のメニューバーの「ツール」メニューに「Library Package Manager」というメニューが追加されます。

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


インストール中に、何かしらの問題が発生した場合

問題が発生したら「拡張機能マネージャー」からのインストールが出来ません。

その場合は「Visual Studio Gallery」からvsix形式のパッケージとしてインストールボタンを押しましょう。


開発環境とリポジトリ

環境問題を抱える現状

考える男性


「.NET」開発の必須アイテムとなった「NuGet」ですが、公開ライブラリのインストールのみにしか使用されていません。

非常にもったいない状況です。

プライベートリポジトリ機能を活用し、開発環境の改善や効率化のためにこれから「NuGet」をどんどん活用していきましょう。

「NuGet」は、単なる「ライブラリを利用するためのツール」と考えられているのではないでしょうか。

「NuGet」はパッケージを自ら作成することが出来る上に、公式リポジトリの「NuGetギャラリー」に公開することも出来るのです。


プライベートリポジトリ

若いスタートアッププログラマ


「NuGet」は、「プライベートリポジトリ」と呼ばれています。

要するに、閉塞的な「NuGetギャラリー」を作製し、運用していく機能を持っているということです。

この「プライベートリポジトリ」を活用することにより、開発現場における環境の改善・効率化を行っていくことが出来ます。


プライベートリポジトリの活用

  • ファイルシステムベースの「プライベートリポジトリ」

ある特定のフォルダパッケージとして置き、参照出来るようにする。

  • HTTPベースの「プライベートリポジトリ」

HTTPベースを利用して、Webサーバーに公開する。


「NuGet」が開発環境に与える影響

社内ライブラリの管理

コーディングのスタートアップ企業でのコンピュータープログラマー


「NuGet」を使用することにより、プロジェクト内でのライブラリの使用が非常に楽になることが分かりました。

ライブラリを使用する際の設定内容・依存関係の解決など、大変な作業が自動化されるのです。

特に、バージョンアップの時に「NuGet」を使用することにより、この効果を実感することになるでしょう。


提供されていないライブラリを、管理することが出来る

「NuGet」を活用して自分たちでパッケージを作成し、プライベートリポジトリに配置出来るようになります。


「ライブラリ」の配布をする

アプリケーションを作成する時に、社内や参画する企業で利用するライブラリを「○○を使用するように」などと指定されることもあるでしょう。

この場合、「NuGet」を使用することでこのような事例を簡単に改善することが出来ます。


「社内許可が出たものしか使用してはいけない」場合

「NuGet」は、依存するバージョンを詳しく指定することが出来ます。その結果、バージョンを上げてしまうようなことも防げるのです。

また、依存関係が更新されたパッケージを作成し、配布することにより更新作業も簡単に行うことが出来ます。


まとめ



「NuGet」で簡単に「プライベートリポジトリ」を作成することで、日々の開発業務の効率を大きく改善出来る可能性があるのです。

これからはエンジニア一人一人で「NuGet」の有効的な活用方法を考え、今後に役立つように活用して行きましょう。


SHIFTフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。

エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。