Media > AI活用ユースケース > 品質管理 > 在庫の使用期限を毎日点検して、期限切れと先入先出の乱れを洗い出す

在庫の使用期限を毎日点検して、期限切れと先入先出の乱れを洗い出す

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

ロットごとの在庫数と期限、直近の出荷実績を入力に、そのロットを期限までに使い切れるかを見積もり、「期限切れの見込み」「先入先出の乱れ」「動きの止まったロット」に区分して、対応が要るものだけを毎日の一覧にします。担当者の作業は、期限の一覧を目で追うことから、示された順に手を打つことに変わります。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Make/n8n/Power Automate/Zapier
対象業界
医療/小売/物流/製造/飲食
対象部門
品質管理/物流
対象業務
内容確認・チェック/集計・分析
主な課題
データ分析に時間がかかる/属人化している/期限・対応漏れが起きる
AIで行う処理
予測
主な効果
入力漏れ削減/工数削減/機会損失防止
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
ノーコード連携(中)
人間の確認
必須
現在工数
60h/月
AI導入後
17.5h/月
想定削減
71%
年間削減
510h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 在庫管理担当が、毎朝WMSから「期限まで60日以内」のロット一覧を出す
  2. Excelに貼り付け、SKUごとに並べ替える
  3. 販売管理システムから、そのSKUの直近の出荷実績を調べる
  4. 在庫数と出荷ペースから、期限までに使い切れるかを頭で計算する
  5. 使い切れないと判断したものを、別のシートへ書き出す
  6. 営業へ「このロットを優先して出してほしい」と連絡する
  7. それでも残りそうなものは、値引き販売や用途変更を検討する
  8. 期限が切れたものは廃棄の手続きに回す
  9. 月末に、廃棄した金額を集計する
導入後(After)
  1. 自動毎朝、WMSからロット別の在庫(SKU・ロット・数量・期限・入庫日・保管場所)を取り込む
  2. 自動販売管理システムから、SKUごとの直近12週の出荷実績を取り込む
  3. 【計算】 SKUごとの平均出荷ペースと、そのばらつきを算出する
  4. 【計算】 ロットごとに「このロットの番が来るまでの日数」を、先入先出の順で算出する
  5. 自動期限までに使い切れるかを見積もり、区分を判定する
  6. 自動先入先出の乱れ(新しいロットから出ている棚)を検出する
  7. 自動他拠点に同じSKUの不足があるかを照合する
  8. 自動対応が要るものだけを、期限までの日数と金額の大きい順に一覧にする
  9. 人在庫管理担当が内容を確かめ、営業への連絡や値引きの検討を決める
  10. 人拠点間の移動が有効なものは、拠点間で調整する
  11. 自動前日の指摘が今日どうなったかを追跡する
各工程の詳しい説明を読む
  1. 在庫管理担当が、毎朝WMSから「期限まで60日以内」のロット一覧を出す
  2. Excelに貼り付け、SKUごとに並べ替える
  3. 販売管理システムから、そのSKUの直近の出荷実績を調べる
  4. 在庫数と出荷ペースから、期限までに使い切れるかを頭で計算する
  5. 使い切れないと判断したものを、別のシートへ書き出す
  6. 営業へ「このロットを優先して出してほしい」と連絡する
  7. それでも残りそうなものは、値引き販売や用途変更を検討する
  8. 期限が切れたものは廃棄の手続きに回す
  9. 月末に、廃棄した金額を集計する

問題は6つあります。

(a)60日以内の一覧が毎日200件前後出る。 そのうち大半は通常の出荷で使い切れます。200件を毎日見て、20件を選び出す作業に時間が消えています。

(b)出荷ペースの確認が手作業。 SKUごとに販売管理システムを開いて直近の出荷を見ます。1件30秒でも、200件で100分です。

(c)判断が担当者の経験に依存する。 「この時期はこの商品が動く」という知識が、3名それぞれの頭の中にあります。担当が休むと、その日の判定が甘くなります。

(d)先入先出の乱れが見えない。 古いロットが残っているのに新しいロットから出荷されている状態は、古いロットの期限が60日を切るまで一覧に出ません。 そのときには手遅れなことがあります。

(e)気づくのが遅く、打てる手が限られる。 期限まで30日を切ってから営業に連絡しても、売り先が見つかりません。90日前なら値引きや別ルートの検討ができました。

(f)拠点をまたいだ融通ができていない。 A拠点で余っているロットが、B拠点では不足していることがあります。拠点ごとに一覧を見ているため、この組み合わせが見つかりません。

(g)判定の記録が残らない。 「使い切れる」と判断したロットが、結果として廃棄になったかどうかが追えません。判断が当たっていたのかを、誰も検証していません。 廃棄額は月末に集計しますが、どの判断が外れた結果なのかは分かりません。

