2025年2月06日·1分で読めます

サイクルカウントアプリ:正確な在庫のためのシンプルなワークフローを作る

カウントバッチを作成し、差異を記録して大きなデルタを上長承認に回し、在庫調整をきちんと投稿するサイクルカウントアプリのワークフローを構築する方法。

サイクルカウントアプリ:正確な在庫のためのシンプルなワークフローを作る

日常業務で在庫精度が崩れる原因

在庫は多くの場合、導入直後は正しい数値でも、日々少しずつずれていきます。たいていは一度の大きなミスではなく、少しずつ発生する普通の出来事が、その都度少しずつ異なる対応をされることで累積します。

ピッキングはよくある要因です。ピッカーが正しい商品を間違った棚から取る、後で戻すつもりで数量を少なく引き取る、別のケース用のラベルをスキャンしてしまう、などです。返品もずれの原因になります:開封されて部品が欠けて戻る、いったん「とりあえず」別の場所に置かれて忘れられる。破損や盗難(shrink)も同じで、壊れた商品を記録せずに捨ててしまう方が早いと感じられると記録が残りません。

ラベルの誤記は静かな破壊者です。1つの誤ったラベルが後で多数の「謎の差異」を生みます。

サイクルカウントは、頻度を高めた小規模な棚卸です。年に一度の全数棚卸で全てを止める代わりに、スケジュールに沿って限定された品目やロケーションだけを数えます。目的は問題を早期に発見し、説明がつきやすいうちに対処することです。

「良い精度」はレポート上の完璧な数値を意味するわけではありません。日々の業務が予測可能であることを意味します:受注が差し替えなしで出荷され、購買が「念のため」に過剰発注せず、カスタマーサポートが本来発生しないはずの在庫切れの謝罪を繰り返さないことです。

チームが苦労する理由はだいたい同じです。カウントが一貫していない(異なる単位で数える、破損品を飛ばす)、差異の責任者が不明確で人が推測で「直す」、大きな変更がレビューなしに反映されてしまう、調整に理由やメモ、監査証跡がないため問題が繰り返される、などです。

サイクルカウントアプリは、正しい手順を飛ばしにくくし、リスクの高いステップをひそかに行えないようにするのが最も効果的です。

基本のサイクルカウントワークフロー(わかりやすく)

サイクルカウントのワークフローは、在庫の一部を定期的に確認し、問題を修正し、何が起きたかを記録に残すための繰り返し可能な方法です。良いサイクルカウントアプリは、それを人が推測せずにたどれるシンプルな道筋にまとめます。

多くのチームは同じコアの流れを使います:カウントバッチを計画し、倉内でカウントし、システムと比較し、例外を承認し、在庫調整をポストする。

役割を明確にします:

  • カウンター(Counter): 実際の数量をスキャンして入力する人。
  • スーパーバイザー(Supervisor): 例外を確認し、カウントが妥当か判断する人。
  • 在庫管理者(Inventory manager): どの差異を承認対象にするか、再カウントの基準、調整の投稿方法などルールを設定する人。

比較時に重要な用語が2つあります:variance(差異)delta(デルタ)。variance はシステムが期待した数と実際に数えた数の符号付き差、delta はその差の大きさです。

例:システムがBin Aに120個あると表示している。カウンターは95個を見つけた。

  • Variance = 95 - 120 = -25
  • Delta = 25個

承認ゲートが必要なのは、大きな差が本当に問題なのか単純なミスなのかを区別するためです。誤スキャン、誤った単位でのカウント、間違った棚のカウントなどで大きなデルタが発生することがあります。大きなデルタはレビューを要求することで、誤った調整をそのまま反映して元の問題より大きな混乱を作るのを防ぎます。

承認されたら、誰がいつなぜ承認したかが記録される管理された方法で調整を投稿すべきです。

アプリを作る前に必要なデータ

サイクルカウントアプリを作る前に、そのワークフローで何を記録する必要があるかをはっきりさせてください。基本データが欠けていると、現場で人が推測してしまい、結果はレビューに耐えません。

まず最小限のマスターデータを用意します:アイテム(SKU、名称、単位、アクティブ/非アクティブ)、ロケーション(倉庫とビン構造、各ビンがカウント対象かどうか)、そして各ロケーションごとの現行の在庫数。ロットやシリアルを使う場合は、ロット/シリアル番号、有効期限、ステータスも必要です。

次に、あなたの業務で「カウントバッチ」が何を意味するかを定義します。バッチはカウントを管理し追跡可能にするためのコンテナです。スコープ(ロケーションやSKUグループ)、予定日、割り当てられたカウンター、そしてDraft、In Progress、Submitted、Approved、Posted のようなシンプルなステータスモデルを含めるべきです。

