Metafieldとは
ShopifyのMetafieldは、商品に独自の情報を追加できる機能です。標準では用意されていない「シーズン」「対象スポーツ」「素材タイプ」などの属性を、自由に設定できます。
設定した属性の例
商品の特性に合わせて、以下のような属性を設定しました。
| 属性名 | 説明 | 設定例 |
|---|---|---|
| シーズン | 春夏・秋冬・通年 | SS, FW, ALL |
| 性別 | 対象の性別 | メンズ, レディース, ユニセックス |
| カテゴリ | 商品の種類 | ジャケット, パンツ, ヘルメット |
| スポーツ種別 | 対応するスポーツ | モーターサイクル, スキー, MTB |
シーズン
説明春夏・秋冬・通年
設定例SS, FW, ALL
性別
説明対象の性別
設定例メンズ, レディース, ユニセックス
カテゴリ
説明商品の種類
設定例ジャケット, パンツ, ヘルメット
スポーツ種別
説明対応するスポーツ
設定例モーターサイクル, スキー, MTB
フィルター処理の仕組み
お客様がフィルターを選択すると、その条件がAPIに送信されます。APIは条件を解析し、Shopifyのフィルター形式に変換してデータを取得します。
処理の流れ
- URLパラメータの解析: お客様が選んだ条件を読み取る
- 値の正規化: 表記ゆれを統一(「メンズ」「Men」→「Man」)
- フィルター変換: Shopify APIが理解できる形式に変換
- データ取得: 条件に合う商品をShopifyから取得
サーバー側とクライアント側の役割分担
すべてのフィルターをサーバー側で処理すると、APIの呼び出し回数が増えてしまいます。そこで、フィルターの種類によって処理する場所を分けています。
サーバー側で処理するフィルター
- 性別、シーズン、カテゴリ、スポーツ種別
- タグによる絞り込み
- 在庫の有無
これらはShopify APIが直接対応しているため、サーバー側で処理することで効率的にデータを取得できます。
クライアント側で処理するフィルター
- サイズ(複数のサイズ体系がある場合)
- 細かい価格帯
- 特定の在庫状態
取得したデータに対して、ブラウザ側で追加のフィルタリングを行います。
表記ゆれへの対応
同じ意味でも、データの登録方法によって表記が異なることがあります。
例:「メンズ」「Men」「Man」「男性」
これらを統一するため、正規化という処理を行っています。どの表記で登録されていても、フィルターが正しく動作するようになります。
構成図
フィルター変換の流れ
お客様の選択
「シーズン: 春夏」「性別: メンズ」
URLパラメータ
?season=SS&gender=Man
パラメータ解析
season → "SS", gender → "Man"
値の正規化
"Men" → "Man", "メンズ" → "Man"
Shopify APIフィルター形式に変換
API用形式に変換
Storefront APIで商品取得
条件に合う商品を返却
まとめ
Metafieldを活用することで、標準機能では対応できない独自のフィルター項目を追加できます。また、処理の役割分担と表記ゆれ対応により、使いやすく安定したフィルター機能を実現しています。