> 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/logic-and-branching/switch-case.md).

# ケース分岐

ワークフロー実行を、プログラミングの switch-case 文のように、入力値を一連の case 値と照合して複数のブランチのいずれかへ振り分けます。これにより、複数の Continue If ブロックを連結せずに、多方向分岐、値ベースのルーティング、意思決定ツリーを実現できます。

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

このブロックは単一の入力値を case マッピングのキーと比較し、最初に一致した case に関連付けられたステップへ実行を振り分けます。このブロックは次のことを行います：

1. を受け取り `値` 入力（通常はワークフロー入力またはステップ出力を参照するセレクタ。例：分類結果）を文字列に変換します
2. その文字列を `cases` マッピングで、各キーは case 値、各値はその case が一致したときに実行するステップです（例： `{"red": "$steps.on_red", "blue": "$steps.on_blue"}`)
3. If `case_insensitive` が有効な場合、比較では英字の大文字・小文字を区別しません
4. case が一致すると、その case のステップへ実行が継続し、他のすべての分岐は終了します
5. case が一致しない場合、実行は `default_next_steps`
6. に一覧表示されたステップへ継続します `default_next_steps` が空の場合、分岐は終了します

入力値は照合前に文字列へ変換されるため、文字列以外の値はその文字列表現と一致します： `True` はキー `"True"`, `1.0` に一致します `"1.0"` （ `"1"`ではなく）、欠落/None の値は `"None"`に一致します。各ターゲットステップは `cases` と `default_next_steps` - 複数の case 値を同じロジックに振り分けるには、各 case をそれぞれのステップに向けるか、上流で値を正規化します（例：Expression ブロックを使用）。

## 一般的な使用例

* **分類結果によるルーティング**: 画像を、分類モデルが予測した最上位クラスに基づいて異なる処理経路へ送ります（例：「damaged」→アラート分岐、「ok」→ログ分岐、その他すべて→デフォルトのレビュー分岐）
* **モードベースのパイプライン**: ワークフロー入力パラメータ（例： `$inputs.mode`）を使って、ワークフローを編集せずに実行時に代替処理分岐を選択します
* **多方向アラート**: 以前ワークフロー内で計算された重大度やカテゴリ値に応じて、異なる通知ブロック（メール、Slack、Webhook）へ振り分けます
* **連鎖条件の置き換え**: 同じ値を異なる定数と比較する Continue If ブロックの段を、1 つの読みやすいブロックにまとめます

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

このブロックはワークフローの実行フローを制御し、次のように接続できます:

* **分類または検出ブロックの後** 予測クラス、件数、その他の予測プロパティで分岐するために使用します（多くの場合、分岐対象の値を抽出する Property Definition ブロックまたは Expression ブロック経由）
* **ワークフロー入力の後** ランタイムパラメータから分岐を選択するために使用します
* **下流のブロックの前に** （モデル、通知、シンク）で、特定の case のときだけ実行すべきもの - 各 case のターゲットはそれぞれ独自の実行ブランチの先頭になります
* **デフォルト分岐を** 経由で `default_next_steps` 未一致の値を処理するため、または一致がない場合に単純に停止するために空のままにします

### 型識別子

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

### プロパティ

| **名前**             | **型**                          | **説明**                                                                                                                                                                         | 参照 |
| ------------------ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -- |
| `name`             | `str`                          | このステップの一意の識別子を入力してください。                                                                                                                                                        | ❌  |
| `値`                | `Union[bool, float, int, str]` | case キーと照合する値。通常はワークフロー入力またはステップ出力を参照するセレクタです（例：$inputs.mode または $steps.classifier.top）。値は比較前に文字列へ変換されるため、真偽値は 'True'/'False' キーと一致し、1.0 は '1.0' と一致し、None の値は 'None' と一致します.. | ✅  |
| `case_insensitive` | `bool`                         | 有効な場合、case 値は大文字・小文字を区別せずに照合されます（例：値 'RED' は case キー 'red' に一致します）..                                                                                                           | ❌  |

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

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

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

<details>

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

* 入力
  * `値` ([*`*`*](/workflows/ja/gaido/developer-guide/kinds/wildcard.md)): case キーと照合する値。通常はワークフロー入力またはステップ出力を参照するセレクタです（例：$inputs.mode または $steps.classifier.top）。値は比較前に文字列へ変換されるため、真偽値は 'True'/'False' キーと一致し、1.0 は '1.0' と一致し、None の値は 'None' と一致します..
  * `cases` (*step*): 一致したときに実行するステップへの case 値のマッピング。 `値` 一致したときに実行されるステップです。例：{"red": "$steps.on\_red", "blue": "$steps.on\_blue"}。各ターゲットステップは `cases` と `default_next_steps`..
  * `default_next_steps` (*step*): case が一致しない場合に実行するステップ。何も一致しないときは空のままにして分岐を終了します..
* 出力

</details>

<details>

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

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/switch_case@v1",
	    "value": "$steps.classifier.top",
	    "cases": {
	        "blue": "$steps.on_blue",
	        "red": "$steps.on_red"
	    },
	    "case_insensitive": false,
	    "default_next_steps": [
	        "$steps.fallback"
	    ]
	}
```

</details>
