`productCreate`と`productUpdate`ミューテーションの動的複雑性コスト

ShopifyのGraphQL APIを使用して商品データの作成と更新を行うためのproductCreateproductUpdateミューテーションのコスト計算が、より正確な動的複雑性コストに改善されました。

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

従来、これらのミューテーションのコストは一律で計算されていました。しかし、商品のメタフィールドやメディアの数によって、実際の計算負荷は大きく異なります。この改善により、実際の計算負荷により近い複雑性コストが反映されるようになります。

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

新たに導入された動的複雑性コストでは、productCreateproductUpdateミューテーションの基本コストは10ポイントと設定されており、入力の複雑さに基づいて追加のポイントが計算されます。

  • 基本コスト: 10 ポイント
  • 商品メタフィールドごと: 0.4 ポイント
  • 商品メディアごと: 1.9 ポイント

合計の複雑性は以下のように計算されます:


10 +
  (商品メタフィールド数 × 0.4) +
  (商品メディア数 × 1.9)

実装手順とコード例

この改善はShopifyのAPIに直接反映されるため、開発者の方々が特別に対応する必要はありません。ただし、単一のクエリで1000ポイントを超える高複雑性商品を扱うアプリの場合は、以下の注意点を考慮する必要があります。

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

高複雑性商品を扱うアプリの場合、以下の対処が推奨されます:

  • 大規模な操作の場合は、一括ミューテーションを使用する
  • 複雑な操作を分割して、productCreateproductUpdateミューテーションで基本の商品データを扱い、metafieldsSetfileCreateを使用して追加データを扱う

これにより、単一のクエリでの複雑性が1000ポイントを超える問題を回避することができます。

次のステップ・発展案

今回の改善により、ミューテーションの複雑性コストがより正確に反映されるようになりました。Shopifyでは今後もAPIの改善を進めていく予定なので、変更情報に注目していただくことをおすすめします。

また、ShopifyのAPIの最新情報やベストプラクティスについては、公式ドキュメンテーションも参照してください。

参考記事: Dynamic complexity cost for `productCreate` and `productUpdate` mutations