新たな`Cart.discountAllocations`フィールドと`CartLine.discountAllocations`の変更

GraphQL Storefront API 2022-07版のリリースに伴い、CartCartLine上のdiscountAllocationsの返し方が変更されました。これにより、ショッピングカート全体と各商品ラインに適用される割引の扱いがより明確になり、より正確な割引計算とパフォーマンス改善が期待できます。

技術的課題と現状分析

従来、CartLine.discountAllocationsはカート全体に適用される割引と各商品ラインに適用される割引の両方を返していました。これにより、具体的な商品ラインの割引額を特定する際に混乱が生じることがありました。また、全体の割引額を算出する際にも、各商品ラインの割引額を除外する必要がありました。

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

この問題を解決するために、新たなフィールドCart.discountAllocationsが導入され、CartLine.discountAllocationsの動作が変更されました。

  • Cart.discountAllocationsがカート全体に適用される割引額を返すようになりました。
  • CartLine.discountAllocationsは特定の商品ラインに適用される割引額のみを返すようになりました。

これにより、カート全体の割引と商品ラインごとの割引が明確に分離され、割引額の計算が容易になりました。

実装手順とコード例

新たなフィールドの利用方法は以下の通りです。


// カート全体の割引額を取得
const cartDiscounts = cart.discountAllocations;

// 商品ラインごとの割引額を取得
const lineDiscounts = cartLine.discountAllocations;

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

この変更により、割引額の計算処理が簡素化され、パフォーマンスが改善されます。全体の割引額と各商品ラインの割引額が分離されたことで、割引額の計算ロジックが簡単になり、開発コストも削減されます。

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

CartLine.totalは、カート全体に適用される割引を適用せず、商品ラインレベルの割引のみを適用した合計額を反映します。したがって、全体の割引を反映したい場合は、Cart.discountAllocationsを使用してください。

次のステップ・発展案

今後は、これらの新たなフィールドを活用し、より正確で高速な割引計算を実現するアプリケーションの開発を進めていきましょう。

参考記事: New `Cart.discountAllocations` field and change in `CartLine.discountAllocations`