# 設定

> Source: https://www.ymotongpoo.com/works/otel-specs-ja/spec/configuration/


OpenTelemetryのSDKコンポーネントは高い設定可能性を備えています。本仕様書は、OpenTelemetryコンポーネントを設定する仕組みを示すものであり、何を設定できるかの詳細までは規定しません。

## 設定インターフェース

### プログラマティック

SDKは、すべての設定に対してプログラマティックなインターフェースを提供しなければなりません（MUST）。このインターフェースはSDK自身の言語で書かれるべきです（SHOULD）。それ以外の設定手段はすべて、このインターフェースの上に構築されるべきです（SHOULD）。

このプログラマティックなインターフェースの例としては、SDKビルダークラスに明確に定義された構造体を渡す方式があります。そこから、ファイル（YAML、JSON、TOMLなど）を受け取り、プログラマティックなインターフェースが消費できる明確に定義された構造体へ変換するCLIを構築することもできます。[宣言的設定](#宣言的設定)を参照してください。

### 環境変数

環境変数による設定は、共通の設定目的のために言語に依存しない環境変数の集合を定義します。

[OpenTelemetry環境変数仕様](./sdk-environment-variables/)を参照してください。

### 宣言的設定

宣言的設定は、OpenTelemetryを設定するための仕組みを提供します。[環境変数](#環境変数)方式よりも表現力が高く機能が充実しており、[プログラマティックな設定](#プログラマティック)では実現できない形で言語に依存しません。宣言的設定は特に、標準化された設定データモデルのファイルベースの表現に従って、ユーザーがOpenTelemetryコンポーネントを読み込めるようにするツール群を定義します。

宣言的設定は次の主要なコンポーネントから構成されます。

* [データモデル](./data-model/)は、ユーザーがOpenTelemetry SDKコンポーネントと計装の意図した設定を指定できるようにするデータ構造を定義します。データモデルにはファイルベースの表現が含まれます。
* [計装設定API](./api/)は、計装ライブラリが初期化時に関連する設定オプションを読み取ることで設定を利用できるようにします。
* [設定SDK](./sdk/)は、ファイル設定に関するSDKのケーパビリティを定義します。インメモリ設定モデル、設定ファイル内でのカスタムプラグインコンポーネントの参照サポート、設定ファイルを解析して設定データモデルを解釈する操作などが含まれます。

[補足ガイドライン](./supplementary-guidelines/)も参照してください。

### その他の仕組み

追加の設定手段は、SDKの言語にとって慣用的な言語・形式・スタイルで提供されるべきです（SHOULD）。SDKは、適切であればいくつでも設定手段を含めることができます。

- [計装設定API](/works/otel-specs-ja/spec/configuration/api/)
- [設定データモデル](/works/otel-specs-ja/spec/configuration/data-model/)
- [設定SDK](/works/otel-specs-ja/spec/configuration/sdk/)
- [OpenTelemetry環境変数仕様](/works/otel-specs-ja/spec/configuration/sdk-environment-variables/)
- [共通設定仕様](/works/otel-specs-ja/spec/configuration/common/)
- [設定の補足ガイドライン](/works/otel-specs-ja/spec/configuration/supplementary-guidelines/)
