「metafieldsSet」変異における「MetafieldsSetInput.type」をnull許容に更新しました

多くのShopify開発者が経験する課題の一つに、メタフィールドのミューテーション操作が挙げられます。これまで、metafieldsSetのAPIでは、MetafieldsSetInput.typeフィールドが必須でした。しかし、既存のメタフィールド定義が存在する場合には、このフィールドを省略してミューテーションを簡素化することが可能となるべきです。これが本記事のテーマとなります。

技術的な解決策

2023年のGraphQL Admin APIリリースに伴い、MetafieldsSetInput.typeフィールドをnull許容に更新しました。これにより、既に対応するメタフィールド定義を持つメタフィールドを変異させる場合、typeフィールドを省略することでミューテーションを簡素化することが可能になりました。

実装手順とコード例

以下は、typeフィールドを省略したmetafieldsSetミューテーションの例です:

mutation {
  metafieldsSet(input: {
    ownerId: "gid://shopify/Product/1",
    namespace: "my_namespace",
    key: "my_key",
    value: "This is a value"
  }) {
    userErrors {
      field
      message
    }
    metafields {
      id
    }
  }
}

ただし、メタフィールドが指定されたownerIdnamespacekeyに対応する定義を持っていない場合、typeフィールドは引き続き必須です。

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

この更新により、既存のメタフィールド定義が存在する場合のミューテーション操作が簡素化され、開発の手間と時間が削減されます。これは、API呼び出しの数を減らすことでパフォーマンスを向上させ、開発コストを削減する可能性があります。

注意点・ベストプラクティス

ただし、メタフィールドが指定されたownerIdnamespacekeyに対応する定義を持っていない場合、typeフィールドは引き続き必須です。そのため、typeフィールドを省略する前に、メタフィールドの定義を確認することが推奨されます。

次のステップ

今後は、この改善を活用して、メタフィールドの操作をより効率的に行うことが可能になります。また、ShopifyのAPIがさらに進化することで、より多くのフィールドがnull許容になる可能性もあります。続報をお待ちください。

参考記事: Updated MetafieldsSetInput.type to be nullable for metafieldsSet mutation