公開:

NuGetとは?意味をわかりやすく簡単に解説

text: XEXEQ編集部


NuGetとは

NuGetは、Microsoftが開発したオープンソースのパッケージ管理システムです。.NETアプリケーションの開発に必要なライブラリやツールを簡単にインストールできるようにするために設計されています。

NuGetを使用することで、開発者は必要なパッケージを検索し、プロジェクトに追加することができます。これにより、コードの再利用性が向上し、開発の効率化が図れます。

NuGetのパッケージは、NuGet.orgというオンラインのリポジトリで公開されています。開発者は自分で作成したパッケージをNuGet.orgに公開することも可能です。

NuGetは、Visual StudioやJetBrains RiderなどのIDEと統合されており、GUIからパッケージの管理が行えます。また、コマンドラインからもパッケージの操作が可能となっています。

NuGetは、.NET Frameworkだけでなく、.NET Core、Xamarin、Unityなど様々なプラットフォームをサポートしています。これにより、幅広い開発環境でNuGetのメリットを享受できるようになっています。

NuGetのパッケージ管理機能

NuGetのパッケージ管理機能に関して、以下3つを簡単に解説していきます。

  • NuGetパッケージの検索と参照追加
  • NuGetパッケージのバージョン管理
  • NuGetパッケージの更新と削除

NuGetパッケージの検索と参照追加

NuGetでは、必要なパッケージをNuGet.orgから検索し、プロジェクトに追加することができます。Visual StudioのNuGetパッケージマネージャーを使用すれば、GUIから簡単に目的のパッケージを見つけられます。

検索結果から目的のパッケージを選択し、「インストール」ボタンをクリックするだけで、プロジェクトにパッケージの参照を追加できます。これにより、パッケージが提供する機能をすぐに利用可能となります。

また、コマンドラインからもInstall-Packageコマンドを使ってパッケージの追加が行えます。例えば、Newtonsoftの「Json.NET」をインストールする場合は以下のようになります。

Install-Package Newtonsoft.Json

NuGetパッケージのバージョン管理

NuGetでは、パッケージのバージョン管理が重要です。アプリケーションの安定性を維持するためには、適切なバージョンのパッケージを使用する必要があります。

NuGetでは、パッケージのバージョン指定方法として、厳密なバージョン指定と範囲指定の2種類があります。厳密なバージョン指定では、特定のバージョンに固定できます。

一方、範囲指定では、パッケージのマイナーバージョンやパッチバージョンの自動更新が可能です。範囲指定の例として、以下のようなものがあります。

"Newtonsoft.Json": "[12.0.1, 13.0.0)"

NuGetパッケージの更新と削除

NuGetでは、インストール済みのパッケージを最新バージョンに更新することができます。Visual StudioのNuGetパッケージマネージャーからは、更新可能なパッケージが一覧表示され、簡単に更新できます。

また、不要になったパッケージは削除することも可能です。パッケージの削除は、Visual StudioのNuGetパッケージマネージャーから行えます。

コマンドラインからは、Update-Packageコマンドでパッケージの更新が、Uninstall-Packageコマンドでパッケージの削除が行えます。これらのコマンドを使えば、効率的にパッケージの管理ができるでしょう。

NuGetのカスタムパッケージ作成

NuGetのカスタムパッケージ作成に関して、以下3つを簡単に解説していきます。

  • NuGetパッケージの作成方法
  • NuGetパッケージのメタデータ設定
  • NuGetパッケージの公開プロセス

NuGetパッケージの作成方法

NuGetでは、自分で作成したライブラリやツールをパッケージ化して公開することができます。パッケージの作成は、Visual Studioのプロジェクトテンプレート「Class Library」から始めるのが一般的です。

プロジェクトにパッケージとして提供したい機能を実装したら、プロジェクトのプロパティから「パッケージ」タブを開きます。ここでパッケージのメタデータを設定し、パッケージを生成します。

また、コマンドラインからはnuget packコマンドを使ってパッケージを作成できます。プロジェクトファイル(.csproj)を指定してコマンドを実行すれば、パッケージファイル(.nupkg)が生成されます。

nuget pack MyLibrary.csproj

NuGetパッケージのメタデータ設定

NuGetパッケージには、パッケージの情報を示すメタデータを設定する必要があります。メタデータには、パッケージID、バージョン、説明、作者、ライセンスなどの情報を含めます。

