Media > AI活用ユースケース > 物流 > 需要のばらつきから発注点と発注量を決めて、毎週の発注案を出す

需要のばらつきから発注点と発注量を決めて、毎週の発注案を出す

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

過去の出荷実績と調達リードタイムから品目ごとの発注点と発注量を計算し、仕入先からの連絡や営業の情報を読み取って補正の根拠を添えた発注案を毎週出します。購買担当の作業は、在庫と実績を見て発注量を決めることから、提示された案を確認することに変わります。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Python
対象業界
EC/商社/小売/製造
対象部門
物流/購買
対象業務
比較検討/集計・分析
主な課題
データ分析に時間がかかる/判断に時間がかかる/属人化している
AIで行う処理
予測
主な効果
判断支援/工数削減/機会損失防止
導入難易度
★★★★☆
実装レベル
本格構成
費用感
個別開発(大)
人間の確認
必須
現在工数
80h/月
AI導入後
24h/月
想定削減
70%
年間削減
672h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 週明けに、在庫が少ない品目の一覧を販売管理システムから出す
  2. 品目ごとに、直近3か月の出荷実績を画面で確認する
  3. 在庫数と発注残を見る
  4. 仕入先の調達リードタイムを思い出す(またはExcelの一覧で確認する)
  5. 出荷の傾向、季節性、案件の予定を踏まえて発注量を決める
  6. 発注ロット・最低発注金額の制約に合わせて量を丸める
  7. 発注データを入力する
  8. 仕入先に発注書を送る
導入後(After)
  1. 自動毎週日曜の夜、全品目の出荷実績・在庫・発注残を取り込む
  2. 自動品目ごとに需要パターンを分類する(安定/季節性あり/断続的/新規/終売)
  3. 自動パターンに応じた方法で、需要の平均とばらつきを算出する
  4. 自動調達リードタイムと目標欠品率から、安全在庫と発注点を計算する
  5. 自動在庫が発注点を下回る、または下回る見込みの品目を抽出する
  6. 自動仕入先からのメール、営業の案件情報、過去の欠品記録を読み、補正すべき事情を抽出する
  7. 自動発注ロット・最低発注金額の制約を当てて、発注量の案を作る
  8. 自動品目ごとに「なぜこの量なのか」の説明と、確認してほしい点を添える
  9. 購買担当が案を確認し、承認・修正する
  10. 自動承認された発注を販売管理システムに登録する
  11. 自動翌週、前週の予測と実績のずれを記録する
各工程の詳しい説明を読む
  1. 週明けに、在庫が少ない品目の一覧を販売管理システムから出す
  2. 品目ごとに、直近3か月の出荷実績を画面で確認する
  3. 在庫数と発注残を見る
  4. 仕入先の調達リードタイムを思い出す(またはExcelの一覧で確認する)
  5. 出荷の傾向、季節性、案件の予定を踏まえて発注量を決める
  6. 発注ロット・最低発注金額の制約に合わせて量を丸める
  7. 発注データを入力する
  8. 仕入先に発注書を送る

問題は5つあります。

(a)判断基準が人の頭の中にある。 「この品目は夏に動く」「この仕入先は納期が読めないから多めに持つ」という知識が、文書化されていません。担当者が休むとその品目の発注が止まります。

(b)8,000点のうち、見ているのは一部だけ。 週に300品目を検討していますが、残りは在庫アラートが出たときだけ見ます。動きの遅い品目で、気づいたら在庫がない、または3年分ある、という状態が生まれます。

(c)安全在庫が感覚で決まっている。 「念のため多めに」の積み重ねが在庫金額を押し上げます。一方で、本当にばらつきの大きい品目の安全在庫が足りていないこともあります。どちらも数字で確かめられていません。

(d)仕入先からの情報が発注に反映されない。 「来月から生産終了」「リードタイムが延びる」という連絡がメールで届いても、担当者の記憶に頼っています。発注の瞬間に思い出せなければ、反映されません。

