「Customer Account API」でのメタフィールド値の書き込みが可能に

Shopifyが提供するCustomer Account APIが進化しました。2024年7月バージョンより、メタフィールド値の設定がCustomer、Order、Company、CompanyLocationリソースで可能になります。これにより、APIを使ったカスタマイズの幅が広がります。

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

これまで、Customer Account APIを使用しても、メタフィールド値の設定が可能なリソースは限られていました。Customer、Order、Company、CompanyLocationといったリソースのメタフィールド値を操作するには、直接データベースにアクセスするなど、別途手段を用いる必要がありました。

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

しかし、2024年7月バージョンのCustomer Account APIでは、「metafieldsSet mutation」を使って、これらのリソースのメタフィールド値を設定することが可能になります。これにより、API経由でより詳細なデータ操作が可能になり、カスタマイズの幅が広がります。

実装手順とコード例

たとえば、Customerリソースのメタフィールド値を設定する場合、以下のようなGraphQLのmutationを使用します。


mutation {
  metafieldsSet(
    id: "gid://shopify/Customer/1"
    metafields: [
      {
        key: "custom_key"
        value: "custom value"
        type: "single_line_text_field"
        namespace: "custom_namespace"
      }
    ]
  ) {
    userErrors {
      field
      message
    }
  }
}

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

この機能の導入により、データベースへの直接アクセスなど、別途の手間を省くことができます。また、APIを通じた操作なので、開発コストや運用コストも抑えられます。

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

ただし、この変更に伴い、Customer Account APIがメタフィールド定義への明示的な読み取りまたは読み書きアクセスを許可されている必要があります。つまり、アクセス許可のないメタフィールド定義は、Customer Account APIから利用できなくなります。これは重要な変更点であり、アクセスを設定するための「metafieldDefinitionCreate」や「metafieldDefinitionUpdate」のmutationsを利用する必要があります。

次のステップ・発展案

最後に、この変更は現在、Customer Account APIとAdmin APIの不安定版でテスト可能です。まずは不安定版で挙動を確認し、本番環境への適用を検討しましょう。

参考記事: Writing Metafield values available on the Customer Account API