はじめに
こんにちは、ソラコムでソラカメ& Flux を担当してる nori です。大好きなサービスは SORACOM Flux です。
SORACOM Fluxには「アプリテンプレート」という便利な機能があります。よく使われるユースケースに最適化されたテンプレートを選ぶだけで、基本的な構成が自動的にセットアップされ、すぐに使い始められます。
今回は「ソラカメで人数検知して可視化と通知」というテンプレートをベースにし、カスタマイズすることで、AI アクションのプロンプトを変更して商品の在庫切れ検知アプリを作成します。テンプレートをカスタマイズすることでより簡単にユーザーの皆様が作りたい個別のニーズに対応したIoTアプリケーションが作成できます。今回は、実際の手順をご紹介します。
使用するテンプレート
テンプレート名: ソラカメで人数検知して可視化と通知
このテンプレートは、以下のような構成になっています:
- 入力: ソラカメ(SORACOM Cloud Camera Services)からの画像
- 処理: AIで画像を分析し、人数をカウント
- 出力: 結果を蓄積(SORACOM Harvest)、可視化(SORACOM Lagoon)、メール通知
テンプレートから作成した Flux アプリは以下のようなイメージです。

今回は、この「人数カウント」の仕組みを「商品の在庫状況チェック」に変えていきます。
Fluxアプリのカスタマイズの流れ
ステップ1: テンプレートからFluxアプリを作成
まずは SORACOM Flux アプリテンプレートから Flux アプリを作成します。
- ユーザーコンソールにアクセスします
- [メニュー] → [SORACOM Flux] → [Flux アプリテンプレート] の順にクリックします。
- 「ソラカメで人数検知して可視化と通知」テンプレートを選択
- [Flux アプリを作成] ボタンをクリック
- 必要なパラメーター(アプリ名、通知先など)を入力して作成完了
テンプレートの作成方法の詳細は SORACOM Flux アプリテンプレートから Flux アプリを作成する を参照してください。テンプレートから作成するだけで、基本的な画像分析の仕組みができあがります。
ステップ2: カメラを商品棚に設置
今回は店舗の商品棚をモニタリングします。 カメラ(ソラカメ対応製品)を棚の前方斜め上から設置し、商品の陳列状況が確認できるようにします。
今回は以下のような商品棚を使用します。白いスチール製の6段の商品棚に、複数の商品パッケージが並んでいる様子を撮影しています。

ステップ3: AIアクションのプロンプトを変更
ここが最も重要なポイントです。 テンプレートの AI アクションで使われているプロンプトを在庫管理用に書き換えます。
変更前(人数カウント用)
「ソラカメで人数検知して可視化と通知」テンプレートで使われているプロンプトは以下の通りです。ここでは人数カウントのための指示が書かれています。
# リクエスト内容 【静止画中の物体検知】
添付された画像について、画像に映り込んでいるすべての人物(部分的に写っている人も含む)および車両(反射や窓越しのものも含む)を数えてください。
# 画像の前提
この画像はオフィス室内(執務エリア)を撮影したものです。
# 物体検知の方針
一部が隠れていたり、鮮明でない人物・車両も、推定されるものはすべてカウント対象としてください。
# 出力フォーマット
結果は必ず以下のようなJSONフォーマットで返してください。
{"person":2, "car":1}変更後(在庫切れ検知用)
今回は、商品の在庫切れ検知アプリを作成するため、以下のようにプロンプトを書き換えます。
この画像は、店内の白い6段の商品棚を正面から撮影したものです。
この棚の商品の陳列状況を分析し、補充の必要性を判断してください。
【前提ルール】
- 商品棚は6段ありますが、上から3段目を対象に評価してください。
- 商品は原則、棚の「奥から手前」に向かって並べられています。
- 商品は棚の「横幅いっぱい」に等間隔で並べられるのが通常です。
- したがって、棚の「奥行き方向に商品が少ない」列は、
  奥の在庫が不足している可能性が高く「補充が必要」と判断できます。
【評価観点】
1. 充足率
   (どの程度商品で満たされているか)を 0〜100 の整数(%)で評価してください。