(e)欠品と過剰の原因が振り返られない。 欠品が起きても、当時の在庫・出荷・発注残がどうだったかを再現できないため、次に活かせません。

  1. 【自動】 毎週日曜の夜、全品目の出荷実績・在庫・発注残を取り込む
  2. 【自動】 品目ごとに需要パターンを分類する(安定/季節性あり/断続的/新規/終売)
  3. 【自動】 パターンに応じた方法で、需要の平均とばらつきを算出する
  4. 【自動】 調達リードタイムと目標欠品率から、安全在庫と発注点を計算する
  5. 【自動】 在庫が発注点を下回る、または下回る見込みの品目を抽出する
  6. 【自動】 仕入先からのメール、営業の案件情報、過去の欠品記録を読み、補正すべき事情を抽出する
  7. 【自動】 発注ロット・最低発注金額の制約を当てて、発注量の案を作る
  8. 【自動】 品目ごとに「なぜこの量なのか」の説明と、確認してほしい点を添える
  9. 【人】 購買担当が案を確認し、承認・修正する
  10. 【自動】 承認された発注を販売管理システムに登録する
  11. 【自動】 翌週、前週の予測と実績のずれを記録する

自動化されるのは「実績を見る」「ばらつきを計算する」「発注点を出す」「制約を当てる」「関連情報を拾う」の5つです。残るのは「その量で本当によいかを判断する」です。

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

構成図
販売管理システム(出荷実績・在庫・発注残・仕入先マスタ)
   │
   ▼【トリガー】毎週日曜 22時(スケジュール実行)
Python のバッチ処理
   │
   ├──▶ 需要パターンの分類(安定/季節性/断続的/新規/終売)
   │
   ├──▶ 需要の平均と標準偏差の算出(パターン別の方法)
   │
   ├──▶ 安全在庫・発注点の計算(数式。AIは使わない)
   │       安全在庫 = 安全係数 × 需要の標準偏差 × √(調達リードタイム+発注間隔)
   │       発注点   = 1日平均出荷量 × 調達リードタイム + 安全在庫
   │
   ├──▶ 発注候補の抽出 + ロット・最低発注金額の適用
   │
   ├──▶ LLM API ── 仕入先メール・営業の案件情報・欠品記録を読み、
   │                 補正すべき事情と確認事項を抽出
   ▼
発注案リスト(スプレッドシート)──【購買担当が承認・修正】
   │
   ▼
販売管理システムへ発注登録
   │
   ▼【翌週】予測と実績のずれを記録し、安全係数の見直しに使う
役割想定する製品代替候補
実行環境Python(pandas・statsmodels などの統計処理)R、SQLでの実装
生成AIClaude APIOpenAI API、Gemini API
出力先Google スプレッドシートExcel、社内Webアプリ
基幹システム販売管理システム各社のERP

在庫管理システムに需要予測の機能があるなら、まずそれを試してください。 この構成は「販売管理システムに実績はあるが、発注の判断は人がしている」状態を対象にしています。自前で組む価値があるのは、品目ごとに違う判断基準を自社の言葉で組み込みたい場合と、メールや案件情報といった数値以外の情報を判断に入れたい場合です。

Python を選んだのは、統計処理と業務ルールの両方を1か所に書けるためです。 ノーコードのワークフローツールでは、需要パターン別の計算を書き分けるのが難しくなります。

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

Step1

処理の起点を決める

毎週日曜の夜に、定時で一括処理します。 週明けに購買担当が発注案を見られる状態にしておくためです。

品目数が8,000点あるため、1品目ずつリアルタイムに計算する構成にはしません。在庫が発注点を下回った瞬間に反応する必要があるのは、リードタイムの短い国内品だけで、その場合は日次のバッチを追加します。

なお、緊急発注は従来どおり人が判断します。この構成は定常の発注を対象にしたもので、突発の需要には追いつきません。

Step2

入力データを集める

