C#
 Computer >> コンピューター >  >> プログラミング >> C#

C# ASP.NET Coreで使われる主要なJSONファイルの種類と役割を徹底解説

ASP.NET Coreは、従来のASP.NETからアーキテクチャが全面的に見直されたフレームワークです。旧バージョンのASP.NETでは、System.Configurationweb.configファイル内のXML構成に依存していましたが、ASP.NET Coreでは、ソリューション全体の設定、プロジェクト固有の設定、クライアント固有の設定などを宣言・アクセスするための、よりシンプルで柔軟な新しい構成モデルが採用されています。

この新しい構成モデルは、XML・INI・JSONなど複数のファイル形式に対応しており、その中でも特に中心的な役割を担うのがJSONファイルです。本記事では、ASP.NET Coreプロジェクトでよく利用される代表的なJSONファイルを紹介し、それぞれの役割と記述例をわかりやすく解説します。

ASP.NET Coreで使われる主な構成用JSONファイル

ASP.NET Coreのプロジェクトでは、主に以下の6種類のJSONファイルが構成情報の管理に使用されます。

global.json
launchSettings.json
appsettings.json
bundleconfig.json
project.json
bower.json

それでは、各ファイルの詳細を見ていきましょう。

1. global.json ― ソリューションレベルの設定

global.jsonは、ソリューション全体に関わる設定を定義するためのファイルです。主に、ソースコードの配置場所や使用する.NET SDKのバージョンを指定します。

記述例

{
    "projects": [ "src", "test" ],
    "sdk": {
        "version": "1.0.0-preview2-003121"
    }
}
  • projects:ソリューション内のソースコードの場所を定義します。上記の例では「src」と「test」の2つの場所が指定されており、「src」には実際のアプリケーションコードが、「test」にはテストコードが格納されます。
  • sdk:プロジェクトのビルドに使用するSDKのバージョンを指定します。チーム開発において全メンバーが同じSDKバージョンを使うことで、環境差異によるビルドエラーを防げます。

2. launchSettings.json ― プロジェクトごとの起動プロファイル設定

launchSettings.jsonでは、Visual Studioがアプリケーションを起動する際に使用する、プロファイルごとの設定を定義できます。具体的には、使用するWebサーバー(IIS ExpressやKestrelなど)、起動時に開くURL、適用する環境変数などが含まれます。また、特定のプロファイルに対してコンパイルやデバッグ用のフレームワークを指定することも可能です。

記述例

{
    "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
            "applicationUrl": "https://localhost:50944/",
            "sslPort": 0
        }
    },
    "profiles": {
        "IIS Express": {
            "commandName": "IISExpress",
            "launchBrowser": true,
            "environmentVariables": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            }
        },
        "ASPCoreMVCHelloWorld": {
            "commandName": "Project",
            "launchBrowser": true,
            "launchUrl": "https://localhost:5000",
            "environmentVariables": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "kestrel": {
                "commandName": "kestrel",
                "sdkVersion": "dnx-clr-win-x86.1.0.0-preview2-003121"
            }
        }
    }
}

各プロファイルの設定は、Visual Studioでプロジェクトを右クリックし、「プロパティ」→「デバッグ」画面からGUI経由でも編集できます。ASPNETCORE_ENVIRONMENT環境変数によって「Development」「Staging」「Production」といった実行環境を切り替えられる点も重要なポイントです。

3. appsettings.json ― アプリケーションの構成設定

従来のASP.NETでは、アプリケーションの構成設定をweb.configに保存していました。一方、ASP.NET Coreではappsettings.jsonを使用して、カスタムアプリケーション設定、データベース接続文字列、ロギング設定などを管理します。

記述例

{
    "ApplicationInsights": {
        "InstrumentationKey": ""
    },
    "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
            "Default": "Debug",
            "System": "Information",
            "Microsoft": "Information"
        }
    }
}

この例では、Application Insightsのインストルメンテーションキーと、ログレベルの設定が定義されています。また、appsettings.Development.jsonのように環境ごとにファイルを分けておけば、実行環境に応じた設定の自動読み込みも可能です。

4. bundleconfig.json ― バンドルと縮小(ミニファイ)の設定

bundleconfig.jsonでは、CSSやJavaScriptファイルのバンドル(結合)とミニファイ(圧縮・最適化)の構成を定義します。これにより、HTTPリクエスト数の削減やファイルサイズの軽量化を実現し、ページの表示速度向上につながります。

記述例