2. 充足率が 40% 未満 の段は "needs_restock": true としてください。
   それ以上であれば false としてください。
3. 棚の奥行き方向に「商品が1列しかない」「奥が見えている」など、
   補充が必要なサインが見られる場合は、40%以上でも "needs_restock": true に
   してかまいません(理由は note に記述してください)。
4. 商品が片側に偏っていたり、極端な空きスペースがある場合は note に記載してください。
   特に無ければ空文字でかまいません。
【出力形式】
以下の JSON 構造に厳密に従って出力してください。
{
  "fill_ratio_percent": <整数(0〜100)>,
  "needs_restock": <true|false>,
  "note": "<補充判断の理由や補足(空文字でも可)>"
}
【重要な制約】
* "note" フィールドが空でも省略しないでください。
* 数値は必ず整数で、小数は使わないでください。
* JSONは機械処理に使われるため、構造を崩さず出力してください。
画像を確認し、上記のルールに従ってJSON出力してください。ステップ4: 後続処理の更新
AI アクションのレスポンスの内容が変わりましたので、後続の処理もそれに合わせて更新します。
AIアクションの「高度な設定」
AIアクションの「高度な設定」を以下のように更新します
変更前
{
    "input": {
        "image_path": "${payload.harvestFilesPath}"
    },
    "output":{
        "person": ${result.output.person},
        "car": ${result.output.car}
    }
}変更後
{
    "input": {
        "image_path": "${payload.harvestFilesPath}"
    },
    "output":${result.output}
}
${result.output} を指定していますが、ここでは  AI アクションの出力結果を次のステップに渡しています。 AIアクションの結果は、プロンプトで設定したとおり、以下のような JSON となります。
AIアクションの結果
{
  "output": {
    "fill_ratio_percent": 80,
     ...
  },
  "usage": {
    "inputTokens": 3078,
     ...
  }
}「データ保存」アクションの設定
Harvest Data に保存する「データ保存」アクションの設定も、AIアクションの出力に合わせて変更します。
変更前
{
    "person": ${payload.output.person},
    "car": ${payload.output.car},
    "density": ${payload.output.person / 10},
    "image_path": "${payload.input.image_path}"
}変更後
{
    "output": ${payload.output},
    "image_path": "${payload.input.image_path}"
}${payload.output} と指定することで、以下のような形式で Harvest Data に保存されます
{
  "output": {
    "fill_ratio_percent": 50,
    "needs_restock": true,
    "note": "<コメント>"
  },
  "image_path": "/recipe/sora_cam/7CDDE905XXX/2025-10-30-02-56-54-000_OP00335XXX_7CDDE905XXX.jpg"
}E メール通知アクションの設定
引き続き、Eメール通知アクションの設定も変更します。 例えば、以下のように設定します。アクションの実行条件は、 AI が判断してくれる needs_restock が true の場合に限定します。以下のように更新します。
payload.output.needs_restock == true
件名、本文は、たとえば以下のように設定します。
件名:
【在庫補充通知】商品棚の在庫が不足しています
本文:
店舗の商品棚の在庫が不足しています。以下の情報をご確認ください。 
充足率: ${payload.output.fill_ratio_percent}%
補充の必要性: ${payload.output.needs_restock}
補充判断の理由: ${payload.output.note}実行結果の例
以下のように取得された画像から

アラートメールが送信されました。

監視対象の3段目は確かに 40%程度ですね。
まとめ
SORACOM Fluxのアプリテンプレートを使えば、以下の簡単な手順で在庫切れ検知アプリが作れます。
- テンプレートからアプリを作成(数クリック)
- カメラを設置
- AIプロンプトをカスタマイズ
- 後続処理の更新
特に重要なのは、ステップ3のプロンプトのカスタマイズです。 明確な評価基準と出力形式を指定することで、AI がプロンプトに応じた有用な情報を返してくれます。
このように、テンプレートを起点にすることで、ゼロから作るよりもはるかに早く、実用的なIoTアプリケーションを構築できます。プロンプトを変えるだけで、様々なユースケースに対応できるのがSORADOM Fluxの嬉しいところです! ぜひ、様々な用途に合わせてカスタマイズしてみてください!
ソラコム nori