行レベル(各カウント対象)では、後で計算を説明できるだけの最低限を記録します:アイテム、ロケーション、システム数量、計上数量、差異(単位と、必要なら割合)。

最後に、初日から承認データを含めておきます。すぐに使わなくても後で必要になります。差異閾値(「大きなデルタ」と見なす基準)、理由コード(破損、誤ピック、入荷ミスなど)、スーパーバイザーの判断(承認/却下)、メモを用意します。

例:Bin A3がシステムで24と表示されているが、カウンターが10と記録した場合、アプリは理由を必須にし、在庫調整が投稿される前にレビューに回すべきです。

実際に完了できるカウントバッチの作り方

サイクルカウントアプリは、バッチが現実的に終わると感じられなければ機能しません。バッチを開いて120ロケーションが表示されると、人は急いだり、飛ばしたり、中断してしまいます。1人が1シフトで終えられるサイズから始め、ラベル欠損や混載、破損包装などの明らかな問題を修正する時間を残してください。

何をカウントするかは、レポート上で見栄えが良いかではなく、あなたの痛点に合うルールで選びます。一般的な方法はABCカバレッジ(Aアイテムは頻繁に、Cは少なめ)、高速回転品、問題が繰り返すビン、小さめのランダム抽出などです。

各バッチを狭めに保ちます:単一のゾーン、一本の通路範囲、近接するビンのクラスターなど。移動時間が大きいならバッチが広すぎます。手作業のカウントでは、実務的な出発点は1バッチあたり20〜40ロケーションで、チームが実際にどれくらいかかるかに応じて調整します。

カウント中の移動をどう扱うか決めてください。最もクリーンなのは、アクティブなバッチ内のビンに対してピッキングや入庫をブロックすることです。移動をブロックできない場合はタイムスタンプのカットオフを使い、カットオフ後の動きは除外して後処理する方法が現実的です。

明確なステータスは混乱を防ぎ、手戻りを減らします。人が実際に行うことに合わせた名前を使いましょう:

  • Draft
  • In progress
  • Submitted
  • Approved
  • Posted

もしAppMasterで構築するなら、Data Designerでバッチ、ロケーション、ステータスをモデル化し、Business Process EditorでバッチがPostedになったら編集をブロックするようなルールを追加できます。

現場でのカウント記録を遅くしない方法

Separate counting from posting
Keep system quantity read-only and post adjustments only after approval.
Create App

最速のカウントは、画面が実際の作業と一致しているときに起きます。現場は騒音、手袋、反射、悪いWi-Fiといった条件があるため、通常は簡潔な入力ビューが一つあれば十分です。

カウンターが本当に確認できる入力だけに限定します:アイテム、ビン(ロケーション)、計上数量、任意のメモ。写真が後で争点を解決するなら任意でワンタップ添付にしてください。書類作業のように感じる入力は省略されるか、最悪は推測で埋められます。

スキャン可能にしますが必須にしないでください。バーコードはラベルがきれいなときには優れていますが、破れたラベルや端末不良、混載時の手入力フォールバックが必要です。実務で使いやすいパターンは:スキャン(または検索)→ビン確認→数量入力、です。

システム数量は表示して読み取り専用にします。カウンターが現場で数値を直接「直せる」ようにしてはいけません。期待数量を見ることで明らかなミスを再確認できますが、実際に数えた数を上書きしてはいけません。

人を混乱させるケースが2つあります。明示的に扱ってください:

  • Not found(見つからない): そのロケーションに商品がない、またはアイテムが欠けている。
  • Found extra(余剰発見): システム上は存在しない場所にアイテムが見つかる。

いずれの場合も、ビンとカウント(ゼロでも)を記録してください。レビューや調整のために記録が使えるようになります。

AppMasterで作る場合、入力画面をモバイルUIで最小限にし、スキャナー入力を採用し、写真やメモを各カウントラインに保存してスーパーバイザーが現場を追わずにレビューできるようにすると良いでしょう。

差異を記録し「大きなデルタ」ルールを設定する

Build your cycle count app
Turn your cycle count steps into a web and mobile app with approvals and audit trails.
Start Building

サイクルカウントアプリは、その差異ルール次第で信用できるかどうかが決まります。誰かが悪いカウントを数値の編集で「直せる」瞬間、プロセスは統制ではなく単なる提案になります。

各行でシンプルな算出を使います:

  • Variance(単位) = 計上数量 - システム数量
  • Variance(%) = (variance 単位 / システム数量)× 100