これらの問題は、どれも「量が多い」ことから来ています。 毎日200件を見るという前提があるため、1件にかけられる時間が数十秒しかありません。その中で出荷ペースを調べ、使い切れるかを頭で計算しています。 丁寧に見れば防げたはずの廃棄が、量に押されて見過ごされています。量を減らす——つまり、見るべき件数を200件から20件に絞ることが、この構成の目的です。

  1. 【自動】 毎朝、WMSからロット別の在庫(SKU・ロット・数量・期限・入庫日・保管場所)を取り込む
  2. 【自動】 販売管理システムから、SKUごとの直近12週の出荷実績を取り込む
  3. 【計算】 SKUごとの平均出荷ペースと、そのばらつきを算出する
  4. 【計算】 ロットごとに「このロットの番が来るまでの日数」を、先入先出の順で算出する
  5. 【自動】 期限までに使い切れるかを見積もり、区分を判定する
  6. 【自動】 先入先出の乱れ(新しいロットから出ている棚)を検出する
  7. 【自動】 他拠点に同じSKUの不足があるかを照合する
  8. 【自動】 対応が要るものだけを、期限までの日数と金額の大きい順に一覧にする
  9. 【人】 在庫管理担当が内容を確かめ、営業への連絡や値引きの検討を決める
  10. 【人】 拠点間の移動が有効なものは、拠点間で調整する
  11. 【自動】 前日の指摘が今日どうなったかを追跡する

自動化されるのは「集める」「ペースを出す」「使い切れるかを見積もる」「区分する」「拠点間を照合する」の5つです。残るのは、どう手を打つかの判断と、営業や取引先とのやり取りです。

値引きの判断や、廃棄の決定はさせません。 値引きの幅は、その商品の利益率、取引先との関係、ブランドへの影響で決まります。この構成は、判断に必要な時間を作るところまでです。

02今回想定するシステム構成

構成図
倉庫管理システム(ロット別在庫:SKU / ロット / 数量 / 期限 / 入庫日 / 保管場所)
販売管理システム(出荷実績:SKU / 日付 / 数量 / ロット)
   │
   ▼【トリガー】毎朝 6:00
Zapier
   │
   ├──▶ 2つのデータを取り込み、SKU・ロットで突合
   │
   ├──▶ 【計算処理】平均出荷ペース/ばらつき/このロットの番までの日数
   │
   ├──▶ フィルタ:期限まで120日以内、かつ在庫数量が0でないものだけを通す
   │
   ├──▶ Claude API ── 区分の判定・使い切れるかの見積もり・着眼点
   │       (JSON Schema で出力を固定)
   │
   ├──▶ フィルタ:区分が「対応不要」のものはここで止める
   │
   ├──▶ 他拠点の在庫・不足と照合
   │
   └──▶ 期限監視の一覧(Google スプレッドシート)を作成
   │
   ▼
在庫管理担当が確認 ──【人】営業への連絡 / 値引きの検討 / 拠点間の移動
   │
   ▼
対応の結果を記録 → 翌日の追跡へ
役割想定する製品代替候補
ワークフローZapierMake、n8n、Power Automate
生成AIClaude APIOpenAI API、Gemini API
集計Google スプレッドシートExcel、BIツール
倉庫管理既存のWMS各社の製品
販売管理既存の販売管理システム各社の製品

WMSに期限のアラート機能があるなら、まずその設定を確認してください。 「期限まで◯日で通知」は多くの製品が持っています。自前で組む価値があるのは、「出荷ペースから使い切れるかを見積もる」部分と「先入先出の乱れを検出する」部分です。日数だけで通知する機能では、この2つができません。

Zapier では、この処理は1つのZapとして組めます。Zapはアプリをつなぐワークフローで、トリガーがZapを開始するイベント、アクションがトリガー後に実行される処理です。1つのZapに複数のアクションを続けられます。

フィルタの位置が、この構成では費用に直結します。 Zapier のフィルタは条件による分岐点として働き、条件を満たさない場合はそこでZapが止まり、後続のアクションは実行されません。 8,000ロットすべてをAIへ渡すと費用が読めなくなるため、1回目のフィルタで「期限120日以内」に絞り、2回目のフィルタで「対応不要」を配信から外します。

計算は表計算側で行います。 出荷ペース、ばらつき、日数の計算にAIは要りません。AIにさせるのは、計算結果を区分に当てはめることと、着眼点を出すことです。

03どうやって実装するのか

Step1

処理の起点を決める

毎朝6時を起点にします。始業前に一覧ができ、朝礼で当日の対応を決められる形にします。

前日の出荷が確定した後にしてください。 夜間バッチでWMSと販売管理システムのデータが確定するなら、その完了後に設定します。確定前に動かすと、前日分の出荷が反映されず、ペースの計算がずれます。

