> 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/advanced-blocks/cache-get.md).

# キャッシュ取得

画像の動画識別子を名前空間として使用し、キーによってメモリ内キャッシュから以前に保存された値を取得します。これにより、ワークフローステップ間でのデータ共有、中間結果のキャッシュ、同一のワークフロー実行コンテキスト内での重複計算の回避が可能になります。

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

このブロックは、Cache Set ブロックを使用して以前に保存されたメモリ内キャッシュから値を取得します。このブロックは次の処理を行います:

1. 画像とキャッシュキーを受け取ります:
   * キャッシュ名前空間を決定するための入力画像を受け取ります
   * どの値を取得するかを識別するキャッシュキー（文字列）を受け取ります
2. キャッシュ名前空間を決定します:
   * 画像の動画メタデータから動画識別子を抽出します
   * 動画識別子をキャッシュ名前空間として使用します（動画/ストリームごとにキャッシュエントリを分離します）
   * 動画識別子がない場合は「default」名前空間にフォールバックします
3. キャッシュされた値を検索します:
   * 決定された名前空間のメモリ内キャッシュ辞書にアクセスします
   * キャッシュ内で指定されたキーを検索します
   * 見つかった場合はキャッシュされた値を返し、キーが存在しない場合は False を返します
4. 取得した値を返します:
   * キャッシュされた値を出力します（文字列、数値、リスト、検出結果など、任意のデータ型を指定できます）
   * キャッシュ内でキーが見つからない場合は False を返します
   * 出力タイプは、Cache Set で元々保存されたものに一致します

キャッシュは動画識別子で名前空間化されているため、異なる動画やストリームは別々のキャッシュ保存領域を持ちます。これにより、複数の動画を処理するワークフローで、動画ごとに独立したキャッシュを維持できます。キャッシュはメモリに保存され、ワークフロー実行が完了したとき、またはブロックが破棄されたときにクリアされます。Cache Get は Cache Set と組み合わせて使用する必要があります。値は Cache Set で保存され、同じキーと名前空間（同じ動画識別子で決定される）を使用して Cache Get で取得されます。

## 一般的な使用例

* **ステップ間の共有状態**: ワークフローステップの一つで中間結果を保存し、別のステップでそれを取得します（例: 後続の分析のために検出結果を保存する、フィルタリングのために分類予測をキャッシュする、ブロック間でメタデータを共有する）。これにより、状態共有ワークフローが可能になります
* **冗長な計算の回避**: 高コストな計算結果をキャッシュし、複数のワークフーステップで再利用します（例: モデル予測をキャッシュする、処理済み画像を保存する、変換結果を再利用する）。これにより、計算キャッシュワークフローが可能になります
* **動画フレームのコンテキスト**: フレーム固有データを保存することで、動画フレームをまたいでコンテキストを維持します（例: 以前のフレームの検出結果をキャッシュする、フレーム系列のメタデータを保存する、トラッキング状態を維持する）。これにより、フレームコンテキストワークフローが可能になります
* **条件付きワークフローのロジック**: 後続ステップでのワークフロー実行を制御する判断結果やフラグを保存します（例: フィルタリングの判断をキャッシュする、検証結果を保存する、ワークフロー状態を維持する）。これにより、条件付き実行ワークフローが可能になります
* **データ集約**: 値をキャッシュに保存し、それを取得・更新することで、ワークフローステップをまたいでデータを集約します（例: 検出数を集計する、統計を蓄積する、結果コレクションを構築する）。これにより、データ集約ワークフローが可能になります
* **一時ストレージ**: ワークフローグラフを通さずに複数のワークフローステップからアクセスする必要がある値の一時保存としてキャッシュを使用します（例: ステップ間データを保存する、一時状態を維持する、非線形ワークフローデータを共有する）。これにより、一時ストレージワークフローが可能になります

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

このブロックはキャッシュされた値を取得し、ワークフロー全体で使用できます:

* **Cache Set ブロックの後で** 以前に保存された値を取得します（例: 保存された検出結果を取得する、キャッシュされた予測を取得する、保存されたメタデータにアクセスする）。これにより、キャッシュ取得ワークフローが可能になります
* **ワークフローブランチ内で** 並列または条件付きの実行経路から共有キャッシュ値にアクセスします（例: 共有状態を取得する、キャッシュされた結果にアクセスする、共通データを取得する）。これにより、ブランチ調整ワークフローが可能になります
* **キャッシュデータを必要とするブロックの前で** キャッシュされた値を入力として提供します（例: キャッシュされた検出結果を分析に渡す、キャッシュされた予測をフィルタリングに使う、キャッシュされたメタデータを処理に渡す）。これにより、キャッシュ入力ワークフローが可能になります
* **条件付きロジックのワークフロー内で** Cache Set によって保存されたフラグや判断結果を取得します（例: キャッシュされた検証結果を取得する、判断フラグを取得する、条件状態にアクセスする）。これにより、条件ロジックワークフローが可能になります
* **動画処理ワークフローで** フレーム固有または動画固有のキャッシュ名前空間を維持します（例: フレームコンテキストを取得する、動画固有のキャッシュにアクセスする、ストリーム固有のデータを取得する）。これにより、動画コンテキストワークフローが可能になります
* **出力または sink ブロックの前で** 最終結果にキャッシュデータを含めます（例: キャッシュされた集計を含める、キャッシュされた統計を出力する、キャッシュされた結果を返す）。これにより、出力ワークフローが可能になります

## 要件

このブロックは、保存された値を検索するために、入力画像（動画識別子を介してキャッシュ名前空間を決定するために使用）とキャッシュキー（文字列）を必要とします。このブロックは LOCAL 実行モードでのみ動作します。他の実行モードで使用すると NotImplementedError を発生させます。値は、同じキーと名前空間（同じ動画識別子）を使用して Cache Set ブロックで以前に保存されている必要があります。キャッシュはメモリに保存され、ワークフロー実行が完了すると自動的にクリアされます。キャッシュは動画識別子で名前空間化されているため、異なる動画ごとに別々のキャッシュ保存領域があります。キーがキャッシュ内に見つからない場合、このブロックは False を返します。キャッシュされた値は、元々保存された内容に応じて、任意のデータ型（文字列、数値、リスト、検出結果、画像など）を指定できます。

### 型識別子

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

### プロパティ

| **名前** | **型** | **説明**                                                                                                                                                                                                                                               | 参照 |
| ------ | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name` | `str` | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                              | ❌  |
| `キー`   | `str` | キャッシュからどの値を取得するかを識別するキャッシュキー（文字列）。キーは、Cache Set ブロックで値を保存したときに使用したキーと一致している必要があります。キーがキャッシュ内に存在しない場合、このブロックは False を返します。キーは大文字小文字を区別し、完全一致である必要があります。異なるキャッシュ値を識別するには、説明的なキーを使用してください（例: 'detections'、'classification\_result'、'frame\_metadata'）.. | ✅  |

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

### ランタイム互換性

`ハード` - 実行 `リモート` : キャッシュブロックは LOCAL ワークフローステップ実行のみをサポートします。リモートステップ実行では NotImplementedError が発生します。

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

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

<details>

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

* 入力
  * `image` ([*`image`*](/workflows/ja/gaido/developer-guide/kinds/image.md)): キャッシュ名前空間を決定するために使用される入力画像。ブロックは画像の動画メタデータから動画識別子を抽出し、それをキャッシュ名前空間として使用します。動画識別子が存在しない場合、ブロックは名前空間として 'default' を使用します。名前空間はキャッシュエントリを分離し、異なる動画やストリームが別々のキャッシュ保存領域を持つようにします。同じキャッシュ名前空間にアクセスするには、Cache Set ブロックと Cache Get ブロックの両方で同じ画像（同じ動画識別子を持つ）を使用してください..
  * `キー` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)): キャッシュからどの値を取得するかを識別するキャッシュキー（文字列）。キーは、Cache Set ブロックで値を保存したときに使用したキーと一致している必要があります。キーがキャッシュ内に存在しない場合、このブロックは False を返します。キーは大文字小文字を区別し、完全一致である必要があります。異なるキャッシュ値を識別するには、説明的なキーを使用してください（例: 'detections'、'classification\_result'、'frame\_metadata'）..
* 出力
  * `出力` ([`*`](/workflows/ja/gaido/developer-guide/kinds/wildcard.md))：任意の要素に相当します。

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/cache_get@v1",
	    "image": "$inputs.image",
	    "key": "my_cache_key"
	}
```

</details>
