Shopify Customer Account API:市場認識型認証URLへの対応

ShopifyのHeadless Storefrontに関与するWebエンジニアの皆さん、新たなAPIのアップデート情報がリリースされました。今回のアップデートでは、Customer Account APIの認証エンドポイントにlocaleregion_countryパラメータを渡すことで、市場認識型のログイン体験を構築できるようになりました。

技術的課題と現状分析

これまで、Liquid storefrontsは{{ routes.account_login_url }}というコードで自動的に市場状況を認識し、それに応じたログインURLを生成していました。しかし、headless storefrontsでは、市場状況に対応したログインURLを構築するための公式な方法が文書化されていませんでした。

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

今回のアップデートでは、Customer Account APIの認証エンドポイントに、次の2つのオプションパラメータを追加しました。

  • locale: ログイン画面の言語を制御します。市場特有の翻訳をロードするための地域変数、例えばfr-CAen-GBをサポートしています。
  • region_country: ポリシー、ブランディング、その他の非翻訳コンテンツの市場コンテキストを制御します。ISO 3166-1 Alpha-2国コードを使用します。

これらのパラメータは、独立して使用することも、一緒に使用して完全にローカライズされたログイン体験を提供することも可能です。

実装手順とコード例

以下に、これらのパラメータを使用して認証URLを生成する簡単なコード例を示します。


// APIエンドポイントへのリクエスト
const endpoint = "https://your-store.myshopify.com/account/login";

// パラメータの設定
const params = {
  locale: "fr-CA",
  region_country: "CA"
};

// URLの構築
const url = new URL(endpoint);
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));

// 生成したURLの使用
fetch(url).then(/* レスポンス処理 */);

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

このアップデートにより、headless storefrontsでも市場認識型のログイン体験を提供できるようになります。これにより、ユーザーは自分の市場に適したログイン画面を見ることができ、ユーザー体験が向上します。また、エンジニアはShopifyの既存のAPIを活用してカスタマイズ性を高めることができます。

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

パラメータを設定する際は、localeには対応する言語コード、region_countryにはISO 3166-1 Alpha-2国コードを指定するように注意してください。また、これらのパラメータはオプションであるため、必要に応じて使用することが可能です。

次のステップ・発展案

市場認識型のログイン体験をさらに進化させるためには、ユーザーの地域情報を取得し、その情報に基づいて自動的にlocaleregion_countryパラメータを設定する仕組みを検討してみてください。

参考記事: Support for market-aware auth URLs in Customer Account API