> 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/data-storage/local-file-sink.md).

# ローカルファイルシンク

ワークフローのデータをローカルファイルシステム上のファイルとして保存します。CSV、JSON、テキストファイル形式をサポートし、複数のエントリを単一ファイルに集約するか、各エントリを個別に保存するかを設定可能な出力モードで選べるため、永続的なデータ保存、ログ記録、ファイルベースのデータエクスポートが可能です。

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

このブロックは、ワークフローのステップからの文字列コンテンツをローカルファイルシステム上のファイルに書き込みます。このブロックは次のことを行います。

1. 文字列コンテンツ（フォーマッタ、予測、またはその他の文字列を生成するブロックから）とファイル設定を入力として受け取ります
2. ファイルシステムへのアクセス権限を検証します（環境設定に基づいてローカルストレージへのアクセスが許可されているかを確認します）
3. 対象ディレクトリの書き込み権限を確認します（設定されている場合は、許可された書き込みディレクトリの制限に照らして確認します）
4. に基づいて適切なファイル保存戦略を選択します `出力モード`:
   * **個別ファイルモード**：各入力ごとに新しいファイルを作成し、タイムスタンプ付きの一意なファイル名を生成します
   * **追記ログモード**：既存のファイルにコンテンツを追加する（必要に応じて新しいファイルを作成する）ことで、複数のエントリを集約します
5. 次の場合は **個別ファイルモード**：対象ディレクトリ、ファイル名プレフィックス、ファイルタイプ、タイムスタンプを使用して一意のファイルパスを生成し、その後コンテンツを新しいファイルに書き込みます
6. 次の場合は **追記ログモード**:
   * ファイル名プレフィックスとタイプに基づいてファイルを開くか、作成します
   * 追記時には形式固有の処理を適用します:
     * **CSV**: 2回目以降の追記ではヘッダー行を削除します（CSVコンテンツは最初の書き込みでヘッダーを含める必要があります）
     * **JSON**: JSONL（JSON Lines）形式に変換し、各JSONドキュメントを解析して再シリアライズし、1行に収まるようにします
     * **TXT**: 改行を付けてコンテンツを直接追記します
   * エントリ数を追跡し、次の場合に新しいファイルを作成します `max_entries_per_file` 上限に達したとき
7. 存在しない場合は親ディレクトリを作成します
8. コンテンツをファイルに書き込みます（改行で終端されることを保証します）
9. 保存の成功または失敗を示すエラー状態とメッセージを返します

このブロックは、2つの異なるストレージ戦略をサポートしています。separate\_filesモードでは、各入力に対して個別のタイムスタンプ付きファイルを作成します（実行ごとに出力を整理するのに便利です）。一方、append logモードでは、複数のエントリを連続したログファイルに集約します（時系列データのログ記録に便利です）。ファイルパスの生成にはタイムスタンプ（形式： `YYYY_MM_DD_HH_MM_SS_microseconds`）が含まれ、ファイル名の一意性と時系列的な整理を確保します。append logモードでは、ブロックは実行をまたいでファイルハンドルを保持し、エントリ上限に達すると自動的にファイルローテーションを処理します。

## 要件

**ローカルファイルシステムアクセス**：このブロックはローカルファイルシステムへの書き込みアクセスを必要とします。ファイルシステムへのアクセスは環境変数で制御できます。

* Set `ALLOW_WORKFLOW_BLOCKS_ACCESSING_LOCAL_STORAGE=False` を設定するとローカルファイルシンク機能を無効にします（ブロックはエラーを発生させます）
* Set `WORKFLOW_BLOCKS_WRITE_DIRECTORY` を絶対パスに設定すると、特定のディレクトリとそのサブディレクトリのみに書き込みを制限できます

**append logモードのフォーマット処理に関する注意**:

* CSVファイルをappendモードで保存する場合、最初の書き込みにはヘッダー行を含める必要があります。ヘッダーはその後の追加時には自動的に削除されます
* JSONファイルをappendモードで保存する場合、ファイルは `.jsonl` 拡張子のJSON Lines形式（1行につき1つのJSONオブジェクト）で保存されます

## 一般的な使用例

