> 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).

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

ワークフローをデプロイする方法は4つあります:

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

### どの विकल्पを使うべきですか?

| オプション                                                                                        | 最適な用途                                                                                                                                                                              |
| -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **HTTP API** (Roboflow ホスト型、またはセルフホストの `推論` サーバー)                                            | Python 以外の言語でアプリケーションを動かしたい場合、あるいは計算負荷の高い処理を専用サーバーにオフロードしたい場合に、ワークフローをスタンドアロンのサービスとして使います。                                                                                         |
| [**WebRTC ストリーミング**](/workflows/ja/depuroi/video-processing.md)                              | Serverless またはセルフホストの Inference Server 上のワークフローを通じて、動画ファイル、Webカメラ、カメラストリームを処理します。                                                                                                  |
| [**`inference-cli`**](https://docs.roboflow.com/reference/inference/inference-cli/workflows) | コマンドラインから、画像・ディレクトリ・動画ファイルをコードなしで処理します。                                                                                                                                            |
| [**バッチ処理**](https://docs.roboflow.com/deployment/roboflow-cloud/batch-processing)            | 保存済みの画像や動画に対する大規模な非同期ジョブを、あなた向けに用意されたインフラで実行します。                                                                                                                                   |
| **`推論` 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 でワークフローを実行する場合、次の 2 つの制限に注意する必要があります:

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

セルフホストおよび専用デプロイには、これらの制限はありません。
{% endhint %}

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

オンプレミスデプロイを選択すると、Inference をデプロイできるあらゆるシステム上でワークフローを実行できます。これには次が含まれます:

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

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

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

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

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

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

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

#### 画像を処理する

Roboflow API またはローカルの Inference サーバーを使って、単一画像でワークフローを実行できます。

まず、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, InferenceConfiguration

client = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",  # またはローカルデプロイ用に "http://127.0.0.1:9001"
    api_key="API_KEY"
).configure(InferenceConfiguration(api_key_transport="header"))

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' \
    --header 'Authorization: Bearer <YOUR-API-KEY>' \
    --data '{
    "inputs": {
        "image": {"type": "url", "value": "https://your-image-url"},
        "parameter": "some-value"
    }
}'
```

{% hint style="info" %}
キーを `?api_key=` クエリパラメータとして送信するか、 `api_key` ボディフィールドとして送る方法は旧方式です。まだ動作しますが、 `Authorization: Bearer` ヘッダーを使えば、キーが URL やログに残りません。 [REST API で認証する](https://docs.roboflow.com/reference/platform/rest-api/authenticate-with-the-rest-api).
{% endhint %}

この `inputs` オブジェクトのキーはワークフローによって決まるため、定義した入力内容に応じて名前が異なります。 `WorkflowImage` として宣言された入力は、 `type` と `value` キーを持つオブジェクトを受け取ります。HTTP 経由でサポートされる `type` 値は `url` と `base64`.

上記の例では、Roboflow プラットフォームに保存されたワークフローを実行しています。リクエストと一緒に完全なワークフロー定義を送ることもでき、API キーで保護されたブロックを使わずにゼロから作成したワークフローに便利です。 [Inference SDK](https://docs.roboflow.com/reference/inference/inference-sdk/workflows) の `仕様` 引数を参照してください。

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

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

WebRTC 依存関係込みで SDK をインストールします:

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

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

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

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

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 のバッチ処理サービスを使えば、画像や動画ファイルのディレクトリといったデータ全体のバッチを効率的に処理できます。このフルマネージドなソリューションでは、コーディングやローカル計算は不要です。データとワークフローを選ぶだけで、あとは Roboflow に任せられます。

バッチ処理では 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` コードなしで、単一画像、画像ディレクトリ、または動画ファイルに対してワークフローを実行できます:

```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).
* ワークフローが返す結果の形を理解します: [ワークフローの実行](/workflows/ja/gaido/developer-guide/workflow-execution.md#output-construction).
