> 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/reference/ja/purattofmu/choosing-the-right-tool.md).

# 適切なツールの選び方

Roboflow は、同じ基盤プラットフォームを 3 つの開発者向けツールとして提供しています。これらは相互排他的ではなく、実運用のワークフローの多くは 3 つすべてを使います。このページは簡単な選択ガイドです。

## ひと目でわかる比較

|            | CLI                                         | Python SDK                                       | REST API                       |
| ---------- | ------------------------------------------- | ------------------------------------------------ | ------------------------------ |
| **最適な用途**  | その場限りのスクリプト、AI エージェント、シェル自動化                | ノートブック、スケジュール実行ジョブ、Python アプリケーション               | Python 以外のサービス、Webhook、エッジデバイス |
| **認証**     | `ROBOFLOW_API_KEY` 環境変数または `roboflow login` | API キーを渡す `Roboflow(...)` または `ROBOFLOW_API_KEY` | `api_key=` クエリパラメータまたはボディフィールド |
| **出力**     | デフォルトでは見やすい表形式、 `--json` スクリプト向け            | Python の dict とオブジェクト                            | JSON                           |
| **インストール** | `pip install roboflow`                      | `pip install roboflow`                           | None                           |
| **対応範囲**   | SDK と整合しており、エージェントに扱いやすい                    | REST と同等で、さらに便利なヘルパー付き                           | 正本 - すべての機能はここで最初に提供されます       |
| **エラー**    | 終了コード (0 / 1 / 2 / 3) + stderr の JSON エラー本文 | Python の例外                                       | HTTP ステータスコード + JSON エラー本文     |

## CLI を使うべき場面

CLI は、何かをしたいときに使います **1 回だけ実行する場合や、シェルのパイプラインの一工程として使う場合です**。出力形式と終了コードは、スクリプトや AI エージェント向けに設計されています。

具体的には:

* Python を書かずに素早く結果を確認しながら試作したいとき。
* Roboflow の操作結果を他のツールにパイプしたいとき（`roboflow project list --json | jq …`).
* AI コーディングエージェント（Claude Code、Cursor）を使っているとき - CLI の構造化された JSON 出力と安定した終了コードのほうが、Python REPL よりもエージェントに取り込みやすいです。
* あなたが書いているのが `Makefile`、GitHub Action、または画像をアップロードし、学習を開始し、あるいはデータセットをダウンロードするシェルスクリプト。

参照 [CLI](/reference/ja/purattofmu/cli.md).

## Python SDK を使うべき場面

すでに Python を使っていて、以下を求めるなら SDK を使ってください **型付きオブジェクト、慣用的なヘルパー、呼び出し間で維持される状態**。SDK は REST API を薄くラップしたものですが、次の機能を追加します。

* `ワークスペース` / `プロジェクト` / `バージョン` / `モデル` メソッドを見つけやすいオブジェクト。
* 並列アップロード（`upload_dataset(num_workers=10)`).
* 予測の可視化ヘルパー（完全版の `roboflow` パッケージがインストールされている場合 - ただし `roboflow-slim`).
* 推論とアップロードを組み合わせたアクティブラーニングのループ。
* vision-events の取り込みへ直接アクセス。

具体的には:

* Jupyter ノートブックでデータセットを反復調整しているとき。
* アップロード、学習、推論の実行をオンデマンドで行う Python サービスを構築しているとき。
* 操作を連鎖させる必要があるとき（upload → train → wait for ready → predict）。
* 既存の Python アプリに Roboflow を統合しているとき。

参照 [Python SDK](/reference/ja/purattofmu/python-sdk.md).

## REST API を使うべき場面

REST API を使うのは次の場合です **Python を使っていないとき**、Python パッケージをインストールできない環境（ブラウザ、Cloudflare Worker、組み込みデバイス、極小の zipfile を使う Lambda など）から呼び出す必要があるとき、または Webhook から Roboflow を利用したいとき。

具体的には:

* JavaScript / TypeScript / Go / Rust のクライアントを構築しているとき。
* 独自ファームウェアで動く Web カメラやセンサーからイベントを送信しているとき。
* Zapier / n8n / ノーコード自動化ツールと統合する必要があるとき。
* 特定の機能が SDK に入る前に REST API で先に提供されるとき。

参照 [REST API](/reference/ja/purattofmu/rest-api.md).

## ツールの使い分け

実際には、チームは 3 つすべてを使います:

* **CI/CD** CLI を使ってデータセットをアップロードし、学習を開始します。
* **Python のデータパイプライン** SDK を使って学習結果に応答し、モデルバージョンを調整します。
* **本番アプリ** REST API を使って推論を実行し、イベントを送信します。

同じワークスペースと API キーで 3 つすべてに認証できるため、認証情報が増えません。

## 推論は特別

画像や動画で学習済みモデルを実行する場合は、この 3 つ以外にも追加の選択肢があります。ホスト型推論は次を対象に実行されます。 [Roboflow Serverless Hosted API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api) at `serverless.roboflow.com`。より高スループットな用途やオンプレミス用途については次を参照してください。 [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) （自己ホスト型）と [専用デプロイメント](https://docs.roboflow.com/deployment/roboflow-cloud/dedicated-deployments) （管理された GPU マシン）。

CLI の `infer` コマンド、SDK の `model.predict()`、および推論 URL への直接の REST 呼び出しは、いずれも同じ基盤となる推論エンジンへの経路です。
