2019年、サンクスギビング明けの火曜日。私はカリフォルニア州オンタリオの3PL倉庫のメザニンに立ち、スーパーバイザーが噛みつかれそうな勢いで印刷したピックウェーブを握りしめているのを見ていた。棚に残っていた人気SKUは1,400単位。未処理注文が必要としたのは2,300。計算は合わない。現場の誰もがそれを知っていた。
「で、誰を切るんだ?」と彼は私に聞いた。
この問い——まさにこの静かなパニックの口調で——は、私が働いたすべての倉庫で出てきた。そして正直なところ、ほとんどの現場に本当の答えはない。デフォルトはFIFO(先入先出)だ。先に入った注文が埋まり、後から入った注文が切られる。一見フェアだ。だがこれは、欠品対応として単独で最もコストの高い方法でもある。私はこれが1四半期で6桁の損失を出した企業を見てきた。
FIFOがフェアに感じるのは、注文に対しては本当にフェアだからだ。だがあなたがやっているのは公平性のビジネスではない。P&L(損益)のビジネスだ。
在庫を誰に回すかを実際に決める5つのファクター
倉庫のOMSに割当ルールを設計する手伝いをするとき、私はすべての未処理注文を5つの要素でランク付けさせる。3つでも10個でもなく、5つだ。実務では重み付けの順序はこうなり、この順序が重要だ:
1. 欠品した場合の契約ペナルティ。 これが一番歯が立つ。卸の大口顧客の中には、納期遅延に請求額の5–10%を課すところがあり、大手量販店のEDIプログラムではさらに高くなるケースもある。マーケットプレイスの注文はここでは緩い——納期遅れはセラーの評価を傷つけるが、直接請求はされない。OMSはチャネルごとに「納期遅れが実際にドルでいくらかかるか」を知っていなければならない。
2. 消費者への納期約束。 2日配送で売った注文は、標準5〜7日で売った注文より危険だ。2日配送の注文を切れば、売上を失うだけではない——顧客が金を払った約束を破ることになる。十分な数を破れば、アカウントレベルの指標が下がり、バイボックスや検索順位が数週間スロットルされる可能性がある。それは、1件の失注をはるかに上回る目に見えないダメージだ。
3. 顧客ランク。 VIPやリピーターはリストではなくポートフォリオだ。40ドルの注文の単発客を失う痛みは1回きりだ。今年30回注文した顧客を欠品させれば、未来にあと30回痛む。OMSは上位10%の顧客にフラグを立てて保護すべきだ——ほとんどのシステムはシンプルなセグメントルールでできる。
4. 注文のマージン。 注文を切らなければならないなら、安い方を切れ。冷たく聞こえるのは承知だが、200ドルのマージンの注文と20ドルのマージンの注文は、ビジネスにとって道徳的に同等ではない。20ドルの注文を守って200ドルの注文を切れば、間違った顧客を喜ばせたことになる。
5. 注文の古さ。 FIFOは第1のファクターではない。第5のファクター——タイブレーカーだ。最初の4つがほぼ互角のときだけ使え。なぜこれを先頭に置くのが罠なのかは後で説明する。
実務メモ:これらは漠然とした指針ではなく、OMSの割当エンジンに明示的な重みとして設定すること。たとえばペナルティコスト35%、納期約束25%、顧客ランク20%、マージン15%、注文の古さ5%、といった具合だ。正確な数字はチャネルミックス次第——一度チューニングしたら、危機の最中には触るな。
誰もカット前に計算しない数字
2019年の繁忙期の実際のトレードオフを出そう。匿名化しているが、数字は本物だ。
注文A:小売チェーンの補充注文、800単位、請求額64,000ドル。契約には納期遅延のチャージバック8%——5,120ドル——があり、このバイヤーは過去に支払条件を渋ったことがある。決して仲の良い相手ではなかった。注文のマージンは薄く、約3,200ドル。
注文B:Amazonと自社サイトの個人注文向け900単位、売上は約58,000ドル。直接のチャージバックはないが、2日配送が約束されていた。マージンは約11,000ドル。そしてリピーター客だ——データによれば約40%が90日以内に再購入する。
FIFOはこう言った:Aを先に埋めろ(先に来たから)、残りの600単位をBに回し、残りの顧客には「すみません、近日入荷します」と言え。
我々はそうしなかった。Aをまるごと切った——5,120ドルのチャージバックを払って——Bを完全に埋めた。私がGMに示した理屈はこうだ:チャージバックは既知の上限付きコストだった。900人の直販客との2日配送の約束を破るコストは未知で上限なしだった。もしその5%が二度と戻ってこなければ、平均注文額とリピート率から、生涯価値で20,000ドル以上を失う。しかもマージンはBが3倍以上だった。
倉庫は5,120ドルを払って20,000〜31,000ドルを守った。こういう計算こそ、OMSが朝6時に自動でやってほしいもので、印刷したウェーブを手にしたスーパーバイザーと夕方6時に言い争いたいものではない。
ここで注意が2つ。第一に、チャージバック条件やプラットフォームの納期遅延ペナルティは変わる——昨年の数字を信じず、必ず顧客やプラットフォームの最新の公表ポリシーを確認すること。第二に、この計算はマージンとリピート率のデータが実際にOMSの中にあることを前提にしている。誰かのスプレッドシートの中にあるなら、あなたにあるのは割当システムではなく、起きるのを待っている議論だ。
倉庫がやらかす3つのパターン
デフォルトルールとしてのFIFO。 なぜ間違いかは説明したが、心に残るバージョンで言い直そう:FIFOが最適化するのは注文の古さであり、注文の古さは大事なもの——マージンでも顧客価値でもペナルティリスクでも——のどれとも相関しない唯一のファクターだ。午後11時に入った巨大な卸注文は、午前8時に入った1個の注文に必ず負ける。これは公平さではなく、礼儀正しい顔をした自傷行為だ。FIFOはタイブレーカーとしてだけ残せ。
こっそり借りられる安全在庫。 これは私が個人的に火傷した罠だ。2021年のある施設で、立派な割当ルールを構築した——そしてスーパーバイザーたちが軽い欠品のたびにVIP注文を埋めるために安全在庫を「一時的」に借り始めた。本当の欠品が来たとき、安全在庫はフィクションだった。ルールは「VIP用に5%を確保」と言っていたが、棚は違うことを言っていた。教訓:安全在庫はOMSレベルでロックし、例外の権限を明示的に——1人だけ、ログ記録、タイムスタンプ付き。借用が見えなければ、毎日起こる。