データ中身取得元
出荷実績品目×日付×数量(2年分以上販売管理システム
在庫品目ごとの現在庫、引当済み数、入庫予定販売管理システム
発注残発注済みで未入荷の数量と入荷予定日販売管理システム
仕入先マスタ仕入先、調達リードタイム、発注ロット、最低発注金額、発注可能日販売管理システム
品目マスタ品番、仕入単価、荷姿、代替品、終売予定販売管理システム
仕入先からのメール値上げ、生産終了、リードタイム変更、出荷制限の連絡Outlook(購買部の共有メールボックス)
営業の案件情報大口案件、キャンペーン、新規取引の予定販売管理システムまたは営業からの連絡
欠品・過剰の記録過去に欠品した品目と日付、当時の状況のメモスプレッドシート

出荷実績は2年分以上が必要です。 季節性を判定するには、同じ季節を2回は見る必要があります。1年分では「去年の夏に出た」が季節性なのか単発の案件なのかを区別できません。

「仕入先からのメール」を入力に含めるのが、この構成の特徴です。 数値だけを見て計算した発注点は、「来月から出荷制限がかかる」という情報を知りません。

Step3

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

実績・在庫・マスタ: 販売管理システムからの日次エクスポート、またはデータベースへの読み取り専用接続で取得します。リアルタイム連携は不要です。

仕入先からのメール: 購買部の共有メールボックスから、直近3か月ぶんの件名と本文を取得します。取得したメールは、品番または仕入先名で品目に結び付けます。

営業の案件情報: 販売管理システムの見込み案件、または営業からの連絡をスプレッドシートに集めたものを使います。「案件情報が整備されていない」という理由でこの構成を諦める必要はありません。 空のまま動かしても、統計計算の部分は機能します。

Step4

AIへ渡す前に整形する

  1. 需要パターンの分類 … 品目ごとに、直近24か月の出荷実績から次を判定します

- 安定型 … 毎月出荷があり、月ごとのばらつきが小さい - 季節性型 … 特定の月に集中し、その傾向が2年続いている - 断続的型 … 出荷のない月が半分以上ある - 新規型 … 取り扱い開始から12か月未満 - 終売型 … 直近6か月の出荷が減少を続けている、または終売予定がある

  1. 異常値の除去 … 単発の大口案件による出荷を、通常需要から分けます。これを混ぜたまま平均を取ると、発注点が過大になります
  2. 欠品期間の補正 … 在庫がなくて出荷できなかった期間の「出荷ゼロ」は、需要がなかったわけではありません。この補正をしないと、欠品した品目ほど発注点が下がり、また欠品します
  3. 単位のそろえ … 出荷単位と発注単位が違う品目(バラ出荷・箱発注)を換算します
  4. メールと品目の結び付け … 仕入先からのメールを、本文中の品番または仕入先コードで品目に結び付けます

3番目を軽く見ないでください。 欠品による需要の見えない部分を無視すると、在庫管理は自己強化的に悪化します。

Step5

AIに処理させる

計算は数式で行います。 使う式は次の2つです。

安全在庫 = 安全係数 × 需要の標準偏差 × √(調達リードタイム + 発注間隔)

発注点   = 1日平均出荷量 × 調達リードタイム + 安全在庫

安全係数は、許容する欠品率から決めます。欠品率を小さくするほど係数は大きくなり、在庫は増えます。「どの品目で欠品を許容するか」は経営判断であり、計算で決まるものではありません。 品目をABC分析で分け、区分ごとに目標欠品率を決めてください。

需要の平均と標準偏差の求め方は、パターンによって変えます。

パターン平均と標準偏差の求め方
安定型直近12か月の移動平均と標準偏差
季節性型月ごとの指数を掛けた季節調整後の値
断続的型出荷があった月だけの平均と、出荷間隔のばらつきを別に扱う
新規型統計値を使わない。担当者が設定した初期値を使う
終売型発注しない。残在庫の消化計画に回す

断続的型と新規型を、安定型と同じ式で計算しないでください。 出荷のない月が多い品目に単純な標準偏差を当てると、意味のない安全在庫が出ます。

LLMにさせること:

処理内容
仕入先メールの読み取り値上げ、生産終了、リードタイム変更、出荷制限、代替品への切り替えを抽出する
案件情報の読み取り大口案件、キャンペーン、新規取引の予定を、対象品目と時期に結び付ける
欠品記録の読み取り過去の欠品時のメモから、繰り返している事情を抽出する
補正の提案上記を踏まえ、計算値をそのまま使ってよいか、注意すべきかを示す
説明文の作成「なぜこの発注量なのか」を購買担当が読める形で書く
確認事項の作成判断に必要だが、データにない情報を質問として立てる

LLMに数量を決めさせないでください。 補正の「根拠」は出させますが、補正後の数量を計算させません。 「リードタイムが2週間延びる」という情報を抽出させ、その値を数式に入れて再計算するのはプログラム側の仕事です。

Step6

指示内容を固定する

あなたは、購買担当が発注量を判断するための材料を整理する担当者です。
計算された発注点・発注量に対して、数値には表れていない事情を
テキスト情報から拾い、注意点を示してください。

【厳守事項】
- 発注量や発注点の数値を、あなたが計算し直さないでください。
  補正が必要と考える場合は、補正の根拠となる事実(リードタイムが何日延びる、
  出荷制限がいつから、など)だけを抽出してください。
- 抽出した事実には、根拠となったメールの件名・日付、または
  案件情報のIDを source に必ず記載してください。
- メールや案件情報に書かれていないことを推測しないでください。
  情報がない場合は findings を空配列にしてください。
- 「念のため多めに」のような、根拠のない増量の提案をしないでください。
- 仕入先からの連絡が、この品目に関するものかどうか判断できない場合は、
  uncertain に入れ、findings には入れないでください。
- 確認事項は、購買担当がその場で確かめられる形で書いてください。
  「需要動向を確認してください」のような一般的な指示は作らないでください。

【対象品目】
品番: {item_code} / 品名: {item_name} / 仕入先: {supplier}
需要パターン: {demand_pattern}
計算された発注点: {reorder_point} / 現在庫: {stock} / 発注残: {on_order}
計算された発注量の案: {suggested_qty}(ロット {lot_size} / 最低発注金額 {moq_amount})
調達リードタイム(マスタ値): {lead_time} 日

【この品目・この仕入先に関する直近3か月のメール】
{supplier_mails}

【この品目に関連する案件情報】
{sales_pipeline}

【この品目の過去の欠品・過剰の記録】
{incident_history}

「あなたが計算し直さないでください」の1行が、この構成の安全装置です。 これを書かないと、LLMは親切に「したがって発注量は450個が適切です」と書きます。その数字には根拠の追跡ができません。

「根拠のない増量の提案をしない」も必ず入れてください。 在庫が増える方向の提案は、もっともらしく見えて反論しにくいため、そのまま通りやすくなります。

Step7

出力形式を固定する

計算部分(プログラム)の出力:

{
  "item_code": "",
  "demand_pattern": "stable | seasonal | intermittent | new | discontinued",
  "avg_daily_demand": 0,
  "demand_std": 0,
  "lead_time_days": 0,
  "review_interval_days": 0,
  "service_level_target": 0,
  "safety_factor": 0,
  "safety_stock": 0,
  "reorder_point": 0,
  "current_stock": 0,
  "on_order": 0,
  "suggested_qty_raw": 0,
  "suggested_qty_adjusted": 0,
  "adjustment_reason": "lot_size | moq | none",
  "calc_basis": {
    "months_used": 0,
    "outliers_removed": 0,
    "stockout_periods_corrected": 0
  }
}

LLM部分の出力:

{
  "item_code": "",
  "findings": [
    {
      "type": "lead_time_change | price_change | discontinuation | supply_limit | demand_event",
      "fact": "",
      "effective_from": "",
      "source": "",
      "impact_direction": "increase | decrease | timing_only"
    }
  ],
  "uncertain": [],
  "explanation": "",
  "questions": [],
  "recommend_human_review": true
}

2つを別のJSONで持つことに意味があります。 計算値とテキスト由来の情報を1つの構造に混ぜると、どの数字が計算から来てどれが読み取りから来たのかが分からなくなります。 発注案の画面でも、この2つは分けて表示します。

calc_basis を残すのは、後から「なぜこの発注点になったのか」を再現するためです。異常値を何件除いたか、欠品期間を何回補正したかが分かると、おかしな発注点の原因が追えます。

Step8

システムへ連携する

つなぐ先内容
販売管理システム(読み取り)出荷実績、在庫、発注残、マスタを取得する
Outlook購買部の共有メールボックスから仕入先の連絡を取得する
スプレッドシート発注案を出力する。承認・修正の入力も同じ場所で行う
販売管理システム(書き込み)承認された発注を登録する
実績記録翌週、予測と実績のずれを記録する

承認された発注だけを登録します。 発注案の自動発注は、この構成の対象外です。理由は後述します。

Step9

人が確認する

全件を人が承認します。ただし、確認の重さを3段階に分けます。

区分条件確認の重さ
一括承認安定型/findings が空/発注金額が閾値未満/計算値がロット丸めの範囲内一覧でまとめて承認
個別確認findings がある/発注金額が閾値以上/需要パターンが変わった1品目ずつ見る
必ず判断新規型/終売型/recommend_human_review: true/欠品履歴がある品目根拠を読んで判断する

月1,200件のうち、一括承認に回せるのは700〜900件程度が目安です。ここが自動化の効果の大半を生みます。

発注の完全自動化をしない理由を書いておきます。 発注は現金の支出と在庫の増加を伴います。計算の前提(リードタイム、ロット、終売予定)がマスタで古いままだと、誤った発注がそのまま実行されます。マスタの鮮度を人が保証できない限り、自動発注は危険です。 逆に言えば、マスタの整備が進み、予測と実績のずれが安定して小さくなった品目については、段階的に自動化を検討できます。

Step10

例外に対処する

起きること対応
出荷実績が12か月未満新規型として扱い、統計値を使わない。担当者が初期値を設定する
出荷のない月が半分以上断続的型として扱い、別の計算に回す
単発の大口案件で実績が跳ねている異常値として除き、calc_basis.outliers_removed に件数を残す
欠品していた期間がある需要を補正する。補正した回数を残す
調達リードタイムのマスタが古い実績の入荷日から実測リードタイムを算出し、マスタとの差が大きい品目を一覧にする
仕入先が生産終了を通知発注案を止め、代替品の確認事項を立てる。自動で代替品を発注しない
最低発注金額に届かず発注できない同じ仕入先の他品目とまとめる案を作る。単独で無理に金額を満たさない
発注ロットが需要に対して大きすぎる何か月分の在庫になるかを表示し、担当者に判断させる
メールが品目に結び付かないuncertain に入れ、担当者に一覧で見せる
計算値が現在庫より小さい(発注不要)発注案に出さない。ただし過剰在庫の一覧には載せる
予測と実績のずれが大きい品目が続く需要パターンの分類を見直す対象として一覧にする
バッチが失敗した前週の発注案を残したまま、失敗を通知する。空の発注案を出さない
Step11

記録を残す

  • 週次の計算結果(calc_basis を含む全項目)
  • LLMが抽出した findings と、その根拠となったメール・案件情報
  • 発注案と、担当者が承認・修正した結果
  • 担当者が修正した理由
  • 翌週以降の実績と、予測とのずれ
  • 欠品・過剰が起きた品目と、そのときの計算値

「担当者が修正した理由」がこの構成の要です。 「この品目は月末に注文が集中するから」「この仕入先は繁忙期に納期が延びるから」という理由が蓄積すれば、次は計算の前提に組み込めます。 修正が減っていくことが、この構成が機能している証拠になります。

予測と実績のずれの記録は、安全係数の見直しに使います。 ずれが小さい品目は係数を下げて在庫を減らせます。ずれが大きい品目は係数を上げる必要があります。これを毎月見直す仕組みがないと、在庫は減りません。

04実装レベルの3段階

最小構成:上位50品目について、Excelで発注点を計算し、担当者が参考にする / 計算
半自動化:全品目の週次バッチで発注点と発注量を計算し、一覧で出す。テキスト情報の読み取りはなし / 計算・候補抽出
本格構成:上記+仕入先メール・案件情報・欠品記録の読み取り+補正の提示+承認からの発注登録+予測精度の記録 / 承認以外のすべて

半自動化でも効果が出ますが、この業務では本格構成に価値があります。 理由は、数値計算だけでは「来月から出荷制限」を知らないまま発注してしまうからです。テキスト情報の読み取りを入れて初めて、担当者が頭の中でやっていたことに近づきます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 在庫品目が1,000点以上あり、発注の判断が担当者の経験に依存している企業。出荷実績が2年分以上、電子データで残っていること。仕入先ごとの調達リードタイムが把握できていること。
向いていない
  1. 品目数が100点未満で、担当者が全品目の動きを把握できている場合。受注生産が中心で在庫を持たない場合。出荷実績のデータが1年に満たない場合。すでに需要予測機能を持つ在庫管理システムを導入している場合。

07最小構成で試す方法

  1. 在庫金額の上位50品目を選ぶ
  2. 直近24か月の出荷実績を、品目×月の表でExcelに出す
  3. 品目ごとに、月次の平均と標準偏差を計算する(Excelの関数で足ります)
  4. 調達リードタイムを入れ、上の式で安全在庫と発注点を計算する
  5. 現在の在庫水準と、計算した発注点を比べる

見るのは次の3点です。

見る点意味
計算した発注点より、現在の在庫がはるかに多い品目在庫が過剰になっている可能性がある
計算した発注点より、現在の在庫が少ない品目欠品リスクがある。過去に欠品していないかを確認する
計算値と担当者の感覚が大きく食い違う品目その理由が、この構成に組み込むべき知識です

3番目がもっとも価値があります。 「計算では300個だが、自分は500個入れている」という品目について理由を聞くと、「この品目は年度末に必ず動く」「この仕入先は5月の連休前に締める」といった、データに現れない前提が出てきます。それを集めることが、この構成を作る前の一番重要な作業です。

Excelでの試算は50品目なら半日で終わります。Python を書く前に、必ずこの段階を通してください。

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

問題対策
断続的需要の品目で、意味のない安全在庫が出るパターンを分類し、断続的型は別の計算に回す。単純な標準偏差を使わない
欠品していた期間を「需要ゼロ」として計算している欠品期間を補正する。これを飛ばすと欠品が繰り返される
単発の大口案件で発注点が跳ね上がる異常値として除く。除いた件数を必ず記録する
調達リードタイムのマスタが実態と違う入荷実績から実測し、マスタとの差が大きい品目を一覧にする。マスタが古いと計算は全部ずれます
LLMが発注量を計算して返すプロンプトで明確に禁止する。返り値に数量が含まれていないか機械的に検査する
LLMが根拠なく「多めに」と提案する根拠のない増量提案を禁止する。source のない findings は機械的に落とす
安全係数を全品目で同じにしてしまうABC分析で区分を分け、区分ごとに目標欠品率を決める
発注ロットが大きく、何年分もの在庫になる何か月分になるかを表示し、担当者に判断させる。自動で丸めない
承認が面倒で結局全部見ている一括承認の条件を緩める。閾値は運用しながら調整する
予測精度を測っていない週次で予測と実績のずれを記録する。測らないと安全係数を下げられず、在庫は減りません
担当者の修正理由が残らない修正時に理由を選択・記入させる。この蓄積が構成の価値を決めます

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

この構成で扱うデータ: 仕入単価、仕入先名、出荷実績、在庫数量、営業の案件情報。自社の原価構造と、取引先ごとの調達条件が含まれます。

  1. 外部AIへの入力可否 … 仕入先からのメールには、値上げ幅や取引条件が書かれています。これは仕入先との秘密保持の対象になり得ます。自社の情報管理規程と主要仕入先との基本契約を確認してください。LLMに渡す必要があるのは「リードタイムが延びる」「出荷制限がかかる」という事実であって、価格そのものではありません。 価格に関する記述をマスクしてから渡す構成も取れます
  2. 案件情報の扱い … 営業の案件情報には顧客名が含まれます。発注量の判断に顧客名は不要なので、品目・数量・時期だけを渡す設計にできます
  3. 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
  4. アクセス権限 … 仕入単価が見える画面を、購買部門に限定します。発注案リストに仕入単価を出すかは、閲覧者の範囲で判断してください
  5. 自動実行してよい範囲発注の登録は必ず人の承認を経ます。 発注は現金の支出です。計算の前提となるマスタが古いだけで、誤った発注が実行されます。段階的に自動化する場合も、金額の上限と品目の区分を限定してください
  6. 予測結果の扱い … 需要予測の数値は、あくまで過去の実績からの推計です。これを社外(仕入先への内示など)に出す場合は、拘束力のない見通しであることを明示してください

誤りが起きた場合のリスクは、欠品による機会損失と、過剰在庫による資金の固定・廃棄です。計算の根拠を残し、後から再現できる状態にしてください。 特に calc_basis の記録は、異常な発注点が出たときの原因究明に必要です。

10まず何から始めるか

1週目:上位50品目をExcelで計算する

在庫金額の上位50品目について、24か月の出荷実績から平均と標準偏差を出し、発注点を計算します。半日で終わります。 現在の在庫水準と比べ、過剰と不足の品目を洗い出します。

2週目:担当者に理由を聞く

計算値と担当者の感覚が食い違う品目を10点選び、理由を聞いて記録します。「年度末に必ず動く」「この仕入先は連休前に締める」といった前提が出てきます。これが設計の材料です。

3週目:リードタイムのマスタを検証する

入荷実績から実測のリードタイムを出し、マスタの値と比べます。差の大きい仕入先が見つかるはずです。 ここがずれていると、どんなに精緻な計算をしても発注点は合いません。

4週目:目標欠品率を決める

品目をABC分析で区分し、区分ごとに許容する欠品率を決めます。購買部門だけで決めず、営業と経営に確認してください。 これは在庫金額を決める判断です。

2か月目:半自動化を作る

全品目の週次バッチを作り、発注点と発注量を一覧で出します。担当者は従来どおり発注しますが、毎週「自分の判断」と「計算値」を並べて見る期間を1か月置きます。この期間に、分類の誤りと前処理の不足が見つかります。

3か月目以降: テキスト情報の読み取りと承認からの発注登録を追加します。並行して、予測と実績のずれの記録を始め、3か月分たまったところで安全係数の見直しを行います。在庫が減り始めるのはここからです。


11関連ユースケース

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

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

技術仕様確認日:2026-09-14/最終更新:2026-09-14
確認した内容情報源確認日
発注点が「1日平均出荷量 × 調達リードタイム + 安全在庫」で求められること。安全在庫が「安全係数 × 需要の標準偏差 × √(調達リードタイム+発注間隔)」で算出されることJ-Net21(中小企業基盤整備機構):現場での在庫管理の方法と、適正な在庫量の考え方2026-09-14
定量発注方式(在庫が発注点を下回ったときに一定量を発注する方式)が、動きの速い品目に適していることJ-Net21(中小企業基盤整備機構):購買方式と発注方式2026-09-14
Claude API に、出力をJSONスキーマに沿わせる構造化出力の機能があること(2026-09-14時点ではベータ機能)Claude Platform Docs: Structured outputs2026-09-14

安全係数と目標欠品率の設定、ABC分析の区分の切り方は、自社の事業特性と経営判断によります。この部分は利用環境に応じた個別確認が必要です。 販売管理システムからのデータ取得方法と発注登録の方式についても、自社のシステムのベンダーに確認してください。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。在庫削減の効果は品目構成に強く依存するため、本記事では数値化していません。

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

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

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