知識マップ: appsettings.jsonだけじゃない ── Windows業務アプリの構成管理実務(環境別設定・秘密情報・書き込み先)

記事「appsettings.jsonだけじゃない ── Windows業務アプリの構成管理実務(環境別設定・秘密情報・書き込み先)」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事は、.NETの構成管理をIConfigurationによる構成プロバイダーの重ね合わせ、IOptionsファミリーによる型安全な受け取り、環境変数による環境切り替えという3つの仕組みから整理する。appsettings.jsonはappsettings.{Environment}.json・Secret Manager・環境変数・コマンドライン引数の順に上書きされ、後から追加したプロバイダーが勝つ。IOptionsは起動時の値を保持し続ける一方、IOptionsMonitorはreloadOnChangeによるファイル変更を即時反映でき、ValidateOnStartと組み合わせれば設定の不備を起動時に検出できる。書き込みが必要な設定は%LOCALAPPDATA%や%ProgramData%に分離し、秘密情報は開発時のuser-secretsと本番のDPAPIで役割を分け、App.config世代の資産はappsettings.jsonへ段階的に移行する。

.NET構成管理の実務知識マップ.NETの設定がIConfigurationと構成プロバイダーの優先順位で重ね合わされる仕組み、appsettings.json・環境別設定・環境変数・コマンドライン引数の上書き順序、IOptions/IOptionsSnapshot/IOptionsMonitorの使い分けとreloadOnChangeやValidateOnStartとの関係、書き込み可能な設定の置き場所と秘密情報の扱い、App.config世代からの移行先を示す図利用するより先に行うべきより先に行うべきより先に行うべきより先に行うべき利用する利用する前提とする利用する利用する利用する利用する用いるのは非推奨前提とする利用する用いるのは非推奨推奨される対応推奨される対応推奨される対応推奨される対応の後継利用する利用する用いるのは非推奨の後継.NETの構成システム(IConfiguration)オプションパターン構成プロバイダーappsettings.jsonappsettings.{Environment}.jsonSecret Manager(user-secrets)環境変数プロバイダーコマンドライン引数プロバイダーGeneric HostDOTNET_ENVIRONMENTIOptionsIOptionsSnapshotIOptionsMonitorreloadOnChangeValidateOnStartアプリが書き換える設定%LOCALAPPDATA%配下の保存先%ProgramData%配下の保存先秘密情報DPAPIApp.configSystem.Configuration.ConfigurationManager.NET FrameworkSettings.settings.NET(Core以降)

概念間の関係(全25件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

.NETの構成システム(IConfiguration)
JSON・環境変数・コマンドライン引数など性質の異なる構成ソースを、複数の構成プロバイダーの重ね合わせとして背後に統合する.NETのキー・バリューストア。
オプションパターン
設定を文字列キーではなくPOCOにバインドして型として受け取る.NETの設計パターンの総称。
appsettings.json
ビルド成果物に同梱する、環境に依存しない既定値を置くJSON構成ファイル。
appsettings.{Environment}.json
基本のappsettings.jsonを環境ごとに上書きする差分ファイルで、環境ごとに変わる値だけを書けばよい。
Secret Manager(user-secrets)
開発時に秘密情報を扱うための.NETの仕組み。暗号化されておらず、開発専用であり信頼できるストアとして扱ってはいけないと公式に明記されている。
環境変数プロバイダー
プレフィックスなしの環境変数を、IConfiguration経由のアプリ設定として既定の並びに組み込む構成プロバイダー。
Generic Host
構成・DI・ロギングをまとめて面倒を見る.NETの土台。Host.CreateApplicationBuilderを使うと既定の構成プロバイダーの階層が組み立てられる。
IOptions<T>
シングルトンとして登録され、起動時に1回だけ計算した値を保持し続ける、オプションパターンの最もシンプルな受け取り方。
IOptionsMonitor<T>
シングルトンとして登録されつつ、変更通知(OnChange)付きでいつでも最新値を取得できるオプションパターンの受け取り方。
%LOCALAPPDATA%配下の保存先
ユーザーごとに書き込める、ユーザー単位の設定・データを置く既定のフォルダー。
%ProgramData%配下の保存先
管理者が1台につき1つ設定し、全ユーザーで共有するマシン単位の設定を置くフォルダー。
DPAPI
実行中のマシン上でアプリの秘密情報を保護するWindowsのデータ保護API。
System.Configuration.ConfigurationManager
.NET Framework時代のApp.config読み込みコードを.NET上でもそのまま動かせるようにするNuGetパッケージ。
App.config
.NET Framework時代のXML形式の構成ファイルで、<appSettings>セクションなどを持つ。
Settings.settings
.NET Frameworkでユーザーごとの設定を自動的に保存できた仕組み。.NETには相当する自動生成の仕組みが標準では用意されていない。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。