Cart AJAX APIとStorefront Cart GraphQL APIの並行処理改善

2025年10月10日から、ShopifyのCart AJAX APIとStorefront Cart GraphQL APIは、同時に送信されたリクエストを受け取った順に処理するようになりました。これは、それぞれのAPIにおけるバグ修正として行われましたが、テーマやストアフロントが重複したリクエストを送信している場合には更新が必要となるかもしれません。

技術的課題の定義と現状分析

以前のCart AJAX APIとGraphQL APIでは、同時に送信されたリクエストの取り扱いに一貫性がありませんでした。これにより、リクエストがドロップすることがありました。具体的には、2つのカートaddリクエストを同時に送信した場合、それらのリクエストが適切に順序付けられず、期待する結果が得られないことがありました。

具体的な技術的ソリューションの提案

現在の改善により、Cart AJAX APIとStorefront Cart GraphQL APIは、同時に送信されたリクエストを受け取った順に処理します。これにより、リクエストのドロップが防げます。ただし、同時に送信されたリクエストが多すぎる場合は、Cart AJAX APIはHTTP 409レスポンスを返し、Storefront Cart GraphQL APIは"CONFLICT"のエラーコードと"Could not complete cart operation. The cart conflicted with another request"のメッセージを返します。

実装手順とコード例

この改善はAPI自体に対するものなので、開発者が新たにコードを書く必要はありません。ただし、テーマやストアフロントが無意識に重複したリクエストを送信している場合には、そのリクエストを最適化する必要があります。

パフォーマンス・コスト分析

この改善により、同時に送信されたリクエストが適切に取り扱われるようになり、リクエストのドロップが防がれます。これにより、ユーザー体験は向上し、ショッピングカートに関連する問題による売上損失を防ぐことができます。

実装時の注意点・ベストプラクティス

同時に送信されたリクエストが多すぎると、Cart AJAX APIはHTTP 409レスポンスを返し、Storefront Cart GraphQL APIはエラーを返します。これを避けるためには、同時に送信するリクエストの数を適切に制限することが重要です。

次のステップ・発展案

ShopifyのAPIは常に進化しています。今後も新たな改善が提供されることでしょう。そのため、開発者はShopifyの公式ドキュメンテーションとChangelogを定期的にチェックし、最新の情報に常に対応していく必要があります。

参考記事: Improved concurrency handling in the Cart AJAX API and Storefront Cart GraphQL API