EC の在庫はどのように管理しているのか?

2020.05.23

事業開発部で prismatix というサービスの導入支援を行っている大矢と申します。

みなさんが普段利用している EC サイトでは、商品の在庫数をどのように管理しているのでしょうか?
今回は、洋服屋さんが T シャツを売る話を例に、考えてみましょう。

EC サイトを始めた洋服屋さん

今回登場する洋服屋さんは、店舗で洋服を売っています。
洋服の在庫は倉庫で保管しています。
洋服は工場で製造し、倉庫を経由して店舗に配送します。
この洋服屋さんが、EC サイトを始めました。

在庫数の登録

倉庫には T シャツが 30 枚あります。
このうち 20 枚は店舗で売るつもりです。残り 10 枚を ECサイト で売ります。倉庫では、店舗用の在庫とEC用の在庫を分けて管理します。
EC サイトに、ECサイト用の在庫数として、「 T シャツ: 10 」と登録します。 *1

倉庫 EC サイトの在庫数 引当中 引当可能数
10 10 0 10

商品が売れた:在庫の引当

EC サイトで T シャツが 2 枚売れました。
この際、在庫の引当を行います。在庫の引当とは購入者のために商品を確保することです。
EC サイトでは「 T シャツ 2 枚を引き当てた」と登録します。 *2

ここで EC サイトの現在の引当可能数を確認すると、

在庫数(10) - 引当数(2) = 8

と計算し、 8 を返します。 *3

倉庫 EC サイトの在庫数 引当中 引当可能数
10 10 2 8

キャンセルされた

先程の購入者から電話がかかってきて、
「間違って 2 枚買ってしまった。 1 枚に変更して欲しい」
と言われました。まだ出荷前でよかったですね。
T シャツを 1 枚分キャンセルしましょう。

EC サイトに「引き当てている T シャツを 1 枚キャンセル」と登録します。 *4

ここで EC サイトの現在の引当可能数を確認すると、

在庫数(10) - 引当数(1) = 9

と計算し、 9 を返します。

倉庫 EC サイトの在庫数 引当中 引当可能数
10 10 1 9

出荷

T シャツを倉庫から出荷します。
倉庫に残っている T シャツは 9 枚です。

倉庫 EC サイトの在庫数 引当中(出荷前) 引当中(出荷後) 引当可能数
9 10 0 1 9

外部要因で EC 在庫数が変わる

そのころ、店舗では T シャツが人気で、すべて売れてしまいました。
この状況に対応するため、 EC 分の在庫から、店舗に 5 枚回します。

倉庫の在庫の状況が変わったので、 EC サイトにも反映します。
EC サイトの在庫数を「 T シャツ: 4 」と更新します。
倉庫の状況を EC サイトに反映する際は、引当中(出荷後)の数はゼロに戻します。

倉庫 EC サイトの在庫数 引当中(出荷前) 引当中(出荷後) 引当可能数
4 10→4 0 1→0 9→4

安全在庫

しかしその更新処理の直前に、 EC サイトで T シャツが 5 枚売れてしまいました。
時を戻して、 T シャツが 5 枚売れた時点では以下のようになっていました。

倉庫 EC サイトの在庫数 引当中(出荷前) 引当中(出荷後) 引当可能数
4 10 5 1 4

倉庫 4 に対して、引当中(出荷前)が 5 で、 1 足りません。
トラブル発生です。
売ることができなくなったお客様には謝罪の連絡をすることになるでしょう。

今回のような、 EC サイトへの在庫数反映のタイムラグによって欠品を起こしてしまうことは、倉庫と EC サイトを完全に同期することができない以上、発生しうるものです。

欠品のリスクを低減するための、安全在庫という考え方があります。
例えば「安全在庫数: 5 」とした場合は、残り 5 個分の在庫は、引当を行わないようにします。
これを設定していたとすると、 4 枚目のTシャツが売れた時点で引当可能数は、

倉庫 EC サイトの在庫数 安全在庫数 引当中(出荷前) 引当中(出荷後) 引当可能数
4 10 5 4 1 0
10 - 5 - 4 - 1 = 0

となり、 5 個目の T シャツは買うことができなかったはずです。
商品の性格に応じて安全在庫数を設定しておくと安心です。 *5

入荷予定在庫

倉庫に T シャツは無くなってしまいましたが、 T シャツは工場で生産中で、 1 週間後には 100 枚入荷する予定があります。
これも EC サイトで売ってしまおう、と考えます。
EC サイトに「 T シャツ: 100 、 6/10 10:00 入荷予定」と登録します。 *6

このような在庫の種類を入荷予定在庫と呼ぶことにします。入荷予定在庫は倉庫在庫とは分けて管理します。
注文が入った際、先に倉庫在庫から引き当てます。倉庫在庫がなくなったら、入荷予定在庫を引き当てます。
入荷予定在庫から引き当てた際は、購入者に「発送は入荷後になる」旨を伝えるべきでしょう。

倉庫 EC サイトの在庫数(倉庫在庫) EC サイトの在庫数(入荷予定在庫) 安全在庫数 引当中(出荷前) 引当中(出荷後) 引当可能数
0 0 100 5 0 0 95

さいごに

ここまでお話してきたように、 EC 在庫の管理にはいろいろと考慮するべきことがあります。

現在私が携わっている prismatix というサービスでは、ここで説明したような在庫を管理する機能がすでに実装済みで、 API として提供されています。
新たに EC サイトを構築する際、これらのロジックをスクラッチで開発することももちろんできますが、 prismatix を利用することで、その開発コストを削減できます。

prismatix に興味をお持ちいただけましたら、こちらからお問い合わせください。

また、今回の洋服屋さんのような EC サイトを構築する事業会社様に対し、 prismatix の導入を支援するお仕事があります。
小売 / EC業界でのシステム開発の経験がある方、SIerでプロジェクト管理をしている方、SaaSやパッケージ製品のプリセールス / 導入支援をしている方は、活躍できるお仕事だと思います。 prismatix チームで一緒に働いてみませんか?
興味をお持ちいただけましたら、こちらからお問い合わせください。希望職種プロジェクトマネージャー(事業開発部)を選択してください。

脚注

  1. prismatix には在庫スナップショットを登録する API があります
  2. prismatix には在庫を引き当てる API があります
  3. prismatix には引当可能数を算出する API があります
  4. prismatix には引当をキャンセルする API があります
  5. prismatix には安全在庫数を登録する API があります
  6. prismatix では入荷予定在庫を管理できます