日次にする理由があります。 期限は毎日1日ずつ迫ります。週次にすると、最大6日分の判断が遅れます。特に期限まで30日を切ったロットでは、この差が大きくなります。

もう1つの起点として、入庫があったときに、その品目の先入先出の状態を確認する形が考えられます。新しいロットが入ったのに古いロットが残っている棚を、その時点で検出できます。これは運用が回ってから足してください。

Step2

入力データを集める

データ中身取得元
ロット別在庫SKU、ロット番号、数量、使用期限、入庫日、保管場所(拠点・棚)WMS
出荷実績SKU、出荷日、数量、出荷したロット、出荷先の区分販売管理システム
SKUマスタ品名、仕入単価、荷姿、期限の種類(賞味期限/使用期限/推奨期限)販売管理システム
出荷の制約取引先ごとの「残存期限の要求」(例:賞味期限の3分の1以上残っていること)営業部の管理表
拠点マスタ拠点コード、拠点間の移動にかかる日数と費用物流部の管理表
前日の指摘前日に対応が要ると判定したロットと、その後の対応期限監視の一覧
季節性の情報SKUごとの、過去2年の月別出荷量販売管理システム
Step3

データの取得方法を決める

ロット別在庫: WMSから毎日エクスポートします。ロット番号と期限が紐づいていることが前提です。 紐づいていない場合、この構成は成立しません。ロット管理の導入が先です。

出荷実績: ここで重要なのは、「どのロットを出荷したか」が記録されているかです。SKU単位でしか出荷が記録されていないと、先入先出の乱れが検出できません。

記録の粒度できること
SKU単位のみ使い切れるかの見積もりはできる。先入先出の乱れは検出できない
ロット単位両方できる

ロット単位の記録がない場合でも、この構成の半分は動きます。 先入先出の検出を諦めて、期限切れの見込みだけを扱う形にしてください。

出荷の制約: これを見落とすと、判定が甘くなります。小売のチェーンによっては「賞味期限の3分の1以上が残っていること」を納品の条件にしています。この場合、期限まで残り30日でも、賞味期間が90日の商品なら納品できません。 実質的な期限は、暦の期限より早く来ます。

出荷の制約は、次の形で持ってください。

列例
取引先◯◯チェーン
制約の種類残存期限の割合
内容賞味期間の3分の1以上が残っていること
対象SKU全品
起点納品日

取引先ごとに違うことが厄介です。 同じロットでも、A社には納品できてB社には納品できないことがあります。この場合、「どの取引先に出す予定か」によって実質的な期限が変わります。 出荷の予定が立っていない段階では、もっとも厳しい取引先の条件で見るのが安全です。

季節性の情報: 過去2年の月別出荷量を使います。「このSKUは12月に出荷が3倍になる」と分かれば、11月時点で余っていても問題ないと判断できます。 逆に、繁忙期を過ぎた品目は厳しく見る必要があります。

ただし、季節性の補正は使いすぎないでください。 「12月に3倍になるはず」という見込みで様子を見た結果、実際には伸びずに廃棄になる、という事故が起きます。補正は、区分を1段階緩めるまでに留めてください。 「期限切れ確実」を「対応不要」にまで動かす使い方は危険です。

拠点マスタには、移動にかかる日数と費用を必ず入れてください。 拠点間の移動を勧めるには、移動の日数分だけ期限に余裕が要ります。移動に3日かかるなら、実質的な期限の3日前までに判断しなければなりません。 費用も同様で、移動費が値引き販売の損失を上回るなら、移動する意味がありません。

Step4

AIへ渡す前に整形する

  1. 対象の絞り込み … 期限の設定がない品目、在庫数量が0のロット、出荷停止中の品目を除きます
  2. 実質的な期限の算出 … 暦の期限から、出荷の制約(残存期限の要求)を引いた日付を出します。以後の判定はこの日付で行います
  3. 出荷ペースの算出 … 直近12週の出荷量から、1日あたりの平均と標準偏差を出します。欠品で出荷できなかった期間は除外します。 含めるとペースが実態より低く出ます
  4. 先入先出の順位づけ … 同じSKUのロットを期限の早い順に並べ、「このロットの前に何個あるか」を出します
  5. 季節の補正 … 過去2年の同月の出荷量と直近12週の平均を比べ、補正の係数を出します。この係数も表計算で出し、AIには渡すだけにします
Step5

AIに処理させる

計算処理にさせること:

処理式・内容
平均出荷ペース直近12週の出荷量 ÷ 稼働日数
ばらつき週次出荷量の標準偏差 ÷ 平均
このロットの番までの日数(このロットより前の在庫数量)÷ 平均出荷ペース
このロットを使い切るまでの日数上記 +(このロットの数量 ÷ 平均出荷ペース)
実質的な期限までの日数実質的な期限 - 今日
余裕日数実質的な期限までの日数 - 使い切るまでの日数
先入先出の乱れ直近30日の出荷に、より新しいロットが含まれているか

