Shopifyのストアだけで売っているうちは、在庫の数字はひとつの場所にあれば足ります。ところが、モールにも出品しはじめた、卸のお客様にも同じ棚から出している、週末だけ実店舗でも売っている。こうなった途端、同じ一枚の棚が複数の売り場から同時に引かれることになります。物理的な在庫はひとつなのに、数字だけがいくつも存在してしまうのです。
この記事で扱うのは、倉庫が複数ある話ではありません。在庫がどこに置かれていてもかまわないのですが、とにかく同じ在庫プールから複数の販売チャネルが売っている、という状況の設計です。誰がその数字の持ち主なのかを決めること、在庫をどう配るかを選ぶこと、シートをハブとして使うこと、そしてずれに気づく仕組みを持つこと。この4つを順に見ていきましょう。
棚はひとつ、売り場は複数 — 最初に決めること
複数の売り場が同じ棚から売るとき、最初に決めるべきなのは技術ではなく所有権です。どのシステムが在庫数の正本を持つのか。ここが曖昧なままだと、あとから何を足しても仕組みは安定しません。
その数字は、どのシステムのものか
在庫の数字の持ち主は、ちょうどひとつであるべきです。Shopifyが正本でもいいですし、スプレッドシートが正本でも、基幹システムが正本でも構いません。大切なのは「ここが正しい」と全員が指させる場所がひとつあって、それ以外はすべて下流である、という関係がはっきりしていることです。
正本を決めると、質問への答え方が変わります。「モールの在庫が3で、Shopifyが5です。どちらが正しいですか」と聞かれたとき、正本が決まっていれば「正本が5なので5です、モール側を直しましょう」と即答できます。決まっていなければ、その場で棚まで数えに行くしかありません。この差は日々の運用で想像以上に効いてきます。
なお、正本を決めることと、どこで数を入力するかは別の話です。店舗のスタッフが棚卸しの結果を打ち込む場所があってもよく、その入力が最終的に正本へ集まる経路さえ一本に保たれていれば問題ありません。チャネルをまたぐ売り越しの防ぎ方は、オーバーセル対策まとめの考え方が土台になります。
双方向同期という落とし穴
複数チャネルを扱いはじめると、双方向同期という発想がとても魅力的に見えてきます。どちらで売れても両方の数字が減る。理想的に聞こえますが、実際にはとても壊れやすい仕組みです。理由は三つあります。書き手が二人いること、出来事の順序について両者が合意していないこと、そして更新が更新を呼ぶ輪ができてしまうことです。
書き手が二人いると、同じ瞬間にどちらも自分が正しいと主張します。Shopifyが7を書き、モールが6を書く。どちらが後に届いたかで結果が決まりますが、その順序は通信の都合で毎回変わります。さらに片方の更新がもう片方の更新を引き起こす設定になっていると、小さな食い違いが往復しながら増幅し、数字が7と6のあいだで揺れ続ける状態になります。
ですから、同期の向きは一方向に揃えるのが基本です。正本から各チャネルへ配り、チャネルで起きた販売は正本の在庫を減らす入力として受け取る。書き込みの向きと、事実を報告する向きを分けて考えると、設計がぐっと整理されます。
遅れは積み重なって、窓になる
もうひとつ見落とされやすいのが、遅れの積み重ねです。注文が入ってから正本の数字が動くまでに数分、正本から次のチャネルへ届くまでにまた数分。ひとつひとつは小さくても、経路をたどるあいだに合計は十分な長さになります。
そしてこの合計が、そのまま危険な窓の幅になります。窓が10分あるなら、その10分間は複数のチャネルが同じ最後の1個を売れる状態です。ふだんは何も起きませんが、セールやメディア掲載で注文が集中した瞬間に牙をむきます。同期の間隔を短くする価値は、平常時の正確さよりも、この窓を狭めるところにあります。
在庫の配り方は大きく3通り
正本が決まったら、次はその在庫をどう配るかです。選択肢は大きく3つあり、どれも一長一短です。売り逃しを減らすほど売り越しの危険は増え、安全に寄せるほど在庫は眠ります。
全量をどのチャネルにも見せる
いちばん単純なのは、全量をすべてのチャネルに見せる方法です。在庫が20個あるなら、Shopifyにも20、モールにも20と出します。どの売り場にも最後の1個まで売る機会があるので、売り逃しは理論上いちばん少なくなります。
その代わり、売り越しの危険はいちばん大きくなります。20個すべてが両方の売り場から見えているということは、合計40個ぶんの購入ボタンが押せる状態でもあるからです。回転が遅く、同期の間隔に対して在庫に余裕のある商品なら、この方式でまったく問題ありません。危ないのは、在庫が一桁になったときと、注文が急に集中したときです。
全量共有を選ぶなら、せめて在庫が少なくなったときの扱いだけは決めておきましょう。残り3個を切ったらそのSKUだけ枠を切る、あるいは同期の間隔を短くする。すべての商品に同じ方式を当てはめる必要はなく、危ない領域に入った商品だけ扱いを変えるという運用は、十分に現実的です。
チャネルごとに枠を切る
逆の端にあるのが、チャネルごとに枠を固定する方法です。20個のうちShopifyに12、モールに8と決めてしまえば、それぞれの売り場は自分の枠のなかだけで売ることになり、原理的に売り越しは起きません。数字が理解しやすく、社内でも説明しやすい方式です。
弱点は、在庫が眠ることです。モールの8個が売れずに残っているあいだに、Shopify側の12個が売り切れる。全体ではまだ8個あるのに、主力の売り場では品切れという状態が生まれます。枠を切るなら、枠そのものを定期的に引き直す運用がセットで必要になります。
枠を切る方式が本当に生きるのは、チャネルごとに約束がある場合です。卸のお客様に月100個を確保する、期間限定でモールに専用枠を出す。こうした約束は数字で守る必要があるので、はじめから枠として切り出しておくほうが、説明も検証もしやすくなります。
バッファを残して全量を共有する
実務でいちばん収まりがよいのは、その中間です。全量を共有しつつ、一定量をバッファとして引いておく。20個あるなら3個を安全在庫として残し、17個をどのチャネルにも見せます。売り逃しは共有型に近いまま、売り越しの危険を枠切り型のほうへ寄せる折衷案です。
- 全量共有 : 売り逃しは最小、売り越しの危険は最大。回転が遅く在庫に余裕のある商品に向きます
- チャネル別の枠 : 売り越しは起きないが在庫が眠る。数量限定品や、チャネルごとに約束のある卸に向きます
- バッファ付きの共有 : 中間。多くの商品はここに落ち着きます
- バッファの幅は、同期の間隔のあいだに売れうる数を目安にします。1時間で3個売れる商品なら3個前後が出発点です
バッファを一律にする必要はありません。よく売れる商品ほど厚く、動きの遅い商品は薄く、あるいはゼロでも構いません。大切なのは、なぜその数字なのかを説明できることです。なんとなく5ではなく、同期間隔のあいだに売れる最大が5だから5と言えれば、あとから見直すこともできます。
スプレッドシートをハブとして使う
所有権と配り方が決まったら、それをどこかに書き留めなければなりません。スプレッドシートはこの役割によく合います。全員が同時に見られて、変更の履歴が残り、計算もその場でできるからです。
1行1SKUを原本にする
基本の形は、1つのSKUに1行です。その行が、そのSKUについての正本になります。実在庫が何個あるのか、そのうち各チャネルにいくつ見せているのか、バッファをいくつ取っているのか。すべてが横一列に並んでいて、その行を見れば判断に必要な情報が揃っている、という状態を目指します。
SKUとチャネルの組み合わせごとに行を増やす形も考えられますが、配分を扱うときは横に広げるほうが向いています。理由は単純で、配分は比べるものだからです。同じSKUの数字が縦にばらけていると、配分の合計が実在庫と一致しているかを目で確かめられません。原本シートの列設計は、在庫管理シートの列設計をそのまま応用できます。
チャネルごとの列で配分を見える化する
そこで、チャネルごとに列を持たせます。実在庫の列があり、バッファの列があり、Shopify向けの列、モール向けの列、卸向けの列が横に並ぶ。同期でShopifyへ届くのはこのうち1列だけですが、他の列が同じ行に見えていることに意味があります。配分の全体像が一目でわかるからです。
ロケーションごとの実在庫を列で持てるのと、考え方はまったく同じです。列は「どこの数字か」を表す単位であって、それがロケーションであってもチャネルであっても、シート側の設計としては同じ形になります。ただしShopifyへ書き込まれるのは、あくまでShopifyのロケーションに紐づく数字である点は忘れないでください。
書き戻しのルールを決める
ハブを作ると、必ず「ここに書き戻したい」という要望が出てきます。売れた数を戻したい、他チャネルの実績を反映したい。自然な発想ですが、ここで規律を決めておかないと、せっかく一本にした正本がまた二重になってしまいます。
- 01実在庫の列を書き換えてよいのは誰か(たとえば入荷担当と棚卸し担当だけ)を決めます
- 02配分の列は計算式で導き、人が直接上書きしないことを原則にします
- 03他チャネルの販売実績は、実在庫を減らす入力として別の列で受け取り、正本の列に直接書き込ませません
- 04例外的に手で直したときは、日付と理由を残す列を用意しておきます
ルールは短いほど守られます。この列は式、この列は人、この列は同期。3種類に色分けしておくだけでも事故はかなり減ります。誰が触ってよい列なのかがひと目でわかることが、複数人で使うシートではいちばん効く安全装置です。
ずれに気づく仕組みを持つ
どれだけ丁寧に設計しても、数字は必ずずれます。問題はずれること自体ではなく、ずれに気づかないまま時間が過ぎることです。最後に、ずれを見つけて手当てする仕組みを整えましょう。
毎日きまった時刻に突き合わせる
いちばん確実なのは、毎日きまった時刻に突き合わせることです。1日の終わりでも、翌朝の始業前でも構いません。実在庫の合計と、各チャネルに配ったはずの数の合計、そして実際に各チャネルが表示している数。この3つが説明のつく関係にあるかを確かめます。
全SKUを毎日見る必要はありません。動きの多い上位の商品と、在庫が一桁になった商品だけで十分です。同期のログが残っているなら、前回の同期でどのSKUが更新されたかもあわせて見てください。ずれは、たいてい直前に何かが起きた商品で発生します。範囲を絞るほど、確認は続けやすくなります。
突き合わせは、誰かの担当にしてしまうのがいちばん続きます。手順を3行のチェックリストにして、朝の作業に組み込む。5分で終わる形にしておけば、忙しい日でも飛ばされずに残ります。ずれを見つける仕組みは、精密であることよりも、毎日回ることのほうが大切です。ずれを数字で追う方法は、在庫同期を測る4つの数字で紹介しています。
売り越しは事故ではなく信号
売り越しが起きると、まずお客様への対応に追われます。それはもちろん最優先ですが、対応が済んだあとに一度だけ立ち止まってください。その1件は、たまたま運が悪かった出来事ではなく、設計のどこかが薄いことを教えてくれた信号です。
見るべきは、なぜその1個が二重に売れたのかです。同期の間隔が長すぎたのか、バッファがゼロだったのか、そもそも配分が古かったのか。原因ごとに手当ては違います。間隔なら短くする、バッファならその商品だけ厚くする、配分が古いなら見直しの頻度を上げる。1件ずつ理由を書き留めていけば、数か月後には自社の弱点がはっきり見えてきます。
同期を止めて数えるラインを決めておく
そして、あらかじめ決めておいてほしいことがあります。数字がどれくらいずれたら、同期を止めて数えに行くのか。この線引きを事故が起きてから考えると、必ず判断が遅れます。落ち着いているうちに、具体的な数で決めておきましょう。
たとえば主力SKUで3個以上の差が出たら止める、同じSKUで2日続けてずれたら止める、といった形です。止めるというのは、スケジュール同期を一時的に外し、実地で数えて正本を作り直し、接続テストで宛先を確かめてから少量で再開する、という一連の手順を指します。誰が止める判断をしてよいのかも、あわせて決めておいてください。
ひとつの棚を複数の売り場で分け合うというのは、要するにひとつの数字を正しい重みで配る仕事です。正本をひとつに決め、配り方を選び、シートで配分を見える化し、ずれに気づく仕組みを持つ。チャネルが2つでも4つでも、考え方はそのまま使えます。まずは主力の数十SKUだけでこの形を作り、うまく回ることを確かめてから広げるのがおすすめです。