> Source: https://www.ymotongpoo.com/works/oteps/metrics/otep-0010/


# OTEP-0010: メトリクスAPIにおける「Cumulative」から「Counter」への名称変更

「Cumulative」ではなく「Counter」という名前を優先します。

## 動機 {#motivation}

非公式な言い方をすれば、OpenTelemetryコミュニティのメンバーは、Cumulativeメトリクスインストルメントを「カウンター（Counter）」と呼ぶことを好んでいるようです。
この点は、（たとえば8/21のワーキングセッションでの）議論の中で明らかになってきました。

Counterは、他の種類であるGaugeやMeasureと同じく名詞です。
Cumulativeは形容詞なので、「Cumulative instrument」は意味が通りますが、それが表しているのは「Counter」です。

## 解説 {#explanation}

これにより、これらのAPIについて話すときに「cumulative」を「counter」に読み替えるという認知コストがなくなります。

これは累積型のメトリクスインストルメントに対して使われている用語であり、たとえば[Statsd](https://github.com/statsd/statsd/blob/master/docs/metric_types.md)や[Prometheus](https://prometheus.io/docs/concepts/metric_types/#counter)がその例です。

しかし、私たちはCounterの重要なサブケースを特定しており、それらは次のように扱われます。
カウンターにはオプションがあります。

- 真に累積的なカウンター（True-cumulative Counter）: デフォルトでは、`Add()` の引数は0以上でなければなりません。
- 双方向カウンター（Bi-directional Counter）: オプションとして、`Add()` の引数は正負どちらの0でもかまいません。

ゲージは、（たとえばCPU使用率のような）非減少の量を監視するために使われることがあり、オプションとして次のように扱われます。

- 双方向ゲージ（Bi-directional Gauge）: デフォルトでは、`Set()` の引数は正負どちらの0でもかまいません。
- 単方向ゲージ（Uni-directional Gauge）: オプションとして、`Set()` の引数の変化は0以上でなければなりません。

単方向ゲージインストルメントは、観測される値が累積的であるメトリクスの `Observer` コールバックで一般的に使用されます。

## トレードオフと緩和策 {#trade-offs-and-mitigations}

真に累積的なカウンターと双方向カウンターの違いを説明する他の方法としては、次のようなものがあります。

- 加算的（Additive）（Cumulativeに対して）
- GaugeDelta（Gaugeに対して）

これらすべてのケースを「Counter」という広い用語にまとめてしまうことは、解決するよりも多くの混乱を生む可能性があります。

## 内部の詳細 {#internal-details}

単純にすべての「Cumulative」を「Counter」に置き換え、その後文法に合わせて編集します。

## 先行技術と代替技術 {#prior-art-and-alternatives}

既存のメトリクスライブラリを調査したところ、Counterの方がはるかに一般的です。