AI(Claude API)にさせること:

処理内容
区分の判定期限切れ確実/期限切れの見込み/先入先出の乱れ/動きが止まっている/対応不要
見積もりの確からしさ出荷のばらつきと季節性から、見積もりをどれだけ信用できるか
着眼点担当者が最初に確かめるべきこと
拠点間の照合の示唆他拠点に不足がある場合の指摘
複数の区分が重なる場合の整理「先入先出が乱れており、かつ期限切れの見込み」といった状態の説明

金額の計算も、廃棄の判断もさせません。 廃棄見込み額は「数量 × 仕入単価」の掛け算です。AIに計算させる理由がありません。

計算とAIをこう分ける理由は、再現性のためです。 余裕日数が「マイナス12日」であることは、誰が計算しても同じ結果になります。この数値がぶれると、判定の根拠そのものが信用できなくなります。 一方、「出荷のばらつきが大きいので、この見積もりは幅を持って見るべき」という判断は、いくつもの条件を合わせて言うものです。そこにAIを使います。

「見積もりの確からしさ」を出させることが、この構成の実用性を決めます。 余裕日数がマイナス5日でも、出荷が安定している品目なら見積もりどおりに進みます。ばらつきが大きい品目では、マイナス5日はほとんど意味がありません。 数値だけを示されると、担当者は同じ重みで受け取ってしまいます。「この見積もりはどれくらい信用できるか」を添えることで、確認の優先順位がつけられます。

「着眼点」の出力も、実務では効きます。 「このSKUは先月から出荷が半減している。販売終了の予定がないか営業に確認」といった一文があると、担当者はすぐ動けます。区分だけを示されても、次に何をすればよいかは分かりません。

Step6

指示内容を固定する

あなたは在庫管理を支援する担当者です。
下のロットについて、期限までに使い切れるかを見て、区分と着眼点を出してください。

【厳守事項】
- 数値は下に与えた計算済みの値をそのまま使ってください。
  独自に計算し直さないでください。四則演算をしないでください。
- 区分は、下の一覧からのみ選んでください。複数に当たる場合はすべて挙げてください。
  どれにも当たらない場合は "対応不要" としてください。
  **無理に問題を見つけようとしないでください。大半のロットは対応不要です。**
- 見積もりの確からしさは、下の「出荷のばらつき」と「季節の補正係数」から判断してください。
  ばらつきが大きい、または季節の補正が1.5倍を超える場合は "low" にしてください。
- 着眼点は、担当者が最初に確かめるべきことを1〜2点書いてください。
  **データから読み取れる事実に基づいて書き、需要の理由を推測しないでください。**
  例:「直近4週の出荷が平均の4割に落ちている。取引先の発注が止まっていないか確認する」は可。
  例:「競合の新商品の影響と考えられる」は不可。
- 値引きの幅、廃棄すべきか、いつ廃棄するかを書かないでください。
  判断は在庫管理担当と営業が行います。
- 廃棄見込み額を計算しないでください。金額は後段の処理で出します。
- 「至急」「危険」といった強い語を使わないでください。
  期限までの日数と余裕日数を示せば、緊急度は読み手が判断できます。

【区分の一覧】
期限切れ確実 ... 余裕日数がマイナスで、通常の出荷では使い切れない
期限切れの見込み ... 余裕日数が14日未満で、出荷のばらつきによっては間に合わない
先入先出の乱れ ... より新しいロットが直近30日に出荷されており、このロットが残っている
動きが止まっている ... 直近30日の出荷が0、または平均の2割未満
対応不要 ... 上記のいずれにも当たらない

【ロットの情報】
{lot_info}

【計算済みの値(平均出荷ペース / ばらつき / 番までの日数 / 使い切るまでの日数 / 実質的な期限までの日数 / 余裕日数)】
{metrics}

【季節の補正係数(過去2年の同月と直近12週の比)】
{seasonality}

【先入先出の状況(直近30日に出荷されたロットの一覧)】
{fifo_status}

【他拠点の同じSKUの在庫と不足】
{other_sites}

【前日のこのロットの判定と対応】
{previous_status}

「無理に問題を見つけようとしない」の1行が、この構成でもっとも重要です。 これを書かないと、3,000件すべてに何らかの指摘が付きます。指摘が3,000件出れば、担当者は読まなくなります。 大半のロットが「対応不要」であることが正常です。

「需要の理由を推測しない」も必須です。 出荷が落ちた理由は、競合かもしれませんし、取引先の在庫調整かもしれませんし、単に発注のタイミングかもしれません。データからは分かりません。 推測を書くと、それを前提に営業が動いてしまいます。

