問題:EOQ の数学は美しかった — それでも欠品は起きた
サプライチェーンを学んだ人なら誰でも経済発注量の公式 √(2DS/H) を暗記している。しかし倉庫で実際に補充管理をしている人なら誰でも知っている:EOQ が答えるのは「コストを最小化するためにどれだけ発注すべきか」であって、「欠品を防ぐためにいつ発注すべきか」ではない。実際の需要は変動し、サプライヤーのリードタイムはぶれる。この公式の2つの「定数」の仮定は、現実に触れた瞬間に崩れる。
私たちは「2週間分持とう」という感覚で安全在庫を、「100 個で発注」という勘で発注点を設定した倉庫を何度も見てきた — 結果は欠品と過剰在庫の両立だ。この記事では、高度な数学は不要で、表計算ソフトで回せる実践的なアルゴリズムを紹介する。「いつ補充し、どれだけ補充するか」に答えるものだ。
方法:動的安全在庫の 4 ステップアルゴリズム

ステップ 1:需要のばらつきを定量化する (σd)
安全在庫は不確実性に対する保険であり、保険料は不確実性の大きさで決まる。ある SKU の過去 6–12 か月の日別出荷数をとり、日別需要の標準偏差 (σd) を計算する — Excel の標準偏差関数ひとつで出る。
ばらつきを 3 つのバンドに分類する:
| 変動係数 (CV = σd / 平均日別需要) | ばらつき | 戦略 |
|---|---|---|
| < 0.5 | 低い(安定品) | 安全在庫は薄くてよい;むしろリードタイムのばらつきを見る |
| 0.5–1.0 | 中くらい(定番品) | 標準の公式;月次で見直し |
| > 1.0 | 高い(販促品・季節品) | 公式 + 人の判断;大型販促の前に別計画を立てる |
ステップ 2:リードタイムのばらつきを定量化する (σL)
需要のばらつきは計算するのにリードタイムのばらつきを計算しない倉庫は多い — 欠品の背後にある最大の盲点だ。同じ SKU の実際のリードタイム(発注から入荷まで、日数)を過去 6 か月分とり、リードタイムの標準偏差 (σL) を計算する。
現場の経験則:リードタイムのばらつきは需要のばらつきより重要なことが多い。ある自動車部品倉庫では、需要は盤石の安定(CV = 0.3)なのに、サプライヤーのリードタイムが 7 日から 21 日までぶれ(σL = 4.2 日)、安全在庫のほとんどが実はリードタイムに対する保険だったという SKU があった。
ステップ 3:公式 — 両方のばらつきをカバーする安全在庫
標準的な実践公式(需要とリードタイムが独立と仮定):
安全在庫 SS = Z × √( L × σd² + d² × σL² )
- Z:サービスレベル係数。95% → 1.65;97.5% → 1.96;99% → 2.33。すべてに 99% を使わないこと — 売れ筋の A 品は 97.5–99%、テール(死に筋)の C 品は 90%(Z = 1.28)で十分であり、浮いた資金は大きい。
- L:平均リードタイム(日);d:平均日別需要;σd、σL は上記。
発注点 ROP = d × L + SS:利用可能在庫(手持ち + 輸送中 − 引当済み)が ROP を下回ったら補充をかける。
計算例:d = 50 個/日、σd = 15;L = 10 日、σL = 3 日;目標サービスレベル 97.5%(Z = 1.96)の SKU。SS = 1.96 × √(10×225 + 2500×9) = 1.96 × √24750 ≈ 308 個。ROP = 50×10 + 308 = 808 個。この倉庫は勘で 200 個の安全在庫を積み、ピーク期に 2 回欠品していた;308 個にしてからは通年で欠品ゼロ、在庫回転日数はわずか 2 日伸びただけだった。
ステップ 4:定期的に更新する — 式は腐らないが、パラメータは腐る
需要もリードタイムも生き物であり、パラメータは更新しなければならない。推奨の見直し頻度:
| SKU ランク | 見直し頻度 | 臨時見直しのトリガー |
|---|---|---|
| A | 月次 | 大型販促の 6 週間前、サプライヤー変更、需要が 50% 急増したとき |
| B | 四半期 | 上に同じ |
| C | 半期 | 3 か月連続で動きゼロ → デッドストック処理へ |
実践のヒント:SKU ごとに表計算の 1 行に d、σd、L、σL、Z の列を持ち、SS と ROP は自動計算する。毎月 1 日にデータを更新し、値が 20% 以上動いた行をフラグして人が確認する。プランナー 1 人が月あたり半日で 5,000 SKU を回せる。
現場事例:E コマース倉庫の「欠品率を半分に」プログラム
背景:ネバダ州の E コマース倉庫で、1 日あたり 8,000 件の出荷、約 2,500 SKU を自社保有、欠品率は 3.2%(優秀ラインは 1% 未満)— 在庫回転は 42 日(高め)。パラドックス:欠品と過剰在庫の同時発生。典型的な「大事なものが足りず、どうでもいいものが多い」状態だ。
診断:安全在庫はすべてカテゴリー担当の勘で設定されていた。売れ筋は低く(過剰在庫を恐れて)、テールは高く(「安いから多めに持て」)。
アクション:4 ステップアルゴリズムで全パラメータを再計算し、SKU を ABC × XYZ の 9 マスに分類(ABC は出荷金額、XYZ は需要変動)、AX 品(高価値・低変動)の安全在庫を削り、CZ 品(低価値・高変動)を 7 日分のカバーまで切り詰めた。WMS で ROP 自動アラートを稼働。
結果:6 か月後、欠品率は 3.2% から 1.1% に低下、回転は 42 日から 31 日に改善し、約 $450,000 の資金を解放した。カテゴリー担当の感想:「在庫管理が下手だったんじゃない — 勘でやっていただけだった。」
避けるべき落とし穴
- 「いつ」を EOQ で決めない。 EOQ はロットサイズを決め、ROP はタイミングを決める。2つはパートナーであり、代替ではない。ROP のない EOQ はシートベルトの半分だ。
- 新 SKU に履歴はない — 公式を無理に使わない。 まず同等の成熟 SKU のパラメータを 70% で使い、最初の 3 か月は手動で見守り、データがたまってから公式に切り替える。新 SKU の欠品のほとんどは、「データなし」が「安全在庫なし」を意味していたせいで起きる。
- 「利用可能在庫」に輸送中を含める。 ROP は手持ち + 輸送中 − 引当済みと比較する。手持ちだけを見ると二重発注が起きる — こうしてある倉庫は 30% も過剰発注した。
- すべての SKU に同じ Z を使わない。 全 SKU に 99% のサービスレベルは聞こえがいいが、その代償は C 品のテール在庫の安全在庫倍増だ。Z はランク別に段階付けし、節約分を A 品に投資すれば、全体のサービスレベルは上がる。
まとめ
EOQ を超える実践数学は 3 つの文に集約される:ばらつきをデータで定量化する(σd と σL の両方)、両方に一度に保険をかけ、パラメータを月次で更新する。 高価な計画システムは要らない — Excel と WMS のアラートで回せる。覚えておいてほしい:安全在庫は「多ければ多いほどいい」毛布ではなく、フィット感が大事な保険だ。多すぎれば保険料の無駄、少なすぎれば販売機会の損失。まずは上位 100 SKU から始め、1 か月回して結果を見て、それから展開しよう。
英語版からの翻訳。内容に相違がある場合は英語版を優先します。






