まず結論から言おう。FIFOで運用している食品倉庫は、FEFO(first-expired, first-out:期限の近いものから先に出す)で運用している倉庫に比べて、期限切れによる廃棄が通常2~3倍になる。この現象を、私は食品物流の現場で十数件以上見てきた。そしてこれは、たいていの場合ソフトウェアの問題ではない。ほとんどのWMSは期限日順に在庫を引き当てられる。問題は、入力される期限データがガバガバで、出力されるアラートを誰も見ていないことだ。
FIFOとFEFOは「ほぼ同じ」と思われがちだ。だが違う。先に入ったものが先に期限を迎えるとは限らない。3月に入荷した同じSKUが翌年6月まで大丈夫な一方で、5月に入荷したロットが今年11月に切れる――食品倉庫では毎日起こっていることだ。FIFOで出荷すれば、11月期限のロットは奥に残ったまま、6月期限のロットが出ていく。誰かが気づいた頃には、パレット単位の廃棄が確定している。ロサンゼルス郊外の冷凍食品3PL(約60,000平方フィート)は数年前、この授業料を高く払った。冷凍エビのパレットが、期限切れから2か月放置されてからようやく見つかったのだ。数万ドルが、そのまま廃棄行き。なぜか。同社のシステムには期限フィールド自体がなく、ピッキングは入荷日だけで動いていた。
期限データがガバガバなら、FEFOは茶番だ
FEFOは2つのデータで成り立つ。ロット番号と期限日だ。WMSでは、入荷時にこの2つを必須にすること。期限がなければ入荷させない。これが鉄則だ。私が見た一番ひどい抜け道はこうだ。入荷が立て込んでいると、システムが期限入力をスキップできて、自動で2099-12-31が入る。6か月後には、数千件の在庫レコードが「2099年に期限切れ」となり、FEFOアルゴリズムはフィクションをソートしている。そんなもの、ないのと同じだ。
日付フォーマットも統一が必要だ。仕入先のラベルはバラバラで、ある箱は06/08/26、次の箱は08-JUN-2026、製造日しか印字していないものもある。入荷SOPは1つの約束を決めて固定すること。年-月-日、期限日のみ、製造日は使わない。受入担当に選ばせるために「製造日」フィールドと「期限日」フィールドを両方開けておくな。私はこれで痛い目を見た。半分の作業者は一方のフィールド、残りはもう一方に入力し、在庫の半分でシステムの期限ソートが狂う。
入荷時には残存 shelf life(賞味・消費期限の残り)の検証ルールも必要だ。残りが少なすぎる商品は受け入れ拒否か、品質保留(QA hold)に回す。「少なすぎる」の線引きはカテゴリーによる。12か月ものの常温商品なら、残りが3分の1を切ったらアウト。45日もののチルド商品なら、半分を切ったら要注意だ。万能の数字はない。カテゴリーと回転速度で決め、入荷SOPに書き込み、実際の自社のシステムとオペレーションに合わせる。ポイントは、壁のラミネート掲示ではなく、システムのハードな検証にすることだ。掲示は受入担当を止めない。ポップアップは止める。
もう一つの罠。仕入先の混合ロットだ。同じパレットに2つの期限日がある場合、2つのロットとして別々に受け入れなければならない。手っ取り早く1つにまとめたら、システムが見える期限日は1つだけになる。パレットのもう半分はFEFOから見えなくなる。時間節約のためにこれをやった倉庫を私は見たことがある。パレットの期限間近の半分が後回しにされ続け、気づかれないまま期限切れになった。

誰も動かないアラートは、ただのスパムだ
データがきれいになったら、警告が必要だ。私は3段階で運用する。期限まで90日、60日、30日。WMSが毎日期限レポートを生成し、担当者にプッシュする。段階と日数はカテゴリーごとに変えるべきだ。チルドと常温で同じマニュアルは使えない。だが、ここからが誰もやらない部分だ。すべてのアラートに、担当者とアクションを付けること。90日なら「営業に連絡して動かす」。60日なら「値引きか転送の計画」。30日なら「廃棄承認を開始」。アクションの付いていないアラートはスパムであり、3か月もすれば誰も読まなくなる。
一番設定が難しいのは、出荷の引き当てロジックだ。期限の近い順に純粋に引き当てるのは、理論上は最適で、現実的には悲惨だ。ピックパスがバラバラになり、ピッカーは1つの注文のために倉庫の半分を歩くことになる。これが本当のトレードオフだ。期限優先か、ピック効率か。私の妥協案はこうだ。まず期限順に引き当てる。ただし同じウェーブ内では、期限日が数日の範囲に収まるロットのピックをまとめてよい。数日なら問題ない。数か月なら問題だ。このウィンドウはカテゴリーで調整する。チルドは狭く、常温は広く。理論上の最適を追うな。ピッカーが実際に守る90点のプランは、誰も実行しない100点のプランに勝つ。
もう一つ、動くFEFOと飾りのFEFOを分ける設定がある。期限間近の在庫を、奥の保管場所で死なせないこと。60日のアラートが鳴ったら、その在庫をフォワードピックゾーン(梱包に一番近く、一番取りやすい場所)へ移すよう、システムが推奨すべきだ。物理的な配置とFEFO引き当ての二重ロックだ。引き当てロジックだけ設定して、スロット戦略を設定しない倉庫は多い。その結果、期限間近のパレットはリザーブエリアの奥に眠ったまま、ピッカーは手近なものを取る。システムは正しかった。人間の性が勝ったのだ。
期限間近の在庫はどうするか。出口は3つだ。値引き、寄付、廃棄。アウトレットや社員販売で値引きし、回収できるものは回収する。米国では寄付はBill Emerson Good Samaritan Food Donation Act of 1996(1996年ビル・エマーソン善きサマリア人食品寄付法)で保護されている。期限切れ前の食品の寄付者を原則として責任から守り、税制優遇の対象にもなり得る。詳しくは税理士に相談を。本当に救いようがなくなったら、ダブルサインオフ、写真記録、適正な方法での廃棄だ。廃棄のワークフローもシステムに入れること。誰が申請し、誰が承認し、どう廃棄し、写真はどこに置くのか。プロセスがシステムになければ、そのプロセスは存在しないのと同じだ。
補足だが、FEFOは食品だけのものではない。医薬品や化粧品も同じロジックだ。違うのは、アラートのウィンドウがよりタイトで、廃棄のコンプライアンスがより厳しいことだけだ。
そして、ほとんどの倉庫が閉じ忘れているループがある。サイクルカウントだ。数量を数えるだけでなく、期限日を現物のラベルと照合すること。ラベルとシステムの不一致は、入荷時や移動時に誰かがプロセスを迂回した証拠だ。期限の不一致を、独自のカウント差異カテゴリーとして記録し、毎月レビューする。カウントは、データが手にする最も正直な鏡だ。
明日の朝、WMSで1つクエリを回してほしい。期限日が空欄の在庫レコード、あるいは2099-12-31のようなプレースホルダーが何件あるか。まずこの穴を塞ぐこと。これなしにFEFOは1つも動かない。
英語版からの翻訳。内容に相違がある場合は英語版を優先します。