「強い語を使わない」の指示も効きます。 「至急」が毎日20件並ぶと、その語の意味がなくなります。日数を示せば十分です。

Step7

出力形式を固定する

{
  "site_code": "",
  "sku": "",
  "sku_name": "",
  "lot_no": "",
  "quantity": 0,
  "expiry_date": "",
  "effective_expiry_date": "",
  "categories": [
    { "category": "", "evidence": "" }
  ],
  "days_to_effective_expiry": 0,
  "days_to_consume": 0,
  "slack_days": 0,
  "estimate_confidence": "high | medium | low",
  "confidence_reason": "",
  "fifo_note": "",
  "other_site_note": "",
  "talking_points": [],
  "previous_status": "improved | unchanged | worsened | no_previous",
  "data_gaps": []
}

JSON Schema を指定して出力を固定します。Claude API では output_config の format にJSONスキーマを渡すことで、応答をスキーマに沿った形に制約できます。

effective_expiry_date を別に持つことが、この構成の実務上の要です。 暦の期限ではなく、出荷の制約を差し引いた実質的な期限で判断します。この2つを混同すると、「まだ60日ある」と思っていたものが、実際には出荷できない状態になります。

slack_days(余裕日数)が、判断のもっとも重要な数字です。 「期限まで45日」だけでは判断できません。「使い切るまで38日、余裕7日」と分かれば、手を打つべきかが決まります。

estimate_confidence は、見積もりをどれだけ信用できるかです。出荷のばらつきが大きいSKUでは、余裕日数が7日でも実際には間に合うことがあります。 ここが low のものは、数字より現場の感覚を優先する判断もありえます。

Step8

システムへ連携する

期限監視の一覧をスプレッドシートに作ります。区分ごとにシートを分けます。

シート対象見る人
期限切れ確実余裕日数がマイナス在庫管理担当+営業
期限切れの見込み余裕日数14日未満在庫管理担当
先入先出の乱れ新しいロットから出ている倉庫の現場
動きが止まっている直近30日の出荷が少ない在庫管理担当+営業
対応不要(非表示)上記以外—

各シートの列は次の構成です。

列中身
拠点 / SKU / 品名 / ロットキー
数量 / 仕入単価 / 金額規模。金額は表計算で掛ける
暦の期限 / 実質的な期限2つ並べる
余裕日数並べ替えの基準
見積もりの確からしさhigh / medium / low
着眼点1〜2点
他拠点の状況不足があれば表示
前日の状況improved / unchanged / worsened
対応人が入れる(営業へ連絡/値引き検討/拠点間移動/様子見)
対応日 / 結果人が入れる

「先入先出の乱れ」のシートは、倉庫の現場へ渡してください。 これは在庫管理担当が解決する問題ではなく、棚の配置とピッキングの指示の問題です。担当者が営業へ連絡しても直りません。

WMSへの書き戻しは行いません。 出荷の優先順位を自動でWMSへ反映すると、現場の作業指示が予告なく変わります。変更は人が判断して指示します。

Step9

人が確認する

「対応不要」以外を、在庫管理担当が確認します。

3,000件すべてを確認すると効果が出ません。実際に対応が要るのは、月に300〜500件程度のはずです。 それ以上出るなら、区分の閾値を見直してください。

確認の深さを分けます。

  • 「期限切れ確実」 … 全件。すでに手遅れに近いので、打てる手を急いで決める
  • 「期限切れの見込み」で金額の大きいもの … その日のうちに営業へ連絡する
  • 「先入先出の乱れ」 … 倉庫の現場へ渡す。個別の対応より、棚の配置を見直す
  • 「動きが止まっている」 … 週1回まとめて見る。日次で見る必要はない
  • previous_status が worsened … 前日の対応が効いていない。やり方を変える

確認を速くするための設計が効きます。

  • 余裕日数の少ない順に並べる
  • 金額を併記する(同じ余裕日数なら金額の大きいものから)
  • 暦の期限と実質的な期限を並べて表示する
  • estimate_confidence が low のものに印を付ける
  • 前日の対応内容を併記する(同じ連絡を繰り返さない)
  • 他拠点に不足がある行を色分けする(すぐ打てる手がある)

最後の項目が効きます。 A拠点で余っているロットがB拠点で不足しているなら、値引きも廃棄も要りません。移動するだけです。 この組み合わせを毎日出せることが、この構成の分かりやすい価値になります。

担当者の判断を、必ず記録に残してください。 「営業へ連絡」「様子見」「値引きを検討」のどれを選んだかを、一覧の中で入力できる形にします。別の場所へ書く形にすると、記録されません。

この記録がないと、判断が当たっていたかを後から検証できません。 「様子見」としたロットが廃棄になったのか、使い切れたのか。これが分かって初めて、閾値や見る順番を直せます。 半年分たまれば、「様子見の判断が外れるのはどういう場合か」が見えてきます。

