ブログ /
Shopify の在庫切れを防ぐ需要予測の基本|SMA から始めて段階的に高度化する
TL;DR
- 需要予測は「将来の販売数を当てるゲーム」ではなく 「在庫が切れる前にアラートを出す仕組み」 と理解するのが現実的。
- 最初は 単純移動平均(SMA、Simple Moving Average) で十分。複雑な統計モデルに振り回されない。
- 再注文ポイント = リードタイム期間中の予測販売数 + 安全在庫。これだけで在庫切れの大半を防げる。
- 日本の EC は お中元・お歳暮・GW・お盆 など季節係数が大きい。海外発のモデルは要調整。
- 高度化(Prophet / 機械学習)は「SMA で困ってから」考える。最初から複雑にすると保守不能。
「予測」という言葉に振り回されない
需要予測 / Demand Forecasting というと、「機械学習で未来を当てる」 イメージを持つ方が多いですが、現実はもっと地味です。
実用上の需要予測は:
- 過去の販売実績から「この SKU は週に N 個売れる」というベースラインを出す
- そのベースラインに季節性・トレンドを掛け合わせる
- 再注文ポイントを設定して、在庫がそれを下回ったらアラート
この 3 ステップで、在庫切れの 8 割以上は防げます。残り 2 割は突発的な需要急増(バズ・テレビ放映・季節外れの天候等)で、これは予測モデルでは捉えきれない領域。
単純移動平均(SMA)から始める
最もシンプルかつ有効なベースライン算出方法は Simple Moving Average(単純移動平均):
過去 N 日間の販売数 / N = 1 日あたりの平均販売数
例: 過去 30 日で 60 個売れた → 1 日あたり 2 個
これだけです。難しい数式不要。
N(窓)の選び方
| 窓 | 使い分け |
|---|---|
| 7 日 | 直近の傾向に敏感、ノイズも拾いやすい。テスト・検証用 |
| 14 日 | 短期トレンド対応、日次変動を吸収 |
| 30 日 | 一般的、月次サイクルを 1 周期含む |
| 90 日 | 季節性の影響を平均化、安定だが新商品には不向き |
最初は 30 日で十分。ストア成長期は短い窓(14 日)で機敏に反応、安定期は長い窓(90 日)に切替える流れが定石。
Stocky / UreyukiBox の v1 で使われる手法
実は本格的な業務でも、まずは SMA をベースに以下を加味するだけで実用十分です:
- 欠品期間を除外(在庫 0 の日は販売数 0 になるが、需要が無かった訳ではない → 除外して計算)
- 異常値の除外(特定日が急に 100 個売れても、それを平均に含めない)
- 新商品の最低期間 14 日待機(データが少なすぎて予測不能)
再注文ポイントの計算
再注文ポイント(Reorder Point、ROP)は 「これ以下になったら発注する」しきい値:
再注文ポイント = 1 日あたりの予測販売数 × リードタイム日数 + 安全在庫
例
- SKU: T シャツ
- 1 日あたりの平均販売数: 2 個(直近 30 日)
- リードタイム: 14 日(仕入先 → 入荷まで)
- 安全在庫: 7 日分 = 14 個
ROP = 2 × 14 + 14 = 42 個
→ 在庫が 42 個を下回ったら発注、42 個以下のうちに新ロット入荷で在庫切れ回避。
安全在庫(Safety Stock)の決め方
「在庫切れの確率をどこまで許容するか」で決まります。
| 戦略 | 安全在庫 | 在庫切れリスク |
|---|---|---|
| 強気 | 3 日分 | 中(突発需要で切れる) |
| 標準 | 7 日分 | 低(推奨) |
| 慎重 | 14-30 日分 | 極低(資金繰り・倉庫負担増) |
完全な数式(z 値・標準偏差ベース)もありますが、初期は「リードタイムの半分」を安全在庫にしておくのが実用的。
季節性係数を掛ける
日本の EC は 1 年を通じて販売が均一ではありません。
主要な季節要因
| 時期 | 影響 SKU 例 | 倍率の目安 |
|---|---|---|
| お正月(12 月下旬-1 月) | おせち食材 / 正月飾り / 干支グッズ | 5-20× |
| バレンタイン(2 月) | チョコ / ギフト | 3-10× |
| ホワイトデー(3 月) | 同上 | 2-5× |
| 入学・新生活(3-4 月) | 文具 / 家電 / 家具 | 1.5-2× |
| GW(5 月) | アウトドア / 旅行用品 | 1.5-3× |
| 父の日 / 母の日 | ギフト | 2-5× |
| お中元(7 月) | ギフト食品 | 3-10× |
| お盆(8 月) | 帰省土産 / 仏花 | 2-5× |
| ハロウィン(10 月) | 仮装 / お菓子 | 2-8× |
| ブラックフライデー / クリスマス(11-12 月) | EC 全般 | 1.5-3× |
| お歳暮(12 月) | ギフト食品 | 5-15× |
自店舗の販売実績で「先月比 ×N」のパターンを見つけて、来年の同月に その係数を SMA に掛ける のが基本ロジック。
簡易な実装
季節調整済み予測 = SMA × 季節係数
季節係数は前年同月の販売数 / 前々月の販売数から逆算する手もあれば、業界レポートから流用する手もある。自店舗データが 1 年分溜まってから本格導入で十分。
高度化を急がない
需要予測界には Prophet(Facebook)/ LSTM / XGBoost といった統計・機械学習モデルが揃っています。これらは強力ですが、以下の問題があります:
- 学習データが必要: 1 年分以上ないと意味のあるモデルが作れない
- 保守コスト: モデル再学習・パラメータ調整が継続発生
- 解釈不能: なぜこの予測が出たか説明しづらい
- 精度の伸びは限定的: SMA に対して 5-15% 改善程度がよくある相場
SMA でうまくいかない症状(在庫切れが頻発、過剰在庫が増える)が出てから検討すべき領域です。最初から ML を入れると保守できずに「前のシステムに戻す」が起こりがち。
「予測」と書くか「リマインダー」と書くか
UreyukiBox は 「販売速度に基づくリマインダー」 という表現を使っています。
「需要予測」と書くと:
- ユーザーが精度に過度な期待を持つ
- 当たらなかった時のクレームが「予測精度が悪い」と機能批判になる
- 法令上「データ分析」と「予測」の責任範囲が曖昧
「販売速度に基づくリマインダー」と書くと:
- 過去のペースに基づく示唆であることが明確
- ユーザー側の判断責任が明示される
- 機能としての過剰な期待を抑える
これは v1 設計判断として明示してます(Stocky 終了 ガイド記事も同じ表現)。
v1 → v2 の発展ロードマップ
| フェーズ | アプローチ | データ要件 | 所要 |
|---|---|---|---|
| v1(今) | SMA + 7 日安全在庫 + 手動季節係数 | 30 日以上の販売実績 | 即座 |
| v1.x | + 自動異常値除外 + 欠品日除外 | 60 日以上 | +1 ヶ月 |
| v2 | + 季節係数自動算出(前年比) | 1 年分 | +6 ヶ月 |
| v2.x | + Prophet / 統計モデル選択肢 | 1 年分 + 検証期間 | +1 年 |
| v3 | + ML(LSTM 等)、SKU クラスタリング | 2 年以上 | 機械学習エンジニア要 |
多くの店舗は v1 + v1.x で困らないのが実態。v2 以降は「v1 で困った人向けの追加機能」として位置付けるのが健全。
FAQ
Q. 既に Stocky を使ってきたが、UreyukiBox に移行したら予測精度はどう変わる?
A. UreyukiBox の v1 は Stocky と同等の SMA ベースです。販売実績データを移行すれば、Stocky で見ていた数字とほぼ一致するはず。差別化は「日本シーズナリティ自動係数」(v1.x で導入予定)から先で出ます。
Q. 1 日あたり 0.1 個しか売れない SKU はどう扱う?
A. SMA は丸めの誤差で「再注文ポイント = 0」になる罠あり。UreyukiBox では 販売頻度が低い SKU は別ロジック(過去 90 日の合計売上 × バッファ)で再注文ポイントを算出します。
Q. 仕入先のリードタイムが日によって違う場合は?
A. 最大値(保守側)を使うのが基本。例: 通常 14 日だが繁忙期は 21 日 → 21 日でセット。ROP が大きくなって資金繰り圧迫があるなら、仕入先別に係数を分ける運用にする。
Q. SMA より EMA(指数移動平均)の方が良い?
A. 直近の変動に敏感に反応させたい場合は EMA の方が優れます。ただし運用上の差は小さいので、最初は SMA、必要なら EMA に切り替えで十分。UreyukiBox v1 は SMA、v1.x で EMA を選択肢として追加予定。
Q. 機械学習で予測したい
A. 機械学習エンジニア(社内 or 外注)が居なければ やめておくのが安全。モデル運用は「学習・評価・パラメータ調整・再学習」の継続コストが大きい。SMA でルール化してから、本当に必要なら専門家に相談。
まとめ
需要予測は「シンプルなロジック + 運用での磨き込み」が王道です。
- SMA(30 日)でベースライン
- 安全在庫 = リードタイム / 2
- 再注文ポイントを設定
- 季節性は 自店舗データ で 1 年分溜めてから
これだけで多くの問題は解決します。複雑なモデルは「SMA で困ってから」。
UreyukiBox は v1 でこのシンプル路線を採用し、ローンチ後にデータが溜まる順で機能を追加していく予定です(精度クレーム回避、保守コスト最小化)。
関連記事
- Stocky 終了|2026 年 8 月 31 日でサポート停止、Shopify 在庫管理はどうする?
- Stocky 代替アプリ徹底比較
- Stocky の発注書・仕入先データを失わずに移行する実務ガイド
- 海外発の Shopify 在庫管理アプリは日本商習慣に合わない?(公開予定)