Storefront APIの@inContextディレクティブが言語に対応

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

ShopifyのStorefront APIは、ストアフロントのデータを取得するための強力なツールです。しかし、これまでのバージョンでは、特定の国に基づいたリクエストしか行えませんでした。そのため、特定の言語設定でのデータ取得が必要な場合には、その機能が制限されていました。

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

2022-04バージョンから、Storefront APIの@inContextディレクティブがlanguage引数を受け付けるようになりました。これにより、ショップのマーケット設定で設定されている国で該当の言語が有効であれば、クエリは翻訳された値を返します。

3. 実装手順とコード例

利用可能な言語のリストは以下のクエリでアクセスできます。

query Localization @inContext(country: CA, language: FR) {
  localization {
    # for the current country
    availableLanguages {
      isoCode
      endonymName
    }
    # and for non-current countries
    availableCountries {
      isoCode
      name
      availableLanguages {
        isoCode
        endonymName
      }
    }
  }
}

もしサポートされていない言語や国が@inContext経由でリクエストされた場合、レスポンスはサポートされている値にフォールバックします。すべてのケースで、実際の国と言語のコンテキストはレスポンスエクステンションとして返されます。

{
  "data": {
    "productByHandle": {
      "title": "Cat bed",
      "variants": {
        "edges": [
          {
            "node": {
              "priceV2": {
                "amount": "100.0",
                "currencyCode": "CAD"
              }
            }
          }
        ]
      }
    }
  },
  "extensions": {
    "context": {
      "country": "CA",
      "language": "EN"
    }
  }
}

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

この新機能により、クエリの柔軟性が向上し、特定の言語でのデータ取得が可能になりました。これにより、国や言語による制約なく、より広範なマーケットに対応することが可能となります。パフォーマンスやコストに大きな影響はなく、既存のAPIの使用感を維持しながら新機能を利用できます。

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

この新機能を導入する際には、各国の言語設定を適切に管理することが重要です。また、サポートされていない言語や国をリクエストした場合のフォールバック動作を理解しておくことも重要です。

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

ストアフロントで複数の言語をサポートするための詳細な情報は、Shopifyの公式ドキュメンテーションを参照してください。今後、さらに多言語対応の拡張が期待されます。

参考記事: Storefront API @inContext directive supports languages