[
    {
        "outputFileName": "wwwroot/css/site.min.css",
        // 入力ファイルの相対パスの配列。グロブパターンもサポート
        "inputFiles": [
            "wwwroot/css/site.css"
        ]
    },
    {
        "outputFileName": "wwwroot/js/site.min.js",
        "inputFiles": [
            "wwwroot/js/site.js"
        ],
        // ミニファイオプションの指定(任意)
        "minify": {
            "enabled": true,
            "renameLocals": true
        },
        // ソースマップ(.mapファイル)の生成(任意)
        "sourceMap": false
    }
]

入力ファイルにはワイルドカード(globパターン)を使用できるため、複数のファイルをまとめて指定することもできます。

5. project.json ― プロジェクトレベルの構成設定

project.jsonは、プロジェクトレベルのすべての構成設定を保存するために使用されていたファイルです。依存関係(NuGetパッケージ)、ターゲットフレームワーク、ビルドオプションなどの情報がJSON形式で記述されます。

記述例

{
    "dependencies": {
        "Microsoft.NETCore.App": {
            "version": "1.0.0",
            "type": "platform"
        },
        "Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
        "Microsoft.AspNetCore.Diagnostics": "1.0.0",
        "Microsoft.AspNetCore.Mvc": "1.0.0",
        "Microsoft.AspNetCore.Razor.Tools": {
            "version": "1.0.0-preview2-final",
            "type": "build"
        },
        "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
        "Microsoft.AspNetCore.StaticFiles": "1.0.0",
        "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
        "Microsoft.Extensions.Configuration.Json": "1.0.0",
        "Microsoft.Extensions.Logging": "1.0.0",
        "Microsoft.Extensions.Logging.Console": "1.0.0",
        "Microsoft.Extensions.Logging.Debug": "1.0.0",
        "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
        "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
    }
}

補足:project.jsonは.NET Core 1.x時代に使用されていた形式で、Visual Studio 2017以降(.NET Core 2.0以降)では、MSBuildベースの.csprojファイルに置き換えられました。現在の新規プロジェクトでは.csprojが標準となっている点に注意してください。

6. bower.json ― フロントエンドパッケージの管理

BowerはWeb向けのパッケージマネージャーで、HTML、CSS、JavaScript、フォント、画像ファイルなどを含むコンポーネントを管理します。bower.jsonには、プロジェクトが必要とするフロントエンドライブラリとそのバージョン、および依存関係を定義します。Bowerは必要なパッケージの適切なバージョンとその依存関係を自動的にインストールしてくれるため、フロントエンド資産の管理が容易になります。

補足:Bower自体は現在メンテナンスモードに入っており、近年ではnpmやYarn、LibManなどへの移行が推奨されています。既存プロジェクトでBowerを利用している場合は、移行を検討するとよいでしょう。

まとめ

ASP.NET Coreでは、目的別に複数のJSONファイルを使い分けることで、柔軟かつ整理された構成管理が可能になっています。

  • global.json:ソリューションレベルの設定(SDKバージョンなど)
  • launchSettings.json:デバッグ時の起動プロファイル設定
  • appsettings.json:アプリケーション設定・接続文字列・ロギング
  • bundleconfig.json:CSS/JSのバンドルとミニファイ
  • project.json:プロジェクトレベルの構成(現行は.csprojへ移行)
  • bower.json:フロントエンドパッケージの依存関係管理

それぞれの役割を理解しておくことで、ASP.NET Coreアプリケーションの開発・保守がよりスムーズになります。

  1. C# ASP.NET Web APIのフィルターの種類と使い方を徹底解説

    ASP.NET Web APIフレームワークでは、リクエスト処理のさまざまな段階に追加のロジックを組み込むために「フィルター」が使用されます。フィルターは、ロギング、認可、キャッシュといった横断的関心事(クロスカッティングコンサーン)を実装するための仕組みであり、アクションメソッドやコントローラーに対して、宣言的またはプログラム的に適用できます。ここでは、C#のWeb APIで利用できる主なフィルターの種類について詳しく見ていきましょう。Web APIの主なフィルターの種類1. 認証フィルター(Authentication Filter)認証フィルターは、ユーザーの身元情報を検証するために使用

  2. C# ASP.NET Web APIにおけるコントローラーアクションの4つの戻り値の型とは?

    ASP.NET Web APIのアクションメソッドには、主に以下の4種類の戻り値の型を指定することができます。 void(戻り値なし) プリミティブ型/複合型 HttpResponseMessage IHttpActionResult 1. void(戻り値なし) すべてのアクションメソッドが必ずしも何かを返す必要はありません。戻り値の型としてvoidを指定することも可能です。 コード例 using DemoWebApplication.Models; using System.Web.Http; namespace DemoWebApplication.Controllers {