Adobe Commerceの Catalog Service
Catalog Service for Adobe Commerce拡張機能は、次のような商品関連のストアフロントエクスペリエンスをすばやく完全にレンダリングするための、機能豊富なビューモデル(読み取り専用)カタログデータを提供します。
- 製品詳細ページ
- 製品リストページとカテゴリページ
- 検索結果のページ
- 製品カルーセル
- 製品比較ページ
- 買い物かご、注文、ウィッシュリストページなど、商品データをレンダリングするその他のページ
Catalog Service は GraphQL を使用して、商品、商品属性、在庫、価格などのカタログデータをリクエストおよび受け取ります。 GraphQLは、フロントエンドクライアントが、Adobe Commerceなどのバックエンドで定義されたアプリケーションプログラミングインターフェイス(API)との通信に使用するクエリ言語です。 GraphQLは軽量で、システムインテグレーターが各応答の内容と順序を指定できるため、一般的な通信方法です。
Adobe Commerceには 2 つのGraphQL システムがあります。 コア GraphQL システムは、買い物客が商品、お客様のアカウント、買い物かご、チェックアウトなど、多くの種類のページを操作できる幅広いクエリ(読み取り操作)とミューテーション(書き込み操作)を提供します。 ただし、製品情報を返すクエリは、速度が最適化されていません。 サービスGraphQLシステムは、商品および関連情報に対してのみクエリを実行できます。 これらのクエリは、類似のコアクエリよりもパフォーマンスが高くなります。
カタログサービスで使用可能なデータは、SaaS データエクスポート拡張機能によって配信されます。 この拡張機能では、Commerce アプリケーションと接続されたCommerce サービスの間でデータを同期し、サービス GraphQL API エンドポイントへのクエリが最新のカタログデータを返すようにします。 SaaS データ書き出し操作の管理とトラブルシューティングについては、『 SaaS データ書き出しガイド』を参照してください。
Catalog Service のお客様は、より迅速な価格更新と同期時間を提供する SaaS 価格インデクサーを使用できます。
アーキテクチャ
次の図に、2 つのGraphQL システムを示します。
コア GraphQL システムでは、PWAがCommerce アプリケーションにリクエストを送信し、各リクエストを受け取って処理し、場合によっては複数のサブシステムを介してリクエストを送信してから、ストアフロントに応答を返します。 このラウンドトリップは、ページの読み込み時間が遅くなる可能性があり、コンバージョン率の低下につながる可能性があります。
Catalog Service は Storefront Services Gateway です。 サービスは、製品の詳細と関連情報(製品属性、バリアント、価格、カテゴリなど)を含む別のデータベースにアクセスします。 サービスは、インデックス化を通じてデータベースをAdobe Commerceと同期させ続けます。
サービスはアプリケーションとの直接通信をバイパスするので、要求および応答サイクルの待ち時間を短縮できます。
コアおよびサービスのGraphQL システムは、相互に直接通信しません。 異なる URL から各システムにアクセスする場合、呼び出しには異なるヘッダー情報が必要です。 2 つのGraphQL システムは、一緒に使用するように設計されています。 Catalog Service GraphQL システムは、コアシステムを強化して、製品ストアフロントのエクスペリエンスを高速化します。
オプションで、Adobe Developer App Builderの API メッシュを実装して、2 つのAdobe Commerce GraphQL システムをAdobe Developerを使用してプライベートおよびサードパーティの API やその他のソフトウェアインターフェイスと統合できます。 メッシュは、各エンドポイントにルーティングされる呼び出しにヘッダーの正しい認証情報が含まれるように設定できます。
アーキテクチャの詳細
以下の節では、2 つのGraphQL システムの違いの一部を説明します。
スキーマ管理
カタログサービスはサービスとして機能するので、インテグレーターはCommerceの基盤となるバージョンについて心配する必要はありません。 クエリの構文は、すべてのバージョンで同じです。 また、このスキーマはすべてのマーチャントで一貫しています。 この一貫性により、ベストプラクティスの確立が容易になり、ストアフロントウィジェットの再利用が大幅に増加します。
製品タイプの簡素化
このスキーマにより、製品タイプの多様性は次の 2 つのユースケースに限定されます。
-
シンプル製品とは、1 つの価格と数量で定義される製品です。 カタログサービスは、シンプル、仮想、ダウンロード、ギフトカードの製品タイプを
simpleProductViews
にマッピングします。 -
複雑な製品は、複数の単純な製品で構成されます。 コンポーネントのシンプルな製品は異なる価格を持つことができます。 買い物客がコンポーネントのシンプルな製品の数量を指定できるように、複雑な製品を定義することもできます。 カタログサービスは、設定可能な製品タイプ、バンドルタイプ、グループ化された製品タイプを
complexProductViews
にマッピングします。
複雑な製品オプションは、タイプではなく行動によって統一され、区別されます。 各オプション値は単純な製品を表します。 このオプション値は、価格を含む単純な製品属性にアクセスできます。 買い物客が複雑な製品のすべてのオプションを選択すると、選択したオプションの組み合わせは、特定の単純な製品を指します。 シンプルな商品は、買い物客が使用可能なすべてのオプションの値を選択するまで、あいまいなままです。
価格
単純な製品は、価格のある基本販売単位を表します。 Catalog Service は、割引前の通常価格と、割引後の最終価格を計算します。 価格の計算には、固定製品税を含めることができます。 パーソナライズされたプロモーションは除外されます。
複雑な製品には定価がありません。 代わりに、カタログサービスはリンクサンプルの価格を返します。 例えば、マーチャントは最初に設定可能な商品のすべてのバリエーションに同じ価格を割り当てることができます。 特定のサイズや色が人気がない場合、商人はそれらのバリアントの価格を下げることができます。 したがって、最初の複雑な(設定可能な)製品の価格は、標準的なバージョンと人気のないバージョンの両方の価格を反映して、価格範囲を示しています。 買い物客が使用可能なすべてのオプションの値を選択すると、ストアフロントに単一価格が表示されます。
カタログサービスは、大きな値(最大 16 桁)と高い小数点精度(最大 4 桁)の価格をサポートすることで、正確な価格の更新と計算を保証します。
実装
インストールプロセスには、Commerce サービスコネクタの設定が必要です。 これが完了したら、次の手順として、システムインテグレーターがストアフロントコードを更新して、Catalog Service のクエリを組み込みます。 すべての Catalog Service クエリは、GraphQL ゲートウェイにルーティングされます。 URL はオンボーディングプロセス中に提供されます。