* **データのログ記録と監査証跡**：ワークフローの実行データ、検出結果、またはメトリクスをローカルのログファイルに保存します（例：検出結果のCSVログを追加保存、ワークフロー出力のJSONログを保存）。これにより、本番ワークフローの永続的なログ記録と監査証跡を実現します
* **ファイルベースのデータエクスポート**：整形済みのワークフローデータを外部処理用のファイルにエクスポートします（例：CSV FormatterからCSVを出力、下流ツール向けにJSONを出力）。これにより、ファイルベースのデータ処理パイプラインとの統合が可能になります
* **時系列データ収集**：ワークフローメトリクスを時間経過とともに連続したログファイルに集約します（例：タイムスタンプ付きCSV行を追加、フレームごとの検出数を記録）。これにより、分析やレポート用の永続的な時系列データセットを作成します
* **バッチ結果の保存**：バッチ処理ワークフローの個々の結果を個別ファイルに保存します（例：各画像の検出結果を別々のJSONファイルに保存）。これにより、一意のファイル名でバッチ処理結果を整理して保存できます
* **データのアーカイブ**：ワークフローの出力と結果をローカルストレージにアーカイブします（例：整形済みレポートの保存、分析結果のエクスポート）。これにより、長期保存とバックアップのワークフローが可能になります
* **ファイルベースシステムとの統合**：ワークフローデータを外部ツールと互換性のあるファイル形式で保存します（例：スプレッドシート分析用にCSVを保存、データ処理パイプライン用にJSONLを保存）。これにより、ファイルベースシステムとのシームレスなデータ交換が可能になります

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

このブロックは、ワークフローのステップから文字列コンテンツを受け取り、ファイルに保存します：

* **フォーマッターブロックの後** （例：CSV Formatter）で整形されたデータ（CSV、JSON、またはテキスト）をファイルに保存し、構造化されたワークフロー出力の永続的保存を可能にします
* **検出または解析ブロックの後** 推論結果、メトリクス、または分析出力をログ記録やアーカイブのためにファイルに保存する、文字列形式のデータを出力するもの
* **データ処理ブロックの後** （例：Expression、Property Definition）で、計算または変換されたデータをファイルに保存する文字列出力を生成するもの
* **ログ記録のワークフローでは** ワークフロー実行の永続的な監査証跡とログを作成し、本番環境のデプロイにおける記録管理とデバッグを可能にします
* **バッチ処理ワークフローでは** 複数のデータポイントを保存する必要がある場合（ログファイルに集約する場合も、個別ファイルとして保存する場合も含む）に、整理されたデータ収集と保存を可能にします
* **外部処理の前に** ワークフローデータを、ファイルシステムストレージから読み取る外部ツール、スクリプト、またはシステムで利用するためにファイルに保存する必要がある場合

### 型識別子

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

### プロパティ

| **名前**                 | **型** | **説明**                                                                                                                                                                                                                                                  | 参照 |
| ---------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `name`                 | `str` | このステップの一意の識別子を入力してください。                                                                                                                                                                                                                                 | ❌  |
| `ファイルタイプ`              | `str` | 作成するファイルの種類：'csv'（CSV形式）、'json'（JSON形式、またはappend\_logモードではJSONL）、または'txt'（プレーンテキスト）。コンテンツ形式はこのファイルタイプに一致している必要があります。append\_logモードでは、JSONファイルは1行につき1つのJSONオブジェクトを含む.jsonl（JSON Lines）形式で保存されます。                                                         | ❌  |
| `出力モード`                | `str` | ファイル整理戦略：'append\_log'は複数のコンテンツエントリを1つのファイルに集約します（時系列ログに便利で、時間とともに増大するファイルを作成します）。一方、'separate\_files'は入力ごとに新しいファイルを作成します（個別の出力を整理するのに便利で、各ファイルは一意のタイムスタンプベースのファイル名を持ちます）。append\_logモードでは、ブロックは形式固有の追加処理を行います（CSVヘッダーを削除し、JSONをJSONLに変換します）。           | ❌  |
| `target_directory`     | `str` | ファイルを保存するディレクトリパス。相対パスまたは絶対パスを指定できます。存在しない場合は親ディレクトリが自動的に作成されます。WORKFLOW\_BLOCKS\_WRITE\_DIRECTORYが設定されている場合、このパスは許可されたディレクトリのサブディレクトリでなければなりません。ファイルはfile\_name\_prefixとタイムスタンプから生成されたファイル名で保存されます。                                                    | ✅  |
| `ファイル名プレフィックス`         | `str` | ファイル名の生成に使用するプレフィックス。タイムスタンプ（形式：YYYY\_MM\_DD\_HH\_MM\_SS\_microseconds）とファイル拡張子と組み合わせて、'workflow\_output\_2024\_10\_18\_14\_09\_57\_622297.csv'のような一意のファイル名を作成します。append\_logモードでは、max\_entries\_per\_fileに達すると、このプレフィックスに新しいタイムスタンプを付けて新しいファイルが作成されます。 | ✅  |
| `max_entries_per_file` | `整数`  | append\_logモードで1ファイルあたりに許可される最大エントリ数（コンテンツ追加数）。この上限に達すると、同じfile\_name\_prefixと新しいタイムスタンプを使って新しいファイルが作成されます。output\_modeが'append\_log'のときのみ適用されます。少なくとも1である必要があります。ファイルサイズの制御や長時間実行ワークフローのファイルローテーションに使用します。                                             | ✅  |

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

