GraphQL APIのMoneyV2関連フィールドに関する変更点

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

ShopifyのStorefront APIでは、これまで金額フィールドに対してMoneyスカラーが使用されていました。しかし、V2接尾辞を持たない金額フィールド(<name>: Money)については2022-10からMoneyスカラーが廃止されることが予定されています。これにより、APIの一貫性を保つための新たな課題が生まれています。

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

この問題に対する解決策として、以下の変更が提案されています:

  • V2接尾辞を持たないフィールドは今後、タイプとしてMoneyV2オブジェクトを使用します(<name>: MoneyV2)。
  • V2接尾辞を持つ金額フィールド(<name>V2: MoneyV2)は、<name>: MoneyV2に対して非推奨となり、今後のリリースでは削除されます。

3. 実装手順とコード例

これらの変更を適用するには、以下の手順を実行します。

  1. まず、V2接尾辞を持たない金額フィールドのタイプをMoneyからMoneyV2に変更します。
  2. 
    // Before
    {
      "product": {
        "price": {
          "amount": "999.99",
          "currency": "JPY"
        }
      }
    }
    // After
    {
      "product": {
        "priceV2": {
          "amount": "999.99",
          "currency": "JPY"
        }
      }
    }
    
  3. 次に、V2接尾辞を持つ金額フィールドを非推奨にし、その代わりに<name>: MoneyV2を使用します。

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

この変更により、APIの一貫性が向上し、フィールド使用時の混乱が避けられます。また、MoneyV2オブジェクトを使用することにより、より詳細な金額情報を取得することが可能となります。ただし、既存のコードの修正が必要なため、初期の労力と時間が必要です。

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

既存のフィールドを修正する際は、互換性を保つためにも十分なテストが必要です。また、V2接尾辞を持つ金額フィールドが非推奨となるため、新たなフィールドへの移行を計画し、その実装を進めることが重要です。

6. 次のステップ・発展案

今後は、APIの他の部分でも同様の統一性を持たせることにより、より使いやすく、理解しやすいAPIの開発を目指すことが求められます。

参考記事: Changes to GraphQL API MoneyV2-related fields