# Instrumentation Scope

> Source: https://www.ymotongpoo.com/works/otel-specs-ja/spec/common/instrumentation-scope/


**ステータス**: [Stable](../../document-status/)

発行されるテレメトリーを関連付けられる、論理的なソフトウェアの単位です。妥当なInstrumentation Scopeが何を指すかを決めるのは、通常開発者の選択に委ねられます。最も一般的な方法は、[Instrumentation Library](../../glossary/#instrumentation-library)の名前とバージョンを使い、追加の識別情報をスコープの属性の一部とすることです。名前、バージョン、追加の属性を得るために、モジュール、パッケージ、クラス、プラグインなど他のソフトウェアコンポーネントを使うこともできます。

Instrumentation Scopeは、(name, version, schema_url, attributes)というタプルによって定義されます。ここでversion、schema_url、attributesは任意です。このタプルは、テレメトリーを発行する論理的なソフトウェアの単位を一意に識別すべきです（SHOULD）。一意性を確保する典型的な方法は、発行を行うソフトウェア単位の完全修飾名（例えば完全修飾ライブラリ名や完全修飾クラス名）を使うことです。

Instrumentation Scopeは、[Tracer、Meter、またはLogger](../../glossary/#tracer-name--meter-name--logger-name)を取得するために使われます。

Instrumentation Scopeの名前は、`InstrumentationScope`の名前を識別するために指定すべきです（SHOULD）。

Instrumentation Scopeの任意のSchema URLは、その計装が発行するテレメトリーが準拠する[Telemetry Schema](/works/otel-specs-ja/spec/schemas/)を識別すべきです（SHOULD）。

Instrumentation Scopeの任意の属性は、スコープに関する追加の情報を提供します。例えば、Instrumentation Libraryを指定するスコープでは、そのライブラリのソースコードが格納されているリポジトリのURLを示すために追加の属性が記録されることがあります。

## Examples

以下は、想定される使用場面を網羅的に挙げたものではありませんが、その例です。

* 汎用的なInstrumentation Libraryが、その名前・バージョンと、追加のライブラリ情報を含む属性を持つ場合。
* データベースアクセスが、それ自身の名前とバージョン（例えば`db.system.name`）で計装される場合。これは、JDBCやSqlAlchemyのような、異なる基盤データベースへのアクセスを抽象化するAPIによって活用できます。
* 情報を消費または生成するクライアントが、その名前、バージョン、`id`を使って`InstrumentationScope`を設定する場合。
* アプリケーション内部のコンポーネントが自身のテレメトリーを発行し、同じ種類の複数のインスタンスが存在する場合に自身を区別するために`InstrumentationScope`の属性に依存する場合。

