Customer Account APIに`@inContext` ディレクティブが追加されました

APIの多言語対応は、多国籍なECビジネスを展開するShopify開発者にとって、常に重要な課題の一つです。特にCustomer Account APIを使用する際、言語設定によって戻り値が変わることがあり、これを制御するための明確な手法が求められていました。

新たな技術的ソリューション:`@inContext` ディレクティブ

この課題を解決するため、ShopifyはAPIバージョン 2025-04で`@inContext` ディレクティブをCustomer Account APIに追加しました。このディレクティブはlanguageという引数を取り、要求された言語がショップの言語設定で有効な場合、クエリは翻訳された値を返します。サポートされていない言語や国が要求された場合は、デフォルト言語にフォールバックします。

実装手順とコード例

以下の操作は、このディレクティブの使用例を示しています。


mutation customerAddressUpdate @inContext(language: FR){
	customerAddressUpdate(address: {phoneNumber: "invalid123"}, addressId: "gid://shopify/CustomerAddress/123456" ) {
		userErrors {
			code
			field
			message
		}
	}
}

Response:


{
	"data": {
		"customerAddressUpdate": {
			"userErrors": [
				{
					"code": "PHONE_NUMBER_NOT_VALID",
					"field": null,
					"message": "Le numéro de téléphone n'est pas valide."
				}
			]
		}
	},
	"extensions": {
		"context": {
			"country": "CA",
			"language": "FR"
		},
		"cost": {
			"requestedQueryCost": 10,
			"actualQueryCost": 10
		}
	}
}

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

`@inContext` ディレクティブの使用はクエリのコストに大きな影響を与えません。上記の例では、要求されたクエリコストと実際のクエリコストは共に10となっています。

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

実装時には、サポートされていない言語や国が要求された場合にはデフォルト言語にフォールバックすることを覚えておくことが重要です。例外処理を適切に実装することで、システムの安定性とユーザー体験を向上させることができます。

次のステップ・発展案

今後、ShopifyのAPIはさらに多言語対応を強化していくと予想されます。特に国際的なEC事業を展開している開発者は、最新のAPIが提供する多言語対応機能に注目し、適時導入を検討していくことをお勧めします。

参考記事: `@inContext` directive added to the Customer Account API