割合差は在庫が少ない品目での大きな問題を見つけるのに役立ちます。単位差は大量出荷の品目で費用に響く変動を拾うのに使います。システム数量が0の場合は特別扱いとして自動的にレビューに回すのが安全です。

「大きなデルタ」をどう定義するか

運用に合う閾値を使ってください。多くのチームは絶対数と割合を組み合わせ、低在庫品も高速回転品も漏れないようにしています。

例:

  • 日常SKU:10個以上または5%でレビュー
  • 高額部品:2個以上または20%
  • システム数量が0のカウントはすべて自動レビュー
  • 在庫がマイナスになる調整はすべてレビュー

ルールは説明しやすく保ちましょう。人はルールが理解できればコントロールを受け入れます。

次に、差異がゼロでない場合は理由コードを必須にします。これは、その場で簡単に「なぜ」を記録させ、後での報告を有用にします。典型的な理由コード:破損/期限切れ、誤ピック/欠品、移動(ビン変更)、入荷未処理、ラベルや単位の問題など。

最後に、リスクのある編集を防ぎます。カウンターがバッチ(または行)を提出したらロックしてください。本当に修正が必要なら、監督下の再カウントを要求して新しいエントリを作り、元の記録は残すようにします。このルール一つで監査証跡を守り、事後のこっそり修正を防げます。

スーパーバイザーによる迅速かつ監査可能なレビュー

スーパーバイザーのレビューは数分で終わるべきです。決め手は、審査者に必要な文脈を一画面で示し、操作をシンプルにすることです。

スーパーバイザーは生のカウントだけを見ればよいわけではありません。アイテムの最近の履歴:過去のサイクルカウント、期待在庫、最後のクリーンカウント以降に何が変わったか(入庫、出庫、返品、移動)を見たいのです。ワークフローがそのタイムラインを差異の横に表示できれば、スーパーバイザーは推測をやめられます。

スーパーバイザースクリーンに含めるべきもの

実務的に:

  • アイテムとロケーションの詳細(SKU、ビン、ロット/シリアルがあれば表示)
  • 期待数量と計上数量、単位差と割合差
  • そのアイテム/ロケーションの直近2〜3回のカウント
  • バッチ開始以降の最近の在庫移動
  • カウンターからのメモや写真(許可している場合)

アクションは実務に合わせます:明らかなら承認、無効なら却下、現場が乱雑なら再カウント要求、疑わしい行だけを分けてバッチの残りを先に進める、といった具合です。

大きなデルタの場合は承認前にコメントを必須にしてください。プロンプトは具体的に(破損発見、誤ピック確認、未処理入荷、単位問題など)します。

監査証跡を自動化する

すべての決定は自動で記録されるべきです:誰が決定したか、いつ、どのアクションか、レビューを引き起こした閾値、理由のテキスト。AppMasterで構築する場合、これらを承認ステップの一部としてキャプチャし、毎回記録が自動作成されるようにしてください。

承認された在庫調整を安全にポストする

Make batches easy to finish
Create batch statuses like Draft, Submitted, Approved, and Posted so work doesn’t stall.
Get Started

ポストはあなたの数値が実際に変わる瞬間です。在庫数量を更新し、何が、いつ、なぜ変わったかの永続的な記録を保存します。

承認とポストは別のステップに分けてください。承認は判断であり、ポストは在庫への書き込みです。これを混同すると、誤操作や未完のレビューで誰にも気づかれずに在庫が変わることがあります。

シンプルなルール:承認された差異のみが調整を作り、調整だけが在庫を更新します。

アイテムとロケーションごとに調整レコードを作成してください(SKUとビンごとに1行)。バッチ全体を一度にポストする場合でも各行に同じ参照を持たせて後で監査できるようにします:カウントバッチID、アイテム、ロケーション/ビン、システム数量、計上数量、デルタ、理由コード、承認者、承認日時、投稿者。

投稿前にいくつかの安全チェックを追加します:

  • バッチがロックされていること(カウントの編集不可)
  • 合計を再計算して承認以降に変更がないことを確認
  • 一意のpostedフラグとタイムスタンプで二重投稿を防止
  • 投稿用の権限ロールを別に設ける(カウンターとは別)
  • 元に戻せるパスを用意する(削除ではなく反対の調整で戻す)

投稿は画面上で明示的に行い、何行が変わるのか、全体のデルタはどれだけかの最終サマリーを表示してユーザーが結果を把握できるようにします。