判断を記録する運用は、面倒がられます。 だからこそ、一覧の中で1クリックで選べる形にしてください。入力に10秒かかる仕組みは、3日で使われなくなります。

Step10

例外に対処する

起きること対応
ロットと期限が紐づいていないこの構成は成立しない。ロット管理の導入が先
出荷がSKU単位でしか記録されていない先入先出の検出を諦め、期限切れの見込みだけを扱う
欠品で出荷が止まっていた期間があるペースの計算から除外する。含めるとペースが低く出て、判定が厳しくなりすぎる
新商品で出荷実績がないestimate_confidence を low にする。見積もりを信用しない
季節性が強く、直近12週では読めない季節の補正係数を渡す。補正が1.5倍を超える場合は low にする
出荷の制約(残存期限)がSKUマスタにない暦の期限で判定し、data_gaps に記録する。制約の登録を進める
3,000件すべてに指摘が付く閾値を見直す。「対応不要」が8割以上になる設定にする
同じロットが毎日一覧に出るprevious_status を見る。3日続いたら対応の内容を変える
他拠点への移動が費用に見合わない拠点マスタの移動費用と、廃棄見込み額を並べて表示する
期限が切れたロットが在庫に残っている別枠で出す。廃棄の手続きが止まっている可能性
出荷の制約が取引先ごとに違うもっとも厳しい制約で実質的な期限を出す。緩い取引先へ回せるかは人が判断する
ロット番号の採番規則が拠点で違う拠点+ロット番号をキーにする。SKUをまたいだ突合をしない
Step11

記録を残す

この記録は、廃棄がなぜ起きたかを振り返る材料になります。

  • 日ごとの判定結果(区分、余裕日数、確からしさ)
  • 担当者が取った対応と、その結果
  • 前日からの変化
  • 実際に廃棄に至ったロットと、その直前30日の判定履歴
  • 拠点間の移動で救えたロットと、その金額
  • data_gaps の内容

「廃棄に至ったロットの判定履歴」を必ず残してください。 廃棄が起きたとき、この仕組みで兆候が見えていたかを振り返れます。 見えていたのに対応しなかったなら運用の問題、見えていなかったなら判定の型の問題です。どちらかを特定できます。

「拠点間の移動で救えた金額」も記録してください。 この仕組みの効果を、金額で説明できるようになります。時間の削減より、こちらのほうが伝わります。

04実装レベルの3段階

最小構成:計算済みの数字をチャット画面に貼り付け、区分を判定させる / 判定のみ
半自動化:毎朝2つのデータを取り込み、計算・判定・一覧の作成まで / 集計と判定
本格構成:上記+先入先出の検出+拠点間の照合+前日の追跡+廃棄実績との照合 / 効果の測定まで

半自動化の時点で、1.2分が0.6分程度になります。 集計と出荷実績の確認が消えるためです。本格構成では0.35分になりますが、減るのは記録と追跡の手間です。 拠点間の照合は、本格構成で必ず入れてください。 値引きも廃棄もせずに救える在庫が、ここで見つかります。3拠点あれば、月に数件は出るはずです。 「廃棄実績との照合」も本格構成で入れます。 判定の履歴と、実際に廃棄になったロットを突き合わせると、どの区分の判定が当たっているかが分かります。 「動きが止まっている」から廃棄に至る率が高いなら、そこを重点的に見るべきです。1年分たまって初めて見えます。 段階を飛ばさないでください。 いきなり本格構成を作ろうとすると、先入先出の検出と拠点間の照合で止まります。どちらも、出荷がロット単位で記録されていることが前提です。記録の粒度がSKU単位なら、先にそこを直す必要があります。半自動化までなら、SKU単位の記録でも動きます。 半自動化で止めるという選択も十分にあります。 期限切れの見込みを毎朝出すだけでも、200件を20件に絞る効果は得られます。拠点が1つしかない企業なら、拠点間の照合は不要です。 自社にとってどの機能が効くかを見てから、本格構成へ進んでください。 もう1つの発展の方向は、発注の側へつなぐことです。 期限切れの見込みが繰り返し出るSKUは、発注量が需要に合っていない可能性があります。判定の履歴を発注の担当へ渡せば、発注点や発注量の見直しにつながります。在庫が余ってから対処するより、入れる量を減らすほうが根本的です。 ただし、これは別の業務になるため、この構成の範囲としては「材料を渡すところまで」としてください。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
3,000 件
1件あたり現在時間
1.2 分
1件あたり導入後時間
0.4 分
現在  3,000件 × 1.2分 ÷ 60 = 60 時間/月
導入後 3,000件 × 0.4分 ÷ 60 = 17.5 時間/月
月間削減時間
42.5h
削減率
71%
年間削減時間
510h
年間金額換算(時間単価3,000円)
153万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 使用期限・賞味期限・保管期限のある在庫をロット単位で管理しており、SKUが1,000を超える企業。期限切れによる廃棄が毎月発生している場合。倉庫の担当者が経験で「そろそろ危ない」を判断している場合。先入先出のつもりが、実際には新しいロットから出ている棚がある場合。
向いていない
  1. 期限管理の対象が数十品目で、担当者が全部把握できている規模の場合。倉庫管理システムに期限のアラート機能があり、それで運用が回っている場合。ロット番号での入出庫管理をしておらず、期限がそもそも記録されていない場合(ロット管理の導入が先)。