Visual Studioでは、プロジェクトのプロパティにある「パッケージ」タブでメタデータの設定ができます。必須の項目を漏れなく入力し、パッケージの信頼性を高めましょう。

また、パッケージのルートに「.nuspec」ファイルを配置して、XMLでメタデータを記述することも可能です。この方法では、より詳細なメタデータの設定ができます。

< ?xml version="1.0" encoding="utf-8"? >
< package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd" >
  < metadata >
    < id >MyLibrary< /id >
    < version >1.0.0< /version >
    < description >My custom library.< /description >
    < authors >John Doe< /authors >
  < /metadata >
< /package >

NuGetパッケージの公開プロセス

作成したNuGetパッケージを他の開発者に利用してもらうには、パッケージを公開する必要があります。パッケージの公開は、NuGet.orgなどのパブリックなリポジトリに行うのが一般的です。

NuGet.orgに公開するには、まずNuGetアカウントを作成します。次に、NuGetのWebサイトからパッケージをアップロードします。

また、コマンドラインからnuget pushコマンドを使ってパッケージを公開することも可能です。APIキーを取得し、パッケージファイルのパスを指定してコマンドを実行すれば、パッケージがNuGet.orgに公開されます。

nuget push MyLibrary.1.0.0.nupkg -ApiKey YOUR_API_KEY -Source https://api.nuget.org/v3/index.json

NuGetとCIツールの連携

NuGetとCIツールの連携に関して、以下3つを簡単に解説していきます。

  • Azure PipelinesとNuGetの連携
  • GitHub ActionsとNuGetの連携
  • JenkinsとNuGetの連携

Azure PipelinesとNuGetの連携

Azure PipelinesはMicrosoftが提供するCI/CDサービスで、NuGetとの親和性が高いです。Azure Pipelinesでは、NuGetタスクを使用してパッケージの復元やビルド、プッシュなどの操作ができます。

具体的には、YAMLパイプラインファイルにNuGetタスクを記述することで、自動化されたパッケージ管理が実現できます。以下は、NuGetパッケージのビルドとプッシュを行うYAMLの例です。

steps:
- task: NuGetCommand@2
  inputs:
    command: 'pack'
    packagesToPack: '**/*.csproj'
    versioningScheme: 'byBuildNumber'

- task: NuGetCommand@2
  inputs:
    command: 'push'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
    nuGetFeedType: 'internal'
    publishVstsFeed: 'my-feed'

GitHub ActionsとNuGetの連携

GitHub Actionsは、GitHubに組み込まれたCI/CDワークフロー機能です。GitHubリポジトリにワークフローファイルを配置するだけで、簡単にNuGetパッケージの自動化ができます。

例えば、以下のようなワークフローファイルを作成することで、NuGetパッケージのビルドと公開を自動化できます。

name: NuGet Package

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Build NuGet Package
      run: dotnet pack MyLibrary.csproj --configuration Release

    - name: Publish NuGet Package
      run: dotnet nuget push **/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json

この例では、mainブランチへのプッシュをトリガーに、NuGetパッケージのビルドと公開が実行されます。API_KEYなどの秘密情報は、GitHubのSecretsで安全に管理できます。

JenkinsとNuGetの連携

Jenkinsは、オープンソースのCI/CDツールです。プラグインを利用することで、NuGetパッケージの管理をJenkinsで自動化できます。

JenkinsでNuGetを扱うには、「NuGet Plugin」をインストールします。このプラグインにより、NuGetパッケージのビルド、リストア、公開などのアクションをジョブ内で実行できるようになります。

以下は、Jenkinsのジョブ設定の例です。ここでは、NuGetパッケージのビルドとプライベートリポジトリへの公開を行っています。

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                bat 'nuget restore'
                bat 'msbuild /p:Configuration=Release'
                bat 'nuget pack MyLibrary.csproj -Properties Configuration=Release'
            }
        }
        stage('Publish') {
            steps {
                bat 'nuget push MyLibrary.1.0.0.nupkg -ApiKey ${NUGET_API_KEY} -Source http://my-nuget-server/nuget'
            }
        }
    }
}

参考サイト

  1. Microsoft. https://www.microsoft.com/ja-jp

※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。

「ソフトウェア」に関するコラム一覧「ソフトウェア」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。