在庫カウントがずれる場合

更新日:2026-08-28読了目安:5分

イベントの残席数・在庫カウントが実際と異なる場合の原因と修正方法を解説します。

在庫カウントずれの主な原因

在庫(残席)カウントがずれる最も一般的な原因は、予約処理中の異常終了です。例えば、支払い処理中にネットワークエラーが発生した場合、在庫は減算されているが予約レコードが作成されていない、という中途半端な状態になることがあります。

予約番号(BK-{タイムスタンプ}-{ランダム値}形式)が発行されているにもかかわらず、在庫数が想定より少ない場合は、「孤立予約」が発生している可能性があります。管理画面の「在庫診断」ツールを実行すると、予約番号は存在するが確定していない予約の一覧が表示されます。

複数の管理者が同時にイベントの定員を編集した場合、レース条件によってカウントが不整合になるケースもあります。定員変更は必ず1人の管理者が行い、変更後に在庫数を手動で確認するようにしてください。

在庫数の手動確認と修正

在庫数の正確な値を確認するには、管理画面の「イベント詳細」→「予約一覧」で確定済み・保留中・キャンセル済みの予約数を合計し、イベント定員と比較してください。計算式は「残席数 = 定員 - (確定済み + 保留中)」となります。

表示されている在庫数が計算値と異なる場合は、「在庫再計算」ボタンをクリックしてデータベースから直接カウントを再計算できます。この操作はアトミックに実行されるため、実行中の予約処理に影響を与えません。

予約番号(BK-{タイムスタンプ}-{ランダム値})が発行されているにもかかわらず予約データが存在しない「孤立エントリ」については、管理者メニューの「孤立データのクリーンアップ」から安全に削除できます。削除前に必ずバックアップを取得してください。

在庫カウントずれの予防策

在庫カウントのずれを予防するには、定期的な在庫整合性チェックを設定することをお勧めします。「自動診断」機能を有効にすると、毎朝指定した時間に在庫の整合性チェックが実行され、不一致が検出された場合にメールで通知されます。

高需要イベントでは、予約の「仮押さえ」時間を短く設定することが有効です。デフォルトの15分から5〜10分に短縮することで、決済を完了しなかった仮押さえが在庫を長時間占有することを防げます。

APIで在庫数を直接更新する際は、楽観的ロックの仕組みを活用してください。更新リクエストに「expectedVersion」パラメータを含めることで、他のプロセスが先に更新した場合にコンフリクトエラー(409)が返され、意図しない上書きを防止できます。