- Microsoftが提供する.NET開発向けのパッケージ管理システムのこと。ライブラリ(パッケージ)の検索・インストール・更新・依存関係の管理を自動化する
- JavaScriptのnpm・PythonのpipのようなものでNuGetは.NETエコシステムの標準パッケージマネージャーだ。必要なライブラリをコマンド1つで導入でき依存する別のライブラリも自動的に解決される
- nuget.orgという公式のパッケージリポジトリに数十万のパッケージが公開されており、Newtonsoft.Json・Entity Framework・xUnitなど.NET開発で定番のライブラリがNuGet経由で配布されている
【深掘り】これだけ知ってればOK!
NuGetの基本的な使い方を理解しよう。dotnet CLIでは`dotnet add package Newtonsoft.Json`でパッケージを追加する。Visual StudioではGUIのNuGetパッケージマネージャーで検索・インストールできる。インストールしたパッケージとバージョンは.csprojファイルのPackageReferenceに記録され、`dotnet restore`で復元できる。
セマンティックバージョニングとNuGetの関係を理解しよう。NuGetのパッケージはセマンティックバージョニング(MAJOR.MINOR.PATCH)に従う。MAJORは互換性のない変更・MINORは後方互換のある機能追加・PATCHはバグ修正を表す。`Version=”13.0.1″`のように厳密指定したり、バージョン範囲を指定して柔軟に更新したりできる。
プライベートNuGetフィードを理解しよう。社内専用のライブラリを公開リポジトリに出さずに配布したい場合、Azure Artifacts・GitHub Packages・自前のNuGetサーバーなどでプライベートフィードを構築できる。社内の共通コンポーネントを複数プロジェクトで再利用する際に活用される。
よくある誤解
NuGetは.NET開発以外でも使う汎用ツールだと思っている
NuGetは.NET(C#・F#・VB.NET)エコシステム専用のパッケージマネージャーだ。JavaScriptならnpm・Pythonならpip・JavaならMavenというように言語・プラットフォームごとに専用のパッケージマネージャーがある。
NuGetのパッケージはすべて安全だと思っている
nuget.orgは誰でもパッケージを公開できるため、悪意あるパッケージや脆弱性を含むパッケージが存在しうる。発行元の信頼性・ダウンロード数・更新頻度・既知の脆弱性を確認してから導入することがセキュリティ上重要だ。
会話での使われ方

このプロジェクトでJSONを扱うのでNuGetでSystem.Text.JsonかNewtonsoft.Jsonを追加してください。dotnet add packageで一発です。
リードエンジニアが新人にNuGetでのライブラリ追加方法を指示している場面。




このパッケージ、本家に名前が似ていますがダウンロード数が極端に少ないです。タイポスクワッティングの可能性があるので発行元を確認してください。
セキュリティ担当者が不審なNuGetパッケージのリスクを指摘している場面。




社内共通ライブラリはAzure Artifactsのプライベートフィードで配布しましょう。各プロジェクトからNuGet経由で参照できます。
アーキテクトが社内ライブラリの配布方法を提案している場面。
【まとめ】3つのポイント
- .NET開発の標準パッケージ管理システムでライブラリ導入を自動化する:npmやpipの.NET版にあたるNuGetはライブラリの検索・インストール・更新・依存関係解決を自動化して.NETエコシステムの開発効率を支える基盤だ
- nuget.orgの公式リポジトリで定番ライブラリが配布される:Newtonsoft.Json・Entity Framework・xUnitなど.NET開発で定番のライブラリが数十万単位でnuget.orgに公開されておりコマンド1つで導入できる
- サプライチェーン攻撃に備えてパッケージの信頼性を確認する:タイポスクワッティングなどの悪意あるパッケージのリスクがあるため発行元の信頼性・ダウンロード数・更新履歴・既知の脆弱性を確認してから導入することがセキュリティ上重要だ
よくある質問
-
QNuGetとnpmはどう違いますか?
-
A
NuGetは.NET(C#など)向け、npmはJavaScript/Node.js向けのパッケージマネージャーです。役割は同じですが対象とする言語・エコシステムが異なります。
-
QNuGetパッケージはどうやってインストールしますか?
-
A
dotnet CLIなら`dotnet add package パッケージ名`、Visual StudioならGUIのNuGetパッケージマネージャーから検索・インストールできます。
-
Q.nupkgファイルとは何ですか?
-
A
NuGetパッケージの形式で、ライブラリ本体・メタデータ・依存情報をZIP形式でまとめたファイルです。nuget.orgで配布されています。
-
QプライベートNuGetフィードはどう使いますか?
-
A
社内専用ライブラリを公開せずに配布する仕組みです。Azure Artifacts・GitHub Packages・自前サーバーなどで構築し、複数プロジェクトで共通コンポーネントを再利用できます。
【出典】参考URL
https://learn.microsoft.com/ja-jp/nuget/ :Microsoft公式のNuGetドキュメント
https://www.nuget.org/ :NuGet公式パッケージリポジトリ
https://e-words.jp/w/NuGet.html :IT用語辞典「NuGet」


コメント