07最小構成で試す方法

  1. 1拠点を選び、直近3か月で期限切れ廃棄になったロットを30件洗い出す
  2. その30件について、廃棄の60日前・30日前の在庫数と出荷実績を用意する
  3. 表計算で、平均出荷ペースと余裕日数を計算する
  4. 生成AIのチャット画面に計算済みの数字を貼り付け、区分を判定させる
  5. 60日前の時点で「期限切れの見込み」以上と判定されたものが何件あるかを数える

これが、この構成の答え合わせです。

見る点判断
廃棄になった30件のうち、60日前に検出できた件数20件以上なら価値がある。 10件未満なら判定の型を見直す
検出できなかったものに共通する特徴新商品/季節性/取引先の急な発注停止 のどれか
「対応不要」と正しく判定された割合廃棄にならなかったロットを100件混ぜて測る。8割以上でないと実用にならない

3つ目を必ず測ってください。 廃棄になったものを検出できても、廃棄にならないものまで大量に指摘するなら、一覧が使えません。 廃棄にならなかったロット100件を混ぜて、そのうち何件が「対応不要」と正しく判定されるかを見ます。

先入先出の乱れも、この段階で測れます。 直近30日の出荷ログをロット単位で並べ、より新しいロットが先に出ている組み合わせが何件あるかを数えてください。ここが多い倉庫では、期限の判定より先に棚の配置を直すほうが効きます。

出荷の制約(残存期限の要求)の整理も、この段階でやる価値があります。 主要な取引先10社について、納品時に求められる残存期限を一覧にしてください。これがないと、実質的な期限が出せません。

08実装時につまずきやすいポイント

問題対策
3,000件すべてに指摘が付く閾値を調整し、「対応不要」が8割以上になるようにする
暦の期限で判断して手遅れになる実質的な期限を別に持つ。出荷の制約を差し引く
欠品期間を含めてペースが低く出るペースの計算から欠品期間を除外する
新商品で判定が荒れるestimate_confidence を low に固定する
季節性のある商品を誤判定する過去2年の同月と比べた補正係数を渡す
AIが需要の理由を推測する推測を禁止する。データから読み取れる事実だけ
AIが金額や値引きの幅を書く禁止する。金額は表計算で掛ける
全ロットをAIへ渡して費用がかさむ1回目のフィルタで期限120日以内に絞る
「対応不要」まで配信して読まれなくなる2回目のフィルタで配信から外す
先入先出の乱れを在庫管理担当に渡す倉庫の現場へ渡す。棚の配置の問題
同じロットが毎日出続けるprevious_status を見る。3日続いたら対応を変える
拠点間の移動費用を考慮しない移動費用と廃棄見込み額を並べて表示する
WMSへ優先順位を自動反映する反映しない。指示は人が出す
ロット番号と期限が紐づいていないこの構成は成立しない。ロット管理の導入が先
季節性の補正を効かせすぎる補正で動かすのは区分1段階まで
取引先ごとの納品条件を見ていないもっとも厳しい条件で実質的な期限を出す
拠点間の移動日数を考慮しない移動日数分だけ判断を前倒しする
判定の結果を記録していない記録する。当たっていたかを検証できなくなる

