コンテンツにスキップ

Configlue

読み書きできる、型付きの設定状態。

Configlue は .NET 向けの型付き read/write 設定状態です。アプリケーションは小さな state API を通じて設定を読み書きし、保存場所や構成方法は通常のアプリケーションコードの外側に置きます。

設定を消費するだけでなく、アプリケーション自身が設定を編集する場合にこそ役立ちます。

読み取りだけでは足りない理由

Section titled “読み取りだけでは足りない理由”

読み取り側の抽象化で解決できる範囲は広いですが、アプリケーションが自分の設定を編集し始めると、次の問いがまとめて現れます。

  • 保存場所の詳細を漏らさずに設定を書き戻す方法。
  • 複数の scope や source をひとつの effective value にまとめる方法。
  • 値がどこから来たかを保つ方法。
  • 変更をどこへ書くか選ぶ方法。
  • 保存済みデータを壊さずに schema を育てる方法。
  • 外部からの変更を観測する方法。

Git、VS Code、Chrome に見られる、層状の scope、優先順位、読み取りと書き込みの分離と同じ形です。Configlue はその形を普通の .NET アプリケーションに持ち込みます。

アプリケーションから見える API

Section titled “アプリケーションから見える API”

通常のアプリケーションコードが依存するのは IReadOnlyState<T> と IWritableState<T> だけです。読み書きの流れはこの程度に保てます。

var settings = ConfiglueApp.GetState<AppSettings>();
var current = await settings.GetValueAsync();
await settings.SaveAsync(patch =>
{
patch.Theme = "Dark";
});

アプリケーションは「何を読むか・何を書くか」だけを表し、設定の保存や統合の方法は別の場所で構成します。source、effective value、provenance などの用語は概念で正確に定義します。

型付きの読み書き

GetValueAsync で読み、SaveAsync で書く小さな state API を使います。まず概念から。

層状の構成と来歴

複数の scope や source をひとつの effective value にまとめ、値の出どころを保持します。概念を参照。

疎な書き込み

変更分だけを保存し、設定された値と触れていない値を区別します。ガイドを参照。

schema の成長と検証

設定の形を育てながら、保存済みデータを読み続けられます。ガイドを参照。

変更観測と永続化

外部からの変更を観測し、永続化の振る舞いをアプリケーションから分離します。ガイドを参照。

.NET ホスト連携

同じ state model をさまざまな .NET ホストや UI で使えます。連携を参照。

最小の実行可能な構成ははじめるから。

目的が決まっている場合はこちらへ。

  • 概念で state、source、書き込みの考え方を掴む。
  • ガイドで目的別の手順を探す。
  • 連携でホストや実行環境の組み合わせを探す。
  • リファレンスで API だけでは表せない契約を確認する。