> 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/depuroi/deploy-a-workflow.md).

# ワークフローをデプロイ

Workflow は 4 つの方法でデプロイできます:

1. 画像を送信する [Roboflow API](#process-images) Workflow を使って処理するために。
2. 〜を作成する [Roboflow Dedicated Deployment](https://docs.roboflow.com/deployment/roboflow-cloud/dedicated-deployments) あなた専用に用意されたインフラ上で。
3. 自分のハードウェア上で Workflow を実行するには [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted).
4. 使用する [バッチ処理](https://docs.roboflow.com/deployment/roboflow-cloud/batch-processing) 大量のデータを、コーディングコストを抑えながら効率的に処理するために。

### どのオプションを使えばよいですか？

| オプション                                                                                        | 最適用途                                                                                                                                                                                   |
| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **HTTP API** (Roboflow ホスト型、またはセルフホストの `inference` サーバー)                                     | Workflows を独立したサービスとして使う場合、アプリケーションを Python 以外の言語で保ちたい場合、または計算負荷の高い処理を専用サーバーへオフロードする場合。                                                                                                |
| [**WebRTC ストリーミング**](/workflows/ja/depuroi/video-processing.md)                              | Serverless またはセルフホストの Inference Server 上の Workflow で、動画ファイル、Web カメラ、カメラストリームを処理します。                                                                                                    |
| [**`inference-cli`**](https://docs.roboflow.com/reference/inference/inference-cli/workflows) | コマンドラインから、コードなしで画像、ディレクトリ、または動画ファイルを処理します。                                                                                                                                             |
| [**バッチ処理**](https://docs.roboflow.com/deployment/roboflow-cloud/batch-processing)            | 保存済みの画像や動画に対する大規模な非同期ジョブを、あなたのために用意されたインフラで実行します。                                                                                                                                      |
| **`inference` Pythonパッケージ**                                                                  | Execution Engine を Python アプリケーション内で直接実行し、完全に制御しつつ HTTP を挟みません。詳細は [Execution Engine](/workflows/ja/gaido/developer-guide/execution-engine.md#running-the-execution-engine-in-python). |

{% hint style="warning" %}
Roboflow ホスト型 API で Workflow を実行する場合、考慮すべき制限が 2 つあります:

* Workflow の実行時間は 20 秒に制限されています。
* レスポンスのペイロードは 6 MB に制限されているため、可視化ブロックが多い Workflow や入力画像が大きい Workflow では失敗することがあります。

セルフホストおよび Dedicated Deployment にはこれらの制限はありません。
{% endhint %}

自分のハードウェアで Workflow を実行する場合、画像ファイルと動画ファイルの両方で実行できます（通常の **Web カメラ** および業務用の **CCTV カメラ**).

オンプレミス展開を選択すると、Inference を展開できるあらゆるシステムで Workflows を実行できます。これには以下が含まれます:

* NVIDIA Jetson
* AWS EC2、GCP Cloud Engine、および Azure Virtual Machines
* Raspberry Pi

{% hint style="info" %}
Roboflow Enterprise のお客様は、Basler カメラ上での推論実行など、追加の動画ストリームオプションにアクセスできます。提供内容の詳細については、 [Roboflowの営業チームにお問い合わせください](https://roboflow.com/sales).
{% endhint %}

### Workflowをデプロイする

Workflow をデプロイするには、Workflows エディタの左上にある「Deploy」ボタンをクリックしてください。すべてのデプロイ方法はこのページに記載されています。

Workflows エディタ内のコードスニペットには、Workflows の URL と API キーがあらかじめ入力されます。

スニペットは、エディタが動作しているランタイムに一致します。エディタをローカル Inference サーバーまたは [Dedicated Deployment](https://docs.roboflow.com/deployment/roboflow-cloud/dedicated-deployments)、 `api_url` 各スニペット内の URL はそのサーバーを指し、対応するタブは推奨として表示されます。保存済みの Workflow プレビューに例の画像がある場合、スニペットにはその画像も入力されます。

{% hint style="info" %}
Workflows の使用制限の詳細については、 [Roboflow の料金ページ](https://roboflow.com/workflows).
{% endhint %}

#### 画像を処理する

Roboflow API またはローカル Inference サーバーを使用して、単一画像で Workflow を実行できます。

まず、Roboflow Inference SDK をインストールします:

```bash
pip install inference-sdk inference-cli
```

ローカルで実行する場合は、 [公式の Docker インストール手順に従って](https://docs.docker.com/get-docker/) お使いのマシンに Docker をインストールし、Inference サーバーを起動してください:

```
inference server start
```

次に、新しい Python ファイルを作成し、次のコードを追加します:

```python
from inference_sdk import InferenceHTTPClient

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",  # またはローカル展開用に "http://127.0.0.1:9001"
    api_key="API_KEY"
)

result = client.run_workflow(
    workspace_name="workspace-name",
    workflow_id="workflow-id",
    images={
        "image": "YOUR_IMAGE.jpg"
    }
)

```

上記では、 `API_KEY` を Roboflow API キーに置き換えてください。 `workspace-name` と `workflow-id` を Roboflow のワークスペース名と Workflow ID に置き換えてください。

これらの値を見つけるには、Roboflow Workflow を開いて「Deploy Workflow」をクリックします。次に、ページに表示されるコードスニペットからワークスペース名と workflow ID をコピーしてください。

ローカル実行は CPU および NVIDIA CUDA GPU デバイスで動作します。最高のパフォーマンスを得るには、NVIDIA Jetson や NVIDIA GPU を搭載したクラウドサーバーなど、GPU 対応デバイスにデプロイしてください。

エンドポイントを直接呼び出したい場合は、どの言語からでも HTTP リクエストを送信できます:

```bash
curl --location 'https://serverless.roboflow.com/infer/workflows/<your-workspace-name>/<your-workflow-id>' \
    --header 'Content-Type: application/json' \
    --data '{
    "api_key": "<YOUR-API-KEY>",
    "inputs": {
        "image": {"type": "url", "value": "https://your-image-url"},
        "parameter": "some-value"
    }
}'
```

のキーは `inputs` オブジェクトのキーは Workflow によって決まるため、名前は定義した入力によって異なります。として宣言された入力は `WorkflowImage` オブジェクトを受け取ります。 `type` と `値` キーを持ちます。HTTP ではサポートされる `type` 値は次のとおりです `url` と `base64`.

上の例では、Roboflow プラットフォームに保存された Workflow を実行しています。リクエストに完全な Workflow 定義を含めて送ることもでき、API キーで制御されるブロックを使わない、ゼロから作成した Workflow に役立ちます。詳細は [Inference SDK](https://docs.roboflow.com/reference/inference/inference-sdk/workflows) 〜については `仕様` 引数。

#### 動画ストリームを処理する

Inference SDK の WebRTC クライアントを使用して、Web カメラ、RTSP ストリーム、または動画ファイル上で Workflow を実行します。同じコードは Serverless とセルフホストの Inference Server の両方で動作します。

WebRTC 依存関係を含めて SDK をインストールします:

```
pip install "inference-sdk[webrtc]"
```

セルフホストの Inference Server を起動するか、 `https://serverless.roboflow.com` を使ってサーバーを起動せずに実行します。次に、Python ファイルを作成します:

```python
from inference_sdk import InferenceHTTPClient
from inference_sdk.webrtc import StreamConfig, WebcamSource

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",  # または "http://localhost:9001"
    api_key="API_KEY",
)

session = client.webrtc.stream(
    source=WebcamSource(),
    workflow="workflow-id",
    workspace="workspace-name",
    config=StreamConfig(data_output=["predictions"]),
)

@session.on_data("predictions")
def handle_predictions(predictions, metadata):
    print(predictions)

session.run()
```

上記では、 `API_KEY` を Roboflow API キーに置き換えてください。 `workspace-name` と `workflow-id` を Roboflow のワークスペース名と Workflow ID に置き換えてください。

これらの値を見つけるには、Roboflow Workflow を開いて「Deploy Workflow」をクリックします。次に、ページに表示されるコードスニペットからワークスペース名と workflow ID をコピーしてください。

変更する `WebcamSource()` 動画がローカルの Web カメラから取得されない場合は、別のソースに変更します。詳細は [Workflows による動画処理](/workflows/ja/depuroi/video-processing.md) RTSP ストリーム、動画ファイル、および出力動画について。

#### データのバッチを処理する

Roboflow Batch Processing サービスを使用して、画像や動画ファイルのディレクトリなど、データのバッチ全体を効率的に処理できます。このフルマネージドなソリューションでは、コーディングもローカル計算も不要です。データと Workflow を選ぶだけで、あとは Roboflow に任せられます。

Batch Processing とのやり取りは、UI、CLI、REST API のいずれもサポートしています。以下では CLI コマンドを紹介します。 [すべてのオプション](https://docs.roboflow.com/deployment/roboflow-cloud/batch-processing#cli).

処理を実行するには、Inference CLI をインストールします:

```
pip install inference-cli
```

次に、データを取り込みます:

```
inference rf-cloud data-staging create-batch-of-images \
    --images-dir <your-images-dir-path> \
    --batch-id <your-batch-id>
```

データが読み込まれたら、処理ジョブを開始します:

```
inference rf-cloud batch-processing process-images-with-workflow \
    --workflow-id <workflow-id> \
    --batch-id <batch-id>
```

ジョブの進捗は次のコマンドで表示できます:

```
inference rf-cloud batch-processing show-job-details \
    --job-id <your-job-id>  # ジョブを作成すると job-id が表示されます
```

ジョブが完了したら、結果をエクスポートします:

```
inference rf-cloud data-staging export-batch \
    --target-dir <dir-to-export-result> \
    --batch-id <output-batch-of-a-job>
```

#### CLI でローカルディレクトリを処理する

すでに実行中のマシン上にあるデータについては、 `inference-cli` コードなしで、個々の画像、画像ディレクトリ、または動画ファイルに対して Workflow を実行できます:

```bash
pip install inference-cli
```

```bash
inference workflows process-images-directory \
    -i {your_input_directory} \
    -o {your_output_directory} \
    --workspace_name {your-roboflow-workspace-url} \
    --workflow_id {your-workflow-id} \
    --api-key {your_roboflow_api_key}
```

出力ディレクトリには、入力ファイルごとに 1 つのサブディレクトリが作成され、それぞれに `results.json` そのファイルの Workflow 結果と実行中に生成された画像を含むファイル、および `aggregated_results.csv` すべての入力の結果を結合したファイルが入ります。

〜をご覧ください。 [Inference CLI リファレンス](https://docs.roboflow.com/reference/inference/inference-cli/workflows) すべてのオプションについて。

## 次のステップ

* Execution Engine を自分の Python アプリケーション内で直接実行します: 〜をご覧ください。 [開発者ガイド](/workflows/ja/gaido/developer-guide.md).
* Workflow が返す結果の形式を理解します: 〜をご覧ください。 [ワークフロー実行](/workflows/ja/gaido/developer-guide/workflow-execution.md#output-construction).
