📑 目次を開く
👋 HOOPヘルプセンターへようこそ
HOOPは、シンプル・爆速・直感的な在庫管理を目指したクラウドサービスです。まずは クイックチュートリアルで一連の流れを掴み、そのあと各機能の詳細へ進んでください。 左(またはモバイルでは上)の目次から気になる項目にジャンプできます。
🚀 クイックチュートリアル
管理者権限でログインし、サンプル品番の登録 → 入出庫 → ホーム確認 → 営業ポータル発行までを一気に体験します。画面イメージは現行UIを模したスナップショットです。
-
ログインする
https://hoop.956.jp/users/sign_in から管理者でログインします。まだ組織がない場合は サインアップ から開始してください。
ログイン画面。メールアドレスとパスワードで管理画面に入ります。
-
サンプル品番を一括登録する
サンプルExcel(HOOP-QUICKSTART.xlsx)をダウンロードします。左サイドバーまたは設定から品番設定を開き、品番一括処理 → 一括登録でファイルを取り込みます。自動車の例で分類3・品番7件が入ります。
品番一覧。登録…/品番一括処理からマスタを整備します。公開設定は営業ポータルや共有リンクに影響します。
-
入出庫を記録し、フリー在庫を確認する
サイドバーの在庫情報から品番を開き、SKUの入出庫記録タブで +入庫 / +棚卸 / +出庫 を使います。将来の予定ならステータスを実施見込にすると、現在庫とフリー在庫(引当可能数)が分かれて見えます。
サマリー/入出庫記録。実施見込の出庫があるとフリー在庫が減り、営業側の見える数が変わります。
-
ホームで「今動かす在庫」を見る
サイドバーホームへ戻ると、KPIカードと今動かす在庫(枯渇ボード)が表示されます。推奨安全在庫の反映や発注メモのコピーがここから行えます。
ホーム画面。警告件数とアクションボードで「次に手を付ける在庫」がわかります。
-
営業ポータルURLを発行する
設定のポータルURLを開き、営業ポータルタブで新規発行…します。発行したアクセスURLをコピーし、ブラウザやLINEのメニューから開けます(パスワード不要)。
ポータルURL。入出庫端末・営業ポータル・共有在庫はいずれもここから発行します。
-
営業ポータルで仮押さえする
発行したURLで検索し、フリー在庫を確認して仮押さえします。出庫確定時、引当管理ONのSKUでは最古ロットからFIFO分割引当が働きます。取引先には同じ設定画面の共有在庫タブで読み取り専用リンクを渡せます。
営業ポータル。フリー在庫が前面に出る検索結果から、その場で仮押さえできます。
🚪 はじめに
HOOPには、管理者・スタッフ向けの管理画面と、パスワード不要の専用URL(ポータル)があります。
専用ポータルURL
営業ポータル・入出庫端末・共有在庫は、通常ログインとは別の専用アカウント/リンクです。発行・再発行・無効化は管理画面の「設定 → ポータルURL」から行います。
📊 ダッシュボードの見方
ログイン後のホーム画面には、今すぐ対応が必要な項目がKPIカードとして並びます。
- 安全在庫割れ — フリー在庫が安全在庫数を下回っているSKUの件数
- 未確認の入出庫 — 実施日を過ぎても「実施見込」のままの記録
- 発注点警告 — 発注点までの日数が会社設定の警告日数を下回った品番
- 滞留在庫 — 会社設定の日数以上、出庫されていないSKU
- 🔮 枯渇予測 — 直近の消費ペースから、まもなく在庫切れになると予測されたSKU
各カードをタップすると、該当する一覧画面に直接ジャンプします。
今動かす在庫(アクションボード)
ホーム下部には、枯渇間近・安全在庫割れのSKUを優先表示するリストがあります。
- 安全在庫を反映 — AI推奨安全在庫をワンタップでSKUに適用
- 発注メモをコピー — 品番・フリー在庫・推奨値などをテキストとしてコピーし、発注メールやチャットに貼り付け可能
📦 品番・SKUの登録
「品番」は製品そのもの、「SKU」はサイズ・色・ロットなど、価格や在庫を個別管理する単位です。
登録の流れ
- 「在庫情報」メニューから分類(カテゴリ)を選ぶ
- 「登録…」ボタンから品番を新規登録(品番コード・品名・設定原価など)
- 品番登録時に、同名のSKUが自動で1件作成されます。サイズ違い等が必要な場合はSKUタブから追加登録
公開設定と絶版
- 公開/非公開 — 営業ポータルや共有在庫リンクに載せるかどうか
- 絶版 — 新規取扱を止めるフラグ(公開設定とは独立)。在庫の消化は可能です。他システム連携時の属性同期にも使います
- 取扱中/中止 — 運用上のアクティブ状態
🔄 入出庫記録(入庫・出庫・棚卸)
SKU詳細画面の「入出庫記録」タブから、入庫・出庫・棚卸を記録します。
➕ 入庫
ロットID・数量・実施日時を入力して登録します。IDを空欄にすると自動でロットコード(例: LOT-BRK-001-260723-01)が採番されます。
➖ 出庫
引当管理ONのSKUでは、どの入庫ロットから払い出すかを選択します(詳しくは「引当管理とFIFO自動選定」を参照)。
🔁 棚卸
実地棚卸の結果で在庫数量をリセットします。引当管理ONのSKUは棚卸によるリセットができません(個別の入庫記録を確認してください)。
🔮 需要予測とAI推奨安全在庫
直近30日間の確定出庫実績から1日あたりの消費ペースを算出し、「あと何日で枯渇するか」を予測します。予測が会社設定の警告日数以内の場合は「枯渇間近」バッジで警告します。
SKUサマリー画面には、消費ペース×リードタイム(会社設定で変更可)から算出したAI推奨安全在庫が現在値と大きく異なる場合に表示され、ワンタップで安全在庫数へ反映できます。既存の手動設定を壊すことはなく、あくまで「提案」として重ねて表示されます。
🔗 ロットトレーサビリティ
HOOPは重厚な構成部品表(BOM)を使わず、「元ロットを1つ指定するだけ」の軽量なロット系譜管理を採用しています。
元ロットの連携方法
- 入庫登録・編集フォームの「元ロット(任意)」欄に、原材料・部材ロットのコードを入力
- QRコードをカメラでスキャンするか、候補一覧(入力補完)から選択、または直接入力
- 空欄のまま保存すれば、外部からの仕入れ品としてそのまま登録できます
存在しないコードを指定した場合は「元ロット「〇〇」に一致する入庫ロットが見つかりません」というエラーが表示され、保存されません。
系譜ツリー画面(/lot_trace)
ロットのQRコードをスキャンするか、入出庫記録一覧の🔗アイコンから開くと、親(原材料)→子(半製品)→孫(完成品)という系譜がツリー形式で一望できます。各ロットのQRコード・出庫履歴・仮押さえ状況もあわせて確認できます。管理画面・現場端末・営業ポータルのいずれからもアクセス可能です。
🤖 引当管理とFIFO分割引当
SKU設定画面の 引当管理(ロットトレース) をONにすると、そのSKUは出庫のたびに「どの入庫ロットから払い出したか」を厳密に記録します。
営業ポータルで「出庫(確定)」を押すと、サーバー側が実施日時の古い順(FIFO)に入庫ロットを選び、要求数量を満たすまで複数ロットへ自動分割して出庫します。営業マンは数量と顧客名を入力するだけでよく、倉庫の先入れ先出しルールを意識する必要はありません。
🔗 ポータルURLの発行
管理者は「設定 → ポータルURL」から、用途別の専用リンクを発行します。
入出庫端末
現場タブレット向けの専用アカウント。通常のユーザー権限としては選べません。ここから発行したURLのみで利用します。
営業ポータル
外出先・営業向け。仮押さえ/延長/出庫確定ができます。表示名を付けて複数発行可能です。
共有在庫
取引先向けの読み取り専用リンク。公開SKUのフリー在庫だけを見せます(仮押さえ不可)。
⚡ 営業ポータルの使い方
🔍 検索とクイック仮押さえ
品番・SKU・品名で検索すると、フリー在庫数(引当可能数)が大きく表示されます。「⚡仮押さえ」ボタンから、数量・顧客名/案件名(任意)・期限(任意)を入力してその場で仮押さえを登録できます。絶版SKUは検索対象外です。
📋 仮押さえ一覧
登録済みの仮押さえには「⏳延長/📦出庫(確定)/解除」の3ボタンが常時表示されます。期限切れ間近や枯渇予測がある場合は警告バッジで強調されます。
📦 出庫(確定)
成約した仮押さえをワンタップで実際の出庫記録に変換します。引当管理ONのSKUはFIFOで複数ロットへ分割引当されます。
🔗 ロットのスキャン
ロットのQRコードをスキャンすると、その場でロット系譜トレース画面を開けます(価格情報は表示されません)。
📱 LINEから開く
自社の LINE 公式アカウントから、パスワードなしで営業ポータルを開けます。設定手順は LINEで営業ポータルを使う を参照してください。
📱 LINEで営業ポータルを使う
自社の LINE公式アカウントのリッチメニューやトークから、営業ポータルをそのまま開けます。 HOOPの管理画面へのログインとは別の機能で、「現場・外出先の営業が、LINEから在庫を見て仮押さえ〜出庫まで進める」ための入口です。
メリット
- パスワード不要 — 営業は普段使っている LINE からワンタップでポータルに入れます。
- 自社ブランドのまま届く — 御社の公式アカウント上にメニューや案内を置けます。
- その場で在庫操作 — フリー在庫の確認・仮押さえ・出庫確定まで、LINE内で完結できます。
- URLの配布が簡単 — リッチメニューやトークに「LINE用 URL」を貼るだけで始められます。
設定手順
-
LINE公式アカウントを用意する
まだない場合は LINE公式アカウント を作成します(無料プランでも始められます)。 -
LINE Developers でチャネルを用意する
LINE Developers Console にログインし、公式アカウントに紐づく Messaging API チャネルを作成(または既存アカウントを連携)します。 表示される チャネルID・チャネルシークレット・チャネルアクセストークン(長期) を控えておくと、あとで HOOP に貼り付けやすくなります。 -
LIFF アプリを追加する
チャネルの「LIFF」からアプリを追加します。- サイズ: Full(推奨)
- エンドポイントURL:
https://hoop.956.jp/sales_portal/liff
1234567890-AbCdEfGh)を控えます。 -
HOOPに登録する
管理者でログイン → 設定 → HOOP設定 → 編集 → 「LINE連携」に LIFF ID(必須)を入力して保存します。 チャネルID・シークレット・アクセストークンは任意ですが、控えてある場合は合わせて登録してください。 -
営業ポータルの LINE用 URL をコピーする
設定 → ポータルURL → 営業ポータルでポータルを発行(または既存の詳細を開き)、画面上の LINE用 URL をコピーします。 -
リッチメニューやトークに貼る
公式アカウント管理画面で、リッチメニューのボタンやトークメッセージにその URL を設定します。 営業担当がタップすると、LINE内でポータルが開き、仮押さえ〜出庫まで使えます。
うまく開かないとき
- HOOP設定に LIFF ID が入っているか
- LIFF のエンドポイントURLが
https://hoop.956.jp/sales_portal/liffになっているか - LINE用 URL が古い(ポータルを再発行・無効化したあと)ものになっていないか
- スマホの通常ブラウザではなく、LINEアプリ内から開いているか
🔌 在庫ハブAPI
Trinity など他システムから、カタログと在庫を読み取るための Web API です(読取専用の第一段階)。 人が仕様を読むほか、チートシートを AI エージェントに渡してコードや運用手順を書かせる使い方も想定しています。
AI Agent チートシート
下の契約(チートシート)をコピーしてエージェントに渡し、「やりたいこと」を自然文で依頼します。キー文字列は含めないでください。
- チートシートをコピーアコーディオンを開き「コピー」で全文を取得します(または /llms-api.txt)。
- エージェントに読み込ませるCursor / OpenClaw 系などのルール・プロンプト・会話に貼ります。
- やりたいことを伝える例: 「公開SKUカタログを同期する Python を書いて」「SKUコードの free_qty を確認する curl を」。
- キーは見せない環境変数
HOOP_API_KEY等で渡し、チャット・ログ・コミットに平文キーを出さない。
エージェント向けチートシートを開く/閉じる
# HOOP Inventory Hub API — LLM / Agent cheat sheet
Base: https://hoop.956.jp
Auth: Authorization: Bearer <HOOP_API_KEY> (prefix often hoop_)
Scopes: catalog:read, stock:read — read-only. No write/Webhook yet.
OpenAPI: https://hoop.956.jp/openapi.yaml
Help: https://hoop.956.jp/help.html#api-hub
Hard rules:
- Call ONLY https://hoop.956.jp/api/v1/*
- Never invent POST/PATCH/DELETE
- Never print/commit/share the API key
- Use free_qty (not only qty) for sellable stock
- location_code is always "default" today
Endpoints:
GET /api/v1/catalog/skus?public_only=true&exclude_discontinued=true&updated_since=ISO&limit=1..500
GET /api/v1/skus/{code_or_id}
GET /api/v1/stock?sku_codes[]=A&sku_codes[]=B&limit=1..500
GET /api/v1/skus/{code_or_id}/stock
curl:
export HOOP_API_KEY=…
curl -sS -H "Authorization: Bearer $HOOP_API_KEY" \
"https://hoop.956.jp/api/v1/catalog/skus?exclude_discontinued=true&limit=50"
Playbooks:
- Sync catalog: list with public_only + exclude_discontinued; upsert by code; next run use updated_since
- Promise stock: GET …/skus/{code}/stock → free_qty
- Health: GET …/catalog/skus?limit=1 → expect 200
Errors: 401 unauthorized · 403 forbidden+required_scope · 404 not_found
接続の基本
ベースURL: https://hoop.956.jp
認証: Authorization: Bearer hoop_…(会社の APIキー。平文は発行時に一度だけ表示)
スコープ: catalog:read / stock:read(キーは組織に紐づき、他社データは返りません)
- 管理者で「設定 → APIキー」を開く
- 名前を付けて発行し、安全な場所に保存する
- リクエストに Bearer ヘッダを付ける(クエリ
api_key=も可だが非推奨)
SKUカタログを他システムへ同期する 提供中
こんなときに — EC/店舗/Agency/Trinity 側のマスタを HOOP の公開SKUに揃えたい。
呼び出し
GET /api/v1/catalog/skus?public_only=true&exclude_discontinued=true&limit=100
Authorization: Bearer $HOOP_API_KEY
手順
- 初回は
public_onlyとexclude_discontinuedで一覧取得し、codeをキーに upsert - 次回以降は
updated_since=<前回成功時刻のISO8601>で差分同期 is_public/is_discontinued/is_activeを相手側の公開・絶版フラグにマップ
{ skus: [...], meta: { count, location_code: "default" } }。1回最大 500 件(limit)。1件のSKU詳細を取る 提供中
こんなときに — 相手システムの画面で、特定コードの品名・単位・公開状態だけ確認したい。
GET /api/v1/skus/{code}
Authorization: Bearer $HOOP_API_KEY
手順
- パスには SKUコード(
alt_id)を優先。内部 numeric id でも可 - 404 のときは「自社にそのコードが無い」と扱う(他社混入はない)
複数SKUの在庫をまとめて取る 提供中
こんなときに — カートや発注画面の候補一覧に、いまの在庫を並べたい。
GET /api/v1/stock?sku_codes[]=SKU-A&sku_codes[]=SKU-B
Authorization: Bearer $HOOP_API_KEY
手順
sku_codes[]を繰り返すか、カンマ区切りでも可- 返却の
stocks[]をcodeでマップ - 表示・約束は原則
free_qty(仮押さえ済みを除いた数量)
売れる数量(フリー在庫)を確認する 提供中
こんなときに — 受注前に「いま客に約束できる数」だけ知りたい。
GET /api/v1/skus/{code}/stock
Authorization: Bearer $HOOP_API_KEY
見方
qty— 現物の合計free_qty— 仮押さえを除いた販売可能数 ← 約束に使うsafe_qty— 安全在庫しきい値location_code— 現状は常にdefault
連携の疎通確認をする 提供中
こんなときに — バッチやエージェントの起動時に、キーと権限が生きているか確認したい。
GET /api/v1/catalog/skus?limit=1
Authorization: Bearer $HOOP_API_KEY
書込・Webhook 予定
在庫の更新や、変更イベントの押し出し(Webhook)は順次提供予定です。エージェントに書込APIを発明させないでください。
具体的な使用例
言語別のサンプルです。アコーディオンを開き、必要ならコピーしてからキーだけ差し替えてください。
curl
export HOOP_API_KEY='hoop_…' # 平文キーはここにだけ置く
export HOOP_BASE='https://hoop.956.jp'
# カタログ(絶版除外)
curl -sS -H "Authorization: Bearer $HOOP_API_KEY" \
"$HOOP_BASE/api/v1/catalog/skus?exclude_discontinued=true&limit=50"
# フリー在庫(1 SKU)
curl -sS -H "Authorization: Bearer $HOOP_API_KEY" \
"$HOOP_BASE/api/v1/skus/SAMPLE-001/stock"
# 複数在庫
curl -sS -H "Authorization: Bearer $HOOP_API_KEY" \
"$HOOP_BASE/api/v1/stock?sku_codes[]=SAMPLE-001&sku_codes[]=SAMPLE-002"
Python
import os
import requests
BASE = "https://hoop.956.jp"
KEY = os.environ["HOOP_API_KEY"]
headers = {"Authorization": f"Bearer {KEY}"}
r = requests.get(
f"{BASE}/api/v1/catalog/skus",
headers=headers,
params={"public_only": "true", "exclude_discontinued": "true", "limit": 100},
timeout=30,
)
r.raise_for_status()
for sku in r.json()["skus"]:
print(sku["code"], sku["name"], sku["is_public"])
stock = requests.get(
f"{BASE}/api/v1/skus/SAMPLE-001/stock",
headers=headers,
timeout=30,
).json()["stock"]
print("free_qty=", stock["free_qty"])
Ruby
require "json"
require "net/http"
require "uri"
base = "https://hoop.956.jp"
key = ENV.fetch("HOOP_API_KEY")
uri = URI("#{base}/api/v1/skus/SAMPLE-001/stock")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer #{key}"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
raise "HTTP #{res.code}" unless res.is_a?(Net::HTTPSuccess)
stock = JSON.parse(res.body).fetch("stock")
puts "free_qty=#{stock['free_qty']}"
JavaScript (fetch)
const BASE = "https://hoop.956.jp";
const KEY = process.env.HOOP_API_KEY;
const res = await fetch(`${BASE}/api/v1/stock?sku_codes[]=SAMPLE-001`, {
headers: { Authorization: `Bearer ${KEY}` },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { stocks } = await res.json();
console.log(stocks.map((s) => [s.code, s.free_qty]));
⚙️ 会社設定(しきい値のカスタマイズ)
「設定 → HOOP設定」から、コードの変更・デプロイなしにいつでも調整できます。
- 滞留判定日数(既定90日)— 最終出庫日からこの日数以上経過したSKUを「滞留在庫」として警告
- リードタイム(既定7日)— AI推奨安全在庫(消費ペース×リードタイム)の計算に使用
- 仮押さえ有効期間(既定14日)— 営業ポータルで新規仮押さえを登録した際のデフォルト期限日数
- LINE連携 — 営業ポータルを LINE から開くための LIFF ID など(詳しくは LINEで営業ポータルを使う)
しきい値が未設定のままでも、それぞれ安全なデフォルト値にフォールバックするため、省略しても問題なく運用できます。
📱 現場端末(スキャン)
「設定 → ポータルURL → 入出庫端末」から発行した専用URLで、現場のタブレット・スマホから入出庫・棚卸を記録できます。QR/バーコードスキャンでSKU・ロットを即座に呼び出し、そのままロット系譜トレース画面へも遷移できます。
❓ よくある質問
営業ポータルや端末のURLを忘れてしまいました。どうすればいいですか?
管理画面の「設定 → ポータルURL」を開き、該当タブ(営業ポータル/入出庫端末/共有在庫)から管理画面へ進むとURLを確認・コピーできます。再発行も同じ画面から行えます。
BOM(構成部品表)には対応していますか?
現在のHOOPは、複雑な構成部品表を前提としない「軽量トレース」で運用しています。BOMによる厳密な数量整合性管理は、必要な事業者向けの将来のオプション機能として検討中です。なお、営業ポータルの出庫確定では、BOMなしでも複数ロットへのFIFO分割引当が可能です。
元ロットの連携は必須ですか?
いいえ、任意項目です。空欄のまま登録すれば、外部からの仕入れ品として問題なく扱えます。系譜を追いたいロットにだけ指定してください。
引当管理(ロットトレース)はどんなSKUでONにすべきですか?
ロット・製造番号ごとに先入れ先出しを厳密に管理したいSKU(原材料・医薬品・食品など)でONにすることをおすすめします。単純な仕入れ商品ではOFFのままで問題ありません。
出庫(確定)で「引き当てられる在庫ロットが不足しています」と出ました。
確定済み入庫ロットの残数合計が、仮押さえ数量に足りない状態です。入庫を追加するか、管理画面から数量を調整したうえで再度お試しください。1ロットでは足りなくても複数ロットで足りる場合は、自動で分割出庫されます。
共有在庫リンクと営業ポータルの違いは?
共有在庫は「見せるだけ」(読み取り専用)。営業ポータルは仮押さえ・出庫確定まで行えます。取引先には共有在庫、自社営業には営業ポータル、という使い分けが一般的です。
LINE連携には自社の公式アカウントが必要ですか?
はい。御社の LINE 公式アカウントから営業ポータルを開く仕組みです。LINE Developers で LIFF を用意し、LIFF ID を HOOP設定に登録します。手順は「LINEで営業ポータルを使う」を参照してください。
OpenAPI(Swagger)はありますか?
はい。読取APIの OpenAPI 3 仕様を /openapi.yaml で公開しています。AIエージェント向けの運用チートシートは /llms-api.txt です。手順の概要は「在庫ハブAPI」も参照してください。
APIキーを紛失しました。
平文キーは発行時に一度しか表示されません。紛失した場合は古いキーを無効化し、新しいキーを発行してください。