> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/burokku/blocks/video-processing/buffer.md).

# バッファ

最新の入力をFIFO（先入れ先出し）キューに保存し、新しい要素を先頭に追加し、バッファが指定された長さを超えたときに最も古い要素を自動的に削除することで、最後のN個の値のスライディングウィンドウ・バッファを維持します。これにより、時系列データ収集、フレーム履歴の追跡、バッチ処理の準備、スライディングウィンドウ分析のワークフローが可能になります。

## このブロックの仕組み

このブロックは、渡された最新の値を保存するローリングバッファを維持し、時間とともにデータのスライディングウィンドウを作成します。このブロックは:

1. 任意の型の入力データ（画像、検出、値など）と設定パラメータ（バッファ長とパディングオプション）を受け取ります
2. ワークフローの実行をまたいで保持される内部バッファを維持します:
   * ブロックが最初に作成されたとき、バッファは空のリストとして初期化されます
   * バッファの状態はワークフロー実行中ずっと保持されます
   * 各バッファブロックのインスタンスは、それぞれ独立したバッファを保持します
3. 新しいデータをバッファに追加します:
   * 最新の値をバッファ配列の先頭（インデックス0）に挿入します
   * 最新の値がバッファの最初に表示されます
   * 古い値は配列内の後ろの位置へシフトされます
4. バッファサイズを管理します:
   * バッファ長が指定された `長さ` パラメータを超えた場合、最も古い要素を削除します
   * 最新の `長さ` 値のみを保持します
   * スライディングウィンドウのサイズを自動的に維持します
5. オプションのパディングを適用します:
   * If `パッド` pad が True の場合: バッファを `None` 値で満たし、ちょうど `長さ` 要素になるまで
   * より少ない数の `長さ` 値しか受信していない場合でも、一貫したバッファサイズを確保します
   * If `パッド` が False の場合: バッファサイズは0から `長さ` 値が追加されるにつれて増加し、その後は `長さ`
6. バッファ済み配列を返します:
   * バッファされた値を順序どおりに含むリストを出力します（最新が先頭）
   * リストの長さは `長さ` （パディング有効時）または現在のバッファサイズ（パディング無効時）に等しくなります
   * 値は最新（インデックス0）から最古（最後のインデックス）へと並びます

このバッファは、新しいデータが先頭に入り、容量に達すると古いデータが末尾から出ていくスライディングウィンドウ・パターンを実装しています。これにより、最近の値の時系列履歴が作成され、以前のフレーム、検出、測定値を参照する必要がある操作に役立ちます。バッファは任意のデータ型に対応するため、画像、検出、数値、その他のワークフロー出力にも柔軟に使えます。

## 一般的な使用例

* **フレーム履歴の追跡**：時系列分析のために最近の動画フレームの履歴を保持します（例: フレームシーケンスを追跡する、最近の画像履歴を保持する、比較用にフレームを収集する）。これにより、時系列フレーム分析のワークフローが可能になります
* **検出履歴**：最近の検出結果をバッファして傾向分析や比較に用います（例: 時間経過に伴う検出の変化を追跡する、現在の検出結果と前回の検出結果を比較する、検出パターンを分析する）。これにより、検出履歴のワークフローが可能になります
* **バッチ処理の準備**：複数の値をまとめて処理する前に収集します（例: 最近の画像をバッチ処理する、複数の検出結果を集約する、バッチ操作用のデータを準備する）。これにより、バッチ処理のワークフローが可能になります
* **スライディングウィンドウ分析**：ロールिंगウィンドウ上のデータを分析します（例: 最近のフレームの傾向を分析する、移動平均を計算する、シーケンスの変化を検出する）。これにより、スライディングウィンドウ分析のワークフローが可能になります
* **可視化シーケンス**：アニメーションやシーケンス可視化のために最近のデータを保持します（例: フレームシーケンスを作成する、時間的変化を可視化する、最近の履歴を表示する）。これにより、時系列可視化のワークフローが可能になります
* **時系列比較**：現在の値を最近の履歴値と比較します（例: 現在のフレームと前のフレームを比較する、時間経過による変化を検出する、時系列パターンを分析する）。これにより、時系列比較のワークフローが可能になります

## 他のブロックへの接続

このブロックは任意の型のデータを受け取り、バッファ済みの出力配列を生成します:

* **任意のブロックの後** に配置し、バッファに値を出力する任意のブロック（例: 画像ソースの画像をバッファする、検出モデルの検出結果をバッファする、分析ブロックの値をバッファする）に続けて使用し、データバッファリングのワークフローを可能にします
* **配列を処理するブロックの前** バッチ化されたデータや履歴データを提供します（例: バッファされた画像を処理する、検出配列を分析する、値のシーケンスを扱う）。これにより、配列処理のワークフローが可能になります
* **可視化ブロックの前** シーケンスや時系列データを表示します（例: フレームシーケンスを可視化する、検出履歴を表示する、時系列パターンを示す）。これにより、時系列可視化のワークフローが可能になります
* **分析ブロックの前** 履歴データを必要とするもの（例: 時間経過による傾向を分析する、現在と履歴を比較する、時系列シーケンスを処理する）。これにより、時系列分析のワークフローが可能になります
* **集約ブロックの前** 集約用に複数の値を提供します（例: バッファされた値を集約する、複数の検出結果を処理する、最近のデータを結合する）。これにより、集約のワークフローが可能になります
* **時系列処理パイプラインでは** 最近の履歴を保持する必要がある場合（例: 時間経過による変化を追跡する、フレームシーケンスを保持する、時系列分析用にデータを収集する）。これにより、時系列処理のワークフローが可能になります

## 要件

このブロックは任意のデータ型（画像、検出、値など）に対応します。バッファは同じワークフローインスタンス内でのワークフロー実行をまたいで状態を保持します。 `長さ` パラメータは、バッファに保持する値の最大数を決定します。 `パッド` が有効な場合、バッファは常にちょうど `長さ` 要素を返します（ `None` でパディングされます）。 `パッド` が無効な場合、バッファは0から `長さ` 要素まで増加し、値が追加された後は `長さ` 要素を維持します。バッファはワークフロー実行中ずっと保持され、ワークフローを再起動するとリセットされます。

### 型識別子

ステップで次の識別子を使用してください `"type"` フィールド： `roboflow_core/buffer@v1` ワークフローにこのブロックをステップとして追加するには。

### プロパティ

| **名前** | **型**  | **説明**                                                                                                                                                                                                                     | 参照 |
| ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name` | `str`  | このステップの一意の識別子を入力してください。                                                                                                                                                                                                    | ❌  |
| `長さ`   | `整数`   | バッファに保持する要素の最大数。バッファがこの長さを超えると、最も古い要素は自動的に削除されます。スライディングウィンドウのサイズを決定します。0より大きい必要があります。典型的な値は、フレームシーケンスでは2〜10、より長い履歴ではそれ以上です。                                                                                               | ❌  |
| `パッド`  | `bool` | 一貫したバッファサイズを維持するためにパディングを有効にします。True の場合、バッファは `None` 値で満たし、ちょうど `長さ` 要素でパディングされ、出力は常に `長さ` 個のアイテムになります。受信した値がそれより少ない場合でも同様です。False の場合、バッファは0から `長さ` 値が追加されるにつれて増加し、その後は `長さ` を維持します。下流ブロックが固定サイズの配列を必要とする場合にパディングを使用します。 | ❌  |

この **参照** 列は、で利用可能な動的値を使ってプロパティをパラメータ化できる可能性を示します `ワークフロー` 実行時。参照 *バインディング* 詳細は。

### ランタイム互換性

`soft` - ランタイム `hosted_serverless`, `dedicated_deployment`；実行 `リモート`; 入力 `動画` このブロックは、プロセスメモリ内に動画ごとの状態を保持します（video\_metadata.video\_identifier をキーとする）。ステートレスまたは複数レプリカのHTTPランタイムでリモートステップ実行を行うと、連続するリクエストが別々のワーカープロセスによって処理される可能性があるため、呼び出し間で状態がリセットされ、追跡／カウント／集計には意味のない出力になります。安定したフレーム間結果を得るには、永続的な WebRTC セッションでローカルステップ実行を使用してください。

`soft` - 入力 `image` このブロックは、動画または繰り返しフレームのワークフローからの時間的コンテキストに依存します。静止画像／写真では、追跡、比較、集計、可視化に使える意味のある履歴がないため、このブロックの利点はほとんど、またはまったくありません。

### 入力と出力のバインディング

利用可能な接続は、そのバインディング種別によって異なります。どのバインディング種別が `バッファ` のバージョン `v1` あるか確認してください。

<details>

<summary>入力と出力のバインディング</summary>

* 入力
  * `データ` (*Union\[*[*`list_of_values`*](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md)*,* [*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)*,* [*`*`*](/workflows/ja/gaido/developer-guide/kinds/wildcard.md)*]*）：バッファに追加する任意の型の入力データ。画像、検出、値、その他のワークフロー出力でもかまいません。最新の値はバッファ配列の先頭に追加されます。バッファは最新の値のスライディングウィンドウを維持します。
* 出力
  * `出力` ([`list_of_values`](/workflows/ja/gaido/developer-guide/kinds/list-of-values.md))：任意の型の値のリスト。

</details>

<details>

<summary>JSON 定義の例</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/buffer@v1",
	    "data": "$steps.visualization",
	    "length": 5,
	    "pad": true
	}
```

</details>
