商品の同期
WCPOS は各デバイスに商品のローカルコピーを保持します。そのため、カタログの閲覧と検索は瞬時に行われ、オフラインでも動作し続けます。このガイドでは、商品がどのようにデバイスに取り込まれ、どのように最新の状態に保たれるかを説明します。
v1.10.0 では新しい同期エンジンが導入されました。ご利用の POS が v1.10.0 より前の場合は、後述の v1.10.0 での変更点を参照してください。
商品がデバイスに取り込まれる仕組み
- カタログのシードがバックグラウンドで実行されます。 初回起動時から、POS はスケジュールに従ってカタログを小分けにダウンロードします。ユーザーが何かをする必要はありません。最初の商品が取り込まれた時点で販売を開始できます。チェックアウトはダウンロードの完了を待ちません。
- 表示しているものはオンデマンドでダウンロードされます。 検索、カテゴリーによる絞り込み、バーコードのスキャンを行うと、該当する商品がまだローカルにない場合は直接取得されます。検索が無関係な商品まで一緒に引き込むことはなくなり、求めたものだけを取得します。
- 更新は変更チェックによって届きます。 商品がローカルに保存された後、POS は変更の有無を調べるために再ダウンロードすることはありません。軽量な変更ログをポーリングし(デフォルトのプリセットでは60秒ごと)、実際に変更されたものだけを取得します。更新のない店舗では、ほとんど負荷のかからない「変更なし」の応答が1回返るだけです。
バッチの大きさは?
デフォルトでは、POS は 一度に50件の商品 をリクエストします。これは固定の定数ではなくなり、ストアヘルス → パフォーマンス の同期プリセットで設定される2つのダイヤルのうちの1つです。
| プリセット | チェック間隔 | リクエストあたりのレコード数 |
|---|---|---|
| Eco | 5 分 | 25 |
| Balanced(デフォルト) | 60 秒 | 50 |
| Realtime | 10 秒 | 75 |
小さなバッチはサーバーを保護するために存在します。大きなページの生成には実際のサーバー時間がかかり、共有ホスティングではストアフロントが遅くなったり、レート制限に達したりする可能性があります。控えめなホスティングでは Eco を、強力なホスティングで複数のレジを運用する店舗では Realtime を選択してください。詳細はストアヘルスを参照してください。
ダウンロードの進捗を確認する
ストアヘルス → データベース を開くと、コレクションごとに、このデバイスにあるレコード数とサーバー上のレコード数がカバレッジバーとともに表示されます。サーバー上 の数値はサーバーが実際に報告した合計です。POS がまだ確認中の場合は、推測値ではなく 確認中… と表示されます。
商品のバーが途中までの場合は、単にシードが完了していないだけで、バックグラウンドで引き続き埋まっていきます。特定の商品が見当たらない場合は、その商品を検索してください。検索によって直接取得されます。
コレクションが止まっているように見える場合は、すべてのローカルデータのクリアという全体リセットに進む前に、ストアヘルス → データベース の該当行で クリアして再ダウンロード を使用してください。
v1.10.0 での変更点
以前のバージョンでは、カタログは 使用に伴って段階的に ダウンロードされていました。検索やスクロールのたびに次のバッチが取得され、5分ごとに全件のポーリングが実行されていました。このモデルは廃止されました。v1.10.0 では:
- カタログはスケジュールされたバックグラウンドのシードによって埋まります。商品をダウンロードさせるために検索やスクロールをする必要はありません。
- 検索は、任意の次のバッチではなく、検索条件に一致する商品を取得します。
- 変更チェックは、5分固定の全件ポーリングではなく、選択したプリセットの間隔(デフォルトは60秒)で条件付きリクエストを使って実行されます。
- ダウンロードの進捗は ストアヘルス → データベース でコレクションごとに確認できます。
開発者向けの詳しい仕組みは、同期エンジンの仕組みに記載されています。
よくある質問
商品をダウンロードするために何か操作が必要ですか?
いいえ。カタログのシードがバックグラウンドで自動的に商品をダウンロードします。検索や絞り込みを行うと、まだローカルにない特定の商品はすぐに取得されますが、ダウンロードを完了させるのは通常の閲覧操作ではなく、バックグラウンドのシードです。
商品の変更はどれくらいの速さで POS に届きますか?
デフォルトの Balanced プリセットでは、POS は60秒ごとに変更を確認します(複数のレジが同時にサーバーへアクセスしないよう、チェックのタイミングはわずかにランダム化されます)。取得されるのは変更された商品だけです。複数のレジが互いの変更をより早く反映する必要がある場合は、Realtime プリセットを使用してください。
POS ですべての商品が表示されません
いくつかの可能性があります。
- バックグラウンドのシードがまだ完了していないだけかもしれません。ストアヘルス → データベース の商品の行を確認してください。
- POS はデフォルトで在庫切れ商品を非表示にします。これは商品表示設定で変更できます。
- WooCommerce REST API は標準の商品タイプ(シンプル、バリエーション、グループ化、外部)のみに対応しています。カスタム商品タイプは POS に表示されない場合があります。