統合は早めに計画してください。ERPやWMSが真のソースであるなら、ポストは「承認済み調整をエクスポートする」と扱い、他システムに適用させるのが安全です。AppMasterでは調整をテーブルとしてモデル化し、後でCSVエクスポートやAPI呼び出しを追加してもカウントワークフローを変えずに済みます。

例:承認が必要な大きな差異のシナリオ

ピッカーがBin A-14(アイテム:10mmボルト)のサイクルカウントを開始します。システムは直近の入荷とピック履歴から期待数量を50としています。現場でピッカーは43を数えました。

7個の差は、箱がラッシュ時に隣のビンに移された、ピックが完了扱いになっていない、返品がトランザクションなしで戻された、ビンラベルが擦れて別の場所に入れられた、など簡単な理由で起きます。

アプリ上でピッカーが「Submit Count」をタップすると、アプリはデルタ(-7、-14%)を計算します。倉庫ルールで10%以上は承認が必要なら、ここで自動的に調整の投稿は許可されず、Needs Reviewステータスに入り、再カウントを促します。

再カウントでピッカーは大きな箱の後ろに小さな未開封カートンを見つけ、再カウントを45に更新します。差異は-5(-10%)になりました。アプリはレビューを続け、「隠れたカートンを発見、再カウント完了」のような短いメモを促します。

スーパーバイザーはレビューキューを開き、元のカウント、再カウント、タイムスタンプ、誰が数えたかを確認します。選べるアクションは:

  • 45への調整を承認し、根本原因メモ(例:「保管レイアウトで視認性が悪い」)を追加する。
  • ビンが乱雑、あるいはアイテムがハイリスクなら却下して2回目の再カウントを要求する。
  • ミススロッティングが疑われる場合は近隣ビンのクイックチェックを指示する。

承認されると、アプリは50から45への在庫調整を投稿し監査証跡を残します。チームは学びも記録します:ビンを並べ替えて隠れたカートンを防ぐ、通路を離れる前にピック確認を徹底する、など。

サイクルカウントを信頼できなくする一般的なミス

Deploy your way
Deploy to your cloud or export source code when you’re ready to self-host.
Get Started

ほとんどのサイクルカウント問題は努力不足ではなく、小さなワークフローの穴が静かに数値を推測に変えてしまうことに起因します。

最大のミスの一つは人がシステム数量を上書きできることです。早く見えるかもしれませんが監査証跡を壊します。カウントは差異を作り、その差異が承認されて初めて調整が投稿されるべきです。そうすれば何がいつどう変わったかを常に追跡できます。

もう一つは移動する対象をカウントしてしまうことです。ピッキングや入庫、移動がカウント中に続くと差異は意味を失います。単純なカットオフでも助けになります:バッチ実行中は移動を停止するか、カウントウィンドウ内で移動があったら再カウントを要求する、などです。

バッチサイズは多くのチームが想像するより重要です。バッチが大きすぎるとシフトを跨いでしまい文脈が失われ、バッチが閉じないことがよくあります。小さなバッチは速いリズムとクリーンなデータを生みます。

よくある失敗パターン:差異に理由コードがない、承認がチャットで行われ記録がない、単位(個数 vs ケース)が不明確、個別に直してワークフローを通さない、迅速な編集で在庫調整の投稿をバイパスしてしまう、などです。

例:カウンターがビンで12個を見つけ、システムは20を示している。理由コードがなければ後で盗難か破損かピックミスか入荷ミスかがわかりません。承認がメッセージで行われていれば誰がリスクを受け入れたか証明できません。

良いサイクルカウントアプリはこれらのエラーを設計で防ぎます:システム数量のロック、理由コードの必須化、在庫調整が投稿される前の承認ステップ。

展開前のクイックチェックリスト

Automate recount routing
Use drag-and-drop business logic to route recounts when thresholds are triggered.
Build Now

最初の実稼働前に、一本の通路や小さな在庫室でドライランを行ってください。人をテストするのではなく、プロセスをテストします。

確認項目:

  • バッチのスコープが明確か:バッチ名、ロケーションやSKU範囲、カウント日、割り当てられたカウンターが表示されるか
  • 電波が悪くてもカウントできるか:オフラインが理想だが、キャッシュしたタスクリストと後で同期する、または同日中に入力する短い紙フォームのフォールバックでも良い
  • 差異閾値が合意されテストされているか:大きなデルタの定義(%、単位、または価値)を決め、低在庫と高額品で試す
  • スーパーバイザーのレビューが必須で時間枠があるか:大きなデルタはレビュワーに期限付きで回し、バッチが何日も開いたままにならないようにする
  • 投稿が安全で追跡可能か:承認された調整が誰が数えたか、誰が承認したか、何が変わったかの監査記録を作り、バッチをロックする

