アーキテクチャ
このページでは、開発者や上級ユーザーのために、WCPOSの技術的なアーキテクチャについて説明します。
二部構成システム
WCPOSは二部構成のシステムとして設計されています:
-
PHPプラグイン: サーバー上にホストされる比較的小さなプラグインで、WooCommerce REST APIを拡張します。
-
JavaScriptクライアント: ブラウザやデスクトップアプリでローカルに実行され、後にiOSおよびAndroidアプリでも使用されます。
これは二つの別々の世界として考えることができます:
- _PHPの世界_では、データ管理がWordPressとWooCommerceを使用して行われます。
- _JavaScriptの世界_では、ローカルにWooCommerceストアが再現され、迅速な検索とオフライン使用のために最適化されています。
SVG not found
データ同期
データは、WooCommerce REST APIを使用してWooCommerceから取得されます。これは、POSがすべての製品、バリエーション、製品カテゴリ、顧客、税率などをローカルに保存するためにダウンロードする必要があることを意味します。
初期のダウンロードには時間がかかることがありますが、一度ダウンロードが完了すれば、サーバーから継続的に取得する必要なく即座に利用可能です。
何が同期されるのか?
- 製品とバリエーション
- 製品カテゴリとタグ
- 顧客
- 税率と税クラス
- 支払いゲートウェイ(チェックアウト用)
- 注文(プロの注文履歴用)
同期戦略
WCPOSは増分同期戦略を使用しています:
- 初回同期: 最初のロード時にすべてのデータをダウンロード
- 増分更新: 最後の同期以降の変更のみを取得
- バックグラウンド同期: 定期的に更新を確認
- 手動同期: ユーザーはいつでも同期をトリガーできます
アーキテクチャの利点と欠点
| 良い点 😊 | 悪い点 😟 |
|---|---|
| ローカルデータの検索は瞬時 | データの同期を保つのが難しい |
| キャッシュされたデータがオフラインで利用可能 | WooCommerce REST APIに制限される |
| デスクトップ、iOS、Android向けのより良いネイティブアプリを作成できる | WordPressテーマやフックはPOSアプリをカスタマイズできない |
ローカルデータベース
JavaScriptクライアントはIndexedDBにデータを保存します。これはブラウザベースのデータベースです。これにより、次のような利点があります:
- 永続性: データはブラウザの再起動後も存続します
- パフォーマンス: ネットワーク遅延なしで高速クエリが可能
- オフラインブラウジング: キャッシュされたデータはインターネットなしでアクセス可能
チェックアウトアーキテクチャ
チェックアウトプロセスは、WooCommerceの注文お支払いページを読み込むiframe/webviewを使用します。このアプローチは:
- 既存の支払いゲートウェイを活用: すべてのWooCommerce支払いゲートウェイがPOSで機能します
- セキュリティを維持: 支払い処理はWooCommerceの安全なインフラストラクチャを通じて行われます
- 複雑さを減少: 支払いゲートウェイの統合を再実装する必要がありません
API拡張
PHPプラグインは、POS固有の機能のためにWooCommerce REST APIを追加のエンドポイントで拡張します。詳細についてはWooCommerce REST APIを参照してください。