「3,000件すべてに指摘が付く」は、導入直後にほぼ必ず起きます。 閾値を厳しくすると全部が引っかかり、緩くすると何も出ません。最初の1か月は、閾値を調整する期間だと考えてください。 目安は、1日の配信が20件前後に収まることです。200件のうち20件。ここが、担当者が丁寧に見られる量の上限です。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 在庫の数量、仕入単価、出荷実績、取引先ごとの納品条件。自社の仕入と販売の状況が読み取れる情報です。

  1. 外部AIへ渡す範囲を絞る … 区分の判定に必要なのは、計算済みの日数と数量です。仕入単価、取引先名、販売単価は不要です。 渡すデータを最小限にしてください
  2. 取引先の納品条件 … 「この取引先は賞味期限の3分の1以上を要求する」という情報は、取引条件そのものです。判定には「実質的な期限」という結果だけを渡せば足ります。 条件の中身をAIへ渡す必要はありません
  3. 外部AIへの入力可否 … 上記を踏まえたうえで、情報管理規程を確認してください
  4. 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
  5. アクセス権限 … 期限監視の一覧には、全拠点の在庫と金額が集まります。閲覧を物流部と関係部門に限定してください
  6. 食品・医薬品の期限の扱い … 期限切れの品の取り扱いには、業種によって法令上の定めがあります。この構成は期限の管理を助けるものであって、法令上の要求事項を満たすことを保証するものではありません。 廃棄の手続きと記録は、自社の品質保証部門の定めに従ってください
  7. AIの判定を根拠に廃棄しないこと … 「期限切れ確実」は見積もりであって、確定ではありません。廃棄の判断は人が行い、その根拠を記録してください
  8. 担当者の評価に使わないこと … 廃棄額は、需要の変動や仕入の判断にも左右されます。在庫管理担当の能力だけの問題ではありません。 評価の材料にすると、指摘を「様子見」で流す動機が生まれます
  9. 自動実行してよい範囲 … 集計、見積もり、区分の判定、一覧の作成までです。出荷の優先順位の変更、値引きの決定、拠点間の移動、廃棄は人が行います

誤りが起きた場合のリスクは、見落としによる廃棄の増加と、逆に過剰な指摘による現場の疲弊です。後者のほうが起きやすく、起きると仕組みが使われなくなります。 「対応不要」が大半になる設定を守ってください。

10まず何から始めるか

1週目:過去の廃棄で答え合わせをする

直近3か月で廃棄になった30ロットについて、60日前の時点で余裕日数がマイナスだったかを手で計算します。 AIも仕組みも要りません。20件以上で検出できるなら、この構成に価値があります。

2週目:出荷の制約を整理する

主要な取引先10社について、納品時に求められる残存期限を一覧にします。「賞味期間の3分の1以上」といった条件を、SKUの期限の種類ごとに整理してください。 これがないと実質的な期限が出せません。

3週目:先入先出の乱れを数える

直近30日の出荷ログをロット単位で並べ、より新しいロットが先に出ている組み合わせが何件あるかを数えます。多ければ、期限の判定より棚の配置の見直しが先です。

4週目:100件で「対応不要」の精度を測る

廃棄にならなかったロット100件を判定させ、8割以上が「対応不要」になるかを確かめます。 ならなければ、閾値を調整します。

2か月目以降: 1拠点で半自動化を回します。1回目のフィルタ(期限120日以内)を最初から入れてください。 これがないと費用が読めません。

3か月目以降: 3拠点へ広げ、拠点間の照合と前日の追跡を足します。同時に、廃棄に至ったロットの判定履歴を残してください。 半年たつと、どの区分の判定が当たっているかが見えます。そこから、見る順番を決め直せます。

半年後: 期限切れ廃棄の金額を、導入前と比べてください。仕入高に対する比率で見ます。 0.4%が0.3%になっていれば、効果は出ています。金額そのものは仕入の量で動くため、比率で見ないと判断を誤ります。

同時に、検出できなかった廃棄を洗い出してください。 廃棄になったのに、60日前の判定で「対応不要」だったロットです。この件数が、この構成の弱いところを示します。 新商品なのか、季節性なのか、取引先の急な発注停止なのか。共通する特徴が見つかれば、そこだけ別の扱いにできます。

1年後には、発注の側との接続を検討してください。 期限切れの見込みが繰り返し出るSKUの一覧を、発注の担当へ渡します。在庫が余ってから対処するより、入れる量を減らすほうが効きます。 この構成で1年分の履歴がたまっていれば、どのSKUが慢性的に余っているかを数字で示せます。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-24/最終更新:2026-09-24
確認した内容情報源確認日
Zapier の Zap が、アプリをつなぐワークフローであること。トリガーがZapを開始するイベントで、アクションがトリガー後に実行される処理であること。1つのZapに複数のアクションを続けられることZapier Help: Create Zaps2026-09-24
Zapier のフィルタが条件による分岐点として働き、条件を満たさない場合はZapがそこで止まり、後続のアクションが実行されないことZapier Help: Add conditions to Zaps with filters2026-09-24
Claude API で output_config の format にJSONスキーマを渡すと、応答をスキーマに沿った形に制約できることClaude Docs: Structured outputs2026-09-24

倉庫管理システムと販売管理システムからのエクスポート形式、ロット管理の粒度は企業によって異なります。この部分は利用環境に応じた個別確認が必要です。 食品・医薬品などの期限切れ品の取り扱いに関する法令上の要求事項については、自社の品質保証部門および所管の行政機関にご確認ください。この記事は法令の解釈を示すものではありません。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0220)についてのご相談はこちらから。

AI活用について相談する
目次