危機時の手動オーバーライド。 欠品が起きるたびに、パニックになったVPが現場に電話して「これを先に埋めろ、重要だ」と言い出す。1回のオーバーライドではシステムは壊れない。だが私の経験では、ルールが破られるのを見たチームはルールを信頼しなくなる——そして次の四半期までには、欠品対応は一番声の大きい人が仕切ることになる。私のルール:オーバーライドは許可するが、必ず理由コード付きでOMSに入力し、割当レポートは翌朝レビューする。オーバーライド率が欠品量の10%を超えたら、ルールが壊れているので作り直しだ——作業員を責めるな。
本番投入前:チェックリスト
割当ルールを本番に載せるとき、私はこのリストを回す。1つでもNoがあれば、スイッチは入れない:
- OMSのすべてのチャネルに、納期遅延ペナルティまたはチャージバック率が文書化され、最終確認日が記録されている
- 納期約束(2日 vs. 標準 vs. エコノミー)がすべての注文のフィールドとして、割当実行前に埋まっている
- 顧客ランクのセグメントがOMSに存在し、少なくとも週1回更新されている
- 注文ごとのマージンが自動計算されている——ループの中にスプレッドシートはない
- 割当が固定スケジュールで実行され(例:各ウェーブごと、または2時間ごと)、すべての判断がルールバージョン付きでログに残る
- 安全在庫の確保がシステムで強制され、例外は指名された1人に限定・記録される
- 欠品アラートのしきい値がある——1,400対2,300になってからではなく、なる前にOMSが警告する
- 履歴データでのドライランを1回:前四半期の欠品日をリプレイし、ルールならどうしたかと実際の対応を比較する
最後の1つが、最も価値のある1時間だ。2022年にクライアントでやったとき、リプレイの結果、ルールがピークの1週間だけで約90,000ドルを救えたはずだと出た。GMはその後、質問をやめた。
明日の朝
あなたのOMSに今日割当ルールがないなら、今週中に5つのファクターを全部作ろうとするな。1つだけやれ:先月の注文を引っ張り出し、欠品したものにフラグを立て、注文ごとのマージンでソートする。低マージンの注文が何件埋まり、高マージンの注文が何件切られたかを見ろ。その数字——いくつであれ——がFIFOのコストだ。それが割に合ったかどうか、自分で決めろ。
棚はまた空になる。いつもそうだ。問題は、朝6時にシステムが誰を切るか決めるのか——それとも夕方6時にあなたがパニックで決めるのか、だけだ。
英語版からの翻訳。内容に相違がある場合は英語版を優先します。










