Storefront GraphQL APIで`@defer`ディレクティブを使用して配送業者計算レートを取得する

ShopifyのStorefront GraphQL APIにおいて、新たな機能が追加されました。これは、Cart#deliveryGroupsが新たにwithCarrierRates引数をサポートし、配送業者によって計算されたレートを取得する意図を示すことができるようになったものです。

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

これまでのShopifyでは、カートのレスポンスがレートの計算によってブロックされることを防ぐため、@deferディレクティブの使用が必須となっていました。しかし、この要件は開発者にとって負担となる場合がありました。

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

この新たな機能により、開発者は@deferディレクティブを使用して、カートのレスポンスをブロックすることなく、配送業者によって計算されたレートを取得することが可能となります。

実装手順とコード例

この新たな機能を使用するには、以下のようなコードをGraphQLのクエリに追加します。


{
  cart(id: "cart_id") {
    deliveryGroups(withCarrierRates: true) @defer {
      edges {
        node {
          id
        }
      }
    }
  }
}

このコードにより、カート内の各商品に対して配送業者によるレートが計算され、その結果が取得できます。

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

この新たな機能の導入により、開発者はクエリのパフォーマンスを向上させることができます。レートの計算がカートのレスポンスをブロックすることを防ぐため、ユーザー体験の向上に繋がります。また、APIのレスポンス時間も短縮され、全体的なシステムのパフォーマンスも向上します。

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

この機能を使用する際には、@deferディレクティブの使用が必須であることを忘れないようにしてください。また、このディレクティブはGraphQLのクエリ内でのみ有効であり、REST APIでは使用することはできません。

次のステップ・発展案

今後は、この機能をさらに拡張して、ショップのオーナーが配送業者のレートをカスタマイズできるような機能を考えることが可能です。これにより、さらなるユーザー体験の向上が期待できます。

参考記事: Fetching carrier-calculated rates through `@defer` directive in Storefront GraphQL API