アーキテクチャ
このページでは、開発者や上級ユーザー向けにWCPOSの技術アーキテクチャを説明します。
二部構成システム
WCPOSは二部構成のシステムとして設計されています:
-
PHPプラグイン: サーバーにホストされている比較的小さなプラグインで、WooCommerce REST APIを拡張します。
-
JavaScriptクライアント: これはローカルであなたのブラウザまたはデスクトップアプリで実行され、後にはiOSおよびAndroidアプリでも利用可能になります。
これは二つの別々の世界と考えることができます:
- _PHP世界_は、WordPressとWooCommerceを使用してデータ管理が行われる場所です。
- _JavaScript世界_は、ローカルでWooCommerceストアを複製し、高速検索とオフライン使用に最適化されています。
SVG not found
データ同期
データはWooCommerce REST APIを使用してWooCommerceから取得されます。これは、POSがすべての製品、バリエーション、製品カテゴリ、顧客、税率などをローカルに保存するためにダウンロードする必要があることを意味します。
最初は時間がかかることがありますが、一度ダウンロードされると、サーバーから継続的に取得する必要なく、すぐに利用可能です。
同期するものは?
- 製品とバリエーション
- 製品カテゴリとタグ
- 顧客
- 税率と税クラス
- 支払いゲートウェイ(チェックアウト用)
- 注文(Proの注文履歴用)
同期戦略
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を参照してください。