AppMasterで作る場合は、これらをBusiness Processでシンプルなルールに設定します:スコープを検証、閾値を強制、承認を要求、投稿してロック、の順です。

次のステップ:パイロット、改善、チームに合ったアプリを作る

小さく始めて素早く学んでください。1つの倉庫ゾーン、1つの製品ファミリー、短い理由コード一覧(破損、誤ピック、欠損、入荷未処理)を選びます。狭いパイロットはワークフローの混乱箇所、時間がかかりすぎる工程、頻繁にトリガーされる差異ルールを見つけやすくします。

パイロットを1週間走らせ、現場で実際に起きたことに基づいてワークフローを絞ります。目標はシンプルに:バッチを時間通りに終わらせ、差異を説明しやすくすること。

実務的な初週の計画:

  • 人が終えられる日次バッチサイズで1ゾーンをパイロット
  • 主要な差異をレビューし、理由コードがカバーしているか確認
  • スーパーバイザーが本当に見るべきものだけが来るよう閾値を調整
  • 再カウントが必要な場合と承認で充分な場合を決める
  • カウント方法、停止のタイミング、例外時の対応を1ページのチートシートにまとめる

基本が動いたら、自動化すべき項目を選びます。多くのチームは次を追加すると早期に効果が出ます:バッチ割り当てや期限切れの通知、大きなデルタで再カウントへ自動ルーティング、完了率や再発差異SKU、保留中承認のデイリーレポートなど。

ノーコードで作りたい場合の一例としてAppMaster(appmaster.io)は選択肢の一つです:在庫データをモデル化し、差異承認ステップを設定して、同じワークフローからWebとモバイルアプリを生成できます。

よくある質問

What is cycle counting, and how is it different from a full physical inventory?

サイクルカウントは、年に一度の全数棚卸の代わりに、小さなアイテムや棚を定期的に数える方法です。問題が小さいうちに見つけて原因を対処できるのが主な利点です。

How big should a cycle count batch be so people actually finish it?

一人が一シフトで急がず終わらせられるサイズから始めましょう。多くの倉庫ではまず20〜40ロケーションを目安にして、実際の所要時間や移動距離に応じて調整します。

Should we freeze inventory movement while a cycle count is in progress?

可能なら、アクティブなバッチ内のピッキングや入出庫をブロックしてください。動きを止められない場合は明確なカットオフ時間を設け、カウント中に取引が発生したら再カウントを要求します。

Do we need barcode scanning, or is manual entry fine?

ラベルが信頼できるならスキャンを使いましょう。ただし、破れたラベルや混載、端末故障に備えて手入力のフォールバックを必ず用意してください。識別→棚確認→数量入力の流れが実務では使いやすいです。

Should counters see the system quantity while they count?

期待数量は表示しても良いですが編集不可にしてください。カウンターが現場で数字を書き換えられると、カウントは差異を作る意味を失います。差異は作成され、承認された調整だけが在庫を更新します。

How do we set a good “large delta” threshold for approvals?

まずは単位数と割合の両方を使うルールから始めるのが実用的です。例えば「10個以上または5%」のようにして、低在庫品や高速回転品のどちらも見逃さないようにします。システム上の数量が0の場合は自動的にレビューに回すとよいでしょう。

What reason codes should we require when there’s a variance?

短い一覧で実際の原因をカバーする理由コードを使ってください。例:破損/期限切れ、誤ピック/欠品、入荷未処理、移動、ラベルや単位の問題。一定に保つことでレポートにパターンが出ます。

What should a supervisor do during variance review?

承認、拒否、再カウント要求を可能にし、大きな差異には短いメモを必須にしてください。レビュー画面は最近のカウントや移動履歴など判断に必要な文脈を示し、推測を減らします。

How do we post stock adjustments safely without creating new errors?

承認と在庫の反映は分けて運用します。承認された行だけが調整を作り、調整は誰が、何を、いつ変更したかの恒久的な記録を作ります。二重登録防止用のフラグやタイムスタンプも必須です。

Can we build this as a simple no-code app and still keep it auditable?

可能です。ワークフローを強制し、提出済みカウントのロック、理由コードの必須化、承認の自動記録を行えば、ノーコードでも監査可能な仕組みを作れます。AppMasterではバッチやラインをモデル化し、ビジネスプロセスで承認ルールを組めます。

始めやすい
何かを作成する 素晴らしい

無料プランで AppMaster を試してみてください。
準備が整ったら、適切なサブスクリプションを選択できます。

始める