### ランタイム互換性

`soft` - ランタイム `dedicated_deployment` ：ファイルはデプロイメントのボリュームに保持されますが、Roboflow API経由では取得できません。内部専用のログとして扱ってください。

`soft` - ランタイム `hosted_serverless` ：コンテナのディスクは一時的なものなので、ワーカーのスケールダウン時にファイルは失われます。ワークフローリクエストを処理するレプリカが複数ある場合、結果は非決定的になります。

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

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

<details>

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

* 入力
  * `コンテンツ` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)）：ファイルとして保存する文字列コンテンツ。これは他のワークフローブロックからの整形済みデータ（例：CSV FormatterからのCSVコンテンツ、JSON文字列、またはプレーンテキスト）である必要があります。コンテンツ形式は指定されたfile\_typeと一致している必要があります。CSVファイルをappend\_logモードで保存する場合、最初の書き込みにはヘッダー行を含める必要があります。
  * `target_directory` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)）：ファイルを保存するディレクトリパス。相対パスまたは絶対パスを指定できます。存在しない場合は親ディレクトリが自動的に作成されます。WORKFLOW\_BLOCKS\_WRITE\_DIRECTORYが設定されている場合、このパスは許可されたディレクトリのサブディレクトリでなければなりません。ファイルはfile\_name\_prefixとタイムスタンプから生成されたファイル名で保存されます。
  * `ファイル名プレフィックス` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)）：ファイル名の生成に使用するプレフィックス。タイムスタンプ（形式：YYYY\_MM\_DD\_HH\_MM\_SS\_microseconds）とファイル拡張子と組み合わせて、'workflow\_output\_2024\_10\_18\_14\_09\_57\_622297.csv'のような一意のファイル名を作成します。append\_logモードでは、max\_entries\_per\_fileに達すると、このプレフィックスに新しいタイムスタンプを付けて新しいファイルが作成されます。
  * `max_entries_per_file` ([*`string`*](/workflows/ja/gaido/developer-guide/kinds/string.md)）：append\_logモードで1ファイルあたりに許可される最大エントリ数（コンテンツ追加数）。この上限に達すると、同じfile\_name\_prefixと新しいタイムスタンプを使って新しいファイルが作成されます。output\_modeが'append\_log'のときのみ適用されます。少なくとも1である必要があります。ファイルサイズの制御や長時間実行ワークフローのファイルローテーションに使用します。
* 出力
  * `error_status` ([`boolean`](/workflows/ja/gaido/developer-guide/kinds/boolean.md)) : ブールフラグ。
  * `message` ([`string`](/workflows/ja/gaido/developer-guide/kinds/string.md)) : 文字列値。

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/local_file_sink@v1",
	    "content": "$steps.csv_formatter.csv_content",
	    "file_type": "csv",
	    "output_mode": "append_log",
	    "target_directory": "some/location",
	    "file_name_prefix": "my_file",
	    "max_entries_per_file": 1024
	}
```

</details>
