【Shopify】メタフィールドについて

# はじめに

2021年6月30日（日本時間）、「Shopify Unite 2021」が開催され、数多くの画期的な新機能の発表がありました。

https://unite.shopify.com/

https://www.youtube.com/watch?v=0IcaXPmwY7s

Shopify Uniteで発表された内容として以下などがあります。

+ Online Store 2.0
+ メタフィールド
+ 新テーマ『Dawn』
+ Shopifyメール
+ チェックアウト拡張機能（Shopifyパートナー・開発者向け）
+ Hydrogen・Oxygen（Shopifyパートナー・開発者向け）
+ ShopifyアプリストアとShopifyテーマストアにおける年間収入の最初の100万ドルについてはレベニューシェアが 0 %（Shopifyパートナー・開発者向け）

新機能の中でも、『メタフィールド』は、商品、顧客、注文などのオブジェクトに追加データを付与できるという面白い機能でした。

今回はその『メタフィールド』についてまとめてみようと思います。

最後までお付き合いいただけますと幸いです。


# メタフィールドとは
メタフィールドとは、以前から実装されており、商品やバリエーションに固有の情報を追加できる機能です。

しかし、今までは、アプリやAPIを使用しないとメタフィールドを使用することはできませんでした。

今回の発表で、Online Store 2.0 以降では、メタフィールドは商品情報の一つとして実装され、ストア管理画面から追加・編集できるようになりました。

メタフィールドを使用すると、通常の管理画面で取り込めない特定の情報を保存することができ、Shopifyストアの機能や見た目をカスタマイズすることが可能になります。

例えば、送料がかかる商品なのか、かからない商品なのかを簡単に表示することができます。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/778d093a-8d4a-6118-b470-07457e85a797.png)
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/a339d663-0647-e3f1-6dfa-c0db74ec067d.png)


# メタフィールドに追加できるコンテンツタイプと登録方法
## メタフィールドの設定場所
メタフィールドを設定するには、サイドバー左下の設定を押します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/ae33fb8e-05ca-b761-5ea7-6d3d0e484882.png)

設定の中の「メタフィールド」で設定することができます。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/e5abb9dd-8fd8-c81f-19e7-421503c7435d.png)



## 商品メタフィールド

商品メタフィールドでは、『名前』『ネームスペースとキー』『説明』『コンテンツタイプ』『定義をピン留めするかどうか』の5つの共通設定項目があります。
（※コンテンツタイプを選択すると、追加項目が表示されるものがあります。詳細は以下で見ていきます。）

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/8b5fddb5-fd5d-e50e-b8d3-c2a61c61a71a.png)

+ **名前**：定義の名前を入力します。

+ **ネームスペースとキー**：ネームスペースとキーを合わせて、メタフィールドの固有のIDを入力します。ネームスペースとキーは、「`.`」で区切られ、文字、数字、アンダースコア（`_`）、ハイフン(`-`)のみを含めることができます。

+ **説明（任意）**：メタフィールドに入力する値に関する説明や情報を入力します。

+ **コンテンツタイプ**：テキスト、ファイル、URLなど。ここで指定したコンテンツタイプでサポートされている値だけをメタフィールドに追加することができます。

+ **検証**：メタフィールドに入力できる値を限定するために設定できます。最小値や最大値、正規表現を使用してメタフィールドを使用できる値の範囲を管理できます。

+ **ピン留め**：メタフィールド適宜をピン留めすることで、管理画面のメタフィールドを整理することができます。メタフィールド定義をピン留めすると、メタフィールド定義のページのリストの表示順序を変更することができます。最初のページにはピン留めされたメタフィールドが表示されます。最大20個のメタフィールドをピン留めすることができます。

### 色

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| 色 (Color) | `color` | `#RRGGBB`形式のRGB値  | #fff123 | `string` |

**使用例**
商品によって、商品ページの背景を変更する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/dab40dd1-9e56-06bc-7a80-fdf1840c618e.png)


**商品管理の登録**

商品管理画面のメタフィールドで、色が選択できるようになります。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/d7882fc7-369c-4d36-d8be-bae26a214678.png)

選択して保存すると、下記のように登録されます。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/dad54216-a049-6f95-b357-78abdb96979d.png)

### 日付と時刻

#### 日付

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| 日付 (Date) | `date` | タイムゾーンなしのISO 8601形式の日付値 | `2021-10-02` | `string` |

**使用例**
商品の消費期限や賞味期限を表示する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
日付を選択すると、最小日付（選択できる最初の日付）と最大日付（選択できる最後の日付）の検証欄が表示されるので、ルールを追加したい場合は入力します。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/8dae6128-7ba8-2eb9-3e29-846748f73b01.png)

**商品管理の登録**

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/13639c8f-bfd9-b817-bbc8-0d7effa67145.png)



#### 日付と時間

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| 日付と時間 (Date and time) | `date_time` | ISO 8601形式の日付値とUTC時間の時間値 | `2021-10-02T12:30:00` | `string` |

**使用例**
イベントの開催日と開始時間を表示する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
日付を選択すると、最小の日付と時刻（選択できる最初の日時）と最大の日付と時刻（選択できる最後の日時）の検証欄が表示されるので、ルールを追加したい場合は入力します。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/6d5f0495-c8e2-c0b2-f2de-3bb046177252.png)

**商品管理の登録**

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/05ba8e67-8d6e-d021-ead1-0a0fe53bf8af.png)


### ファイル

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:-----|:-----:|:------:|
| ファイル (File Reference) | `file_reference` | 以下のいずれかのファイルタイプで、20MB未満の単一ファイルをアップロードできます <br><br>・画像<br>・すべてのファイルタイプ<br><br> JPEG、PNG、GIF形式の画像は、オンラインストアに表示することができます。他のファイルは、ダウンロード可能になります。| `gid://shopify/MediaImage/123` | `string` |

**使用例**
使用説明書のPDFファイルを追加する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
ファイルを選択すると、「画像のみを受け付けます」（JPEG、PNG、GIF）か「すべてのファイルタイプを受け付ける」を選択するラジオボタンが表示されます。
ストアに表示する際は、「画像のみを受け付けます」を選択します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/831e2147-ee0e-b933-0771-74e68e1320fd.png)

ダウンロードを目的としている際は、「すべてのファイルタイプを受け付ける」を選択します。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/669bbdd4-a8af-c93b-4e33-115fac4bc833.png)

**商品管理の登録**
「画像を選択する」ボタンを押して、追加する画像を選択することで登録できます。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/f8424fb7-62a1-b139-8e39-c463cbec9165.png)
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/af4b7fa1-775e-794e-36d0-cffde2c1082d.png)
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/21dd6a0c-6acf-1944-38f3-ef348f96d0b2.png)


### JSON

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:-----|:-----:|:------:|
| JSON (JSON string)| `json` | 構造化データソースが必要な高度なユースケースで未処理のJSONデータ | `[{ "k": "v1" }, { "k": "v2" }]` | `json_string` |

**使用例**
原材料の表など、それぞれの列で異なる商品を扱う仕様表を追加する等

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/fe97cb6c-596b-210e-9ebb-272e8b65e19f.png)

**商品管理の登録**
入力フォームにJSONデータを入力します。
「JSONをフォーマットする」を押すと、下記の画像のように整列してくれます。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/827f04cc-5f40-a31d-7b05-84870058b07e.png)


### 測定
#### 重量

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:-----|:-----:|:------:|
| 重量 (Weight) | `weight` | 重量の値 (整数・小数)と単位 (oz、lb、g、kg)  | `{ "unit": "kg", "value": 2.5 }` | `json_string` |

**使用例**
商品や原材料の重量を追加する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
重量を選択すると、最小重量と最大重量の検証欄が表示されるので、ルールを追加したい場合は入力します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/5028b517-dde6-a2f6-1502-438671f8338c.png)


**商品管理の登録**

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/dc4efdee-1b58-81b1-d0a3-0532af8b93eb.png)


#### 量

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:-----|:-----:|:------:|
| 量 (Volume)  | `volume` | 量の値 (整数・小数) と単位 (`ml`, `cl`, `l`, `m3` ,`us_fl_oz` ,`us_pt`, `us_qt`, `us_gal`, `imp_fl_oz`, `imp_pt`, `imp_qt`, `imp_gal`)| `{ "unit": "ml", "value": 20.0 }` | `json_string` |

**使用例**
水筒の容積容量を追加する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
量を選択すると、最小数量と最大数量の検証欄が表示されるので、ルールを追加したい場合は入力します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/11005a74-0d40-4c49-694a-87ca47f50e31.png)

**商品管理の登録**

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/82c2a1b2-a87c-0f83-44d8-bcdf3477b136.png)


#### 寸法

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| 寸法 (Dimension)| `dimension` | 寸法の値と単位 (`in`,`ft`,`yd`,`mm`,`cm`,`m`) | `{ "unit": "cm", "value": 25.0 }` | `json_string` |

**使用例**
商品の高さ、幅など長さに関係する値を表示する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
寸法を選択すると、最小寸法と最大寸法の検証欄が表示されるので、ルールを追加したい場合は入力します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/dd943f5b-6c8f-3bd3-111e-cf9f7ee4ce0f.png)

**商品管理の登録**

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/749323c9-0dc8-c0f1-ec0c-7a9f9ae253be.png)


### 数値
#### 整数

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| 整数 (Integer) | `number_integer` | -9,007,199,254,740,991 から 9,007,199,254,740,991 までの数値 | `10` | `integer` |

**使用例**
書籍のページ数を追加する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
整数を選択すると、最小値と最大値の検証欄が表示されるので、ルールを追加したい場合は入力します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/d8f23c22-2c3a-b0d1-718c-4e5c6bddbf95.png)

**商品管理の登録**
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/97f05b6c-66ef-ebab-d495-d90ea85981f6.png)


#### 小数

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| 小数 (Decimal) | `number_decimal` | -9999999999999.999999999 から 9999999999999.999999999 までの小数 ( 整数部は13桁、小数部は9桁まで入力可 ) | `10.4` | `string` |

**使用例**
宝石のカラット重量を表示する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
小数を選択すると、最小値、最大値、最高精度（小数点以降の数：最大 9）の検証欄が表示されるので、ルールを追加したい場合は入力します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/021f8c9f-5d48-9f9a-2c88-1e7783f85561.png)

**商品管理の登録**

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/ae889111-dc23-1550-b54a-ed14b5bf595a.png)

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/5029c363-ca33-7525-e9d4-e8697a26a3d9.png)



### 評価

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| 評価 (Rating) | `rating` | 特定の尺度で測定された評価 | `{ "value": "3.5", "scale_min": "1.0", "scale_max": "5.0" }` | `json_string` |

**使用例**
商品の評価数を表示する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
評価を選択すると、最小評価指標と最大評価指標の検証欄が表示されるので、ルールを追加したい場合は入力します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/aa11d967-609c-debb-f6f9-9aa2c4764e47.png)

**商品管理の登録**
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/5a78836b-dc8a-d795-9fbe-8c5151b4617f.png)


### リファレンス
#### ページ

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| ページリファレンス ( Page reference ) | `page_reference` | オンライン上のページヘの参照 | `gid://shopify/OnlineStorePage/1` | `string` |

**使用例**
オンラインストアのポリシーページなどのリンクを追加する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/136bfc62-e995-7736-63d4-3f04518c583f.png)

**商品管理の登録**
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/645fa1e4-7385-5d4e-d222-5466ca0d9405.png)


#### 商品

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| 商品リファレンス (Product Reference) | `product_reference` | 単一商品のリンク | `gid://shopify/Product/1` | `string` |

**使用例**
オンラインストアの商品ページに関連商品を保存及び表示する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/95841fd6-d531-5e99-134e-89ae3a3e8105.png)

**商品管理の登録**
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/b5de25ff-f15d-2c09-ffb3-c6583924f1c8.png)


#### 商品バリエーション

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| バリエーションリファレンス (Variation Reference) | `variation_reference` | 単一商品のバリエーションのリンク | `gid://shopify/ProductVariant/1` | `string` |

**使用例**
オンラインストアの商品ページで同じ色の他の医療アイテムを保存及び表示する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/25099e95-c610-0ce2-547c-6d81c2914ed3.png)

**商品管理の登録**
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/f6560f8b-46b6-39f9-3ae6-336c8cdfafab.png)


### テキスト
#### 単一のテキスト

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----|:-----:|:------:|
| 単一のテキスト (Singrle line text) | `single_line_text_field` | 単一行のプレーンテキスト。<br>メタフィールド定義のときに指定したプリセットの選択肢に限定することも可能。 | `この商品には乳製品が含まれております` | `string` |

**使用例**
配送メモ、告知をする場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
単一テキストを選択すると、最小の長さ、最大の長さ、正規表現の検証欄が表示されるので、ルールを追加したい場合は入力します。

正規表現は、下記のルールを参考にして入力してください。

https://github.com/google/re2/wiki/Syntax

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/3a3e11ed-0357-fe41-549a-bca1cf0b2e2f.png)

プリセットの選択肢を制限するにチェックを入れると、入力できるテキストを絞ることができます。
「アイテムを追加」ボタンを押して選択肢を増やすことができます。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/ba8e41d9-1f49-699a-9597-c7a8b40b9c7c.png)

**商品管理の登録**
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/ed11d23a-a9c1-dc19-373a-2861ee6e1e02.png)

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/b9307ea3-dd87-ee99-4b7e-2db391b39a9a.png)

正規表現を満たしていないものはエラーが出ます。（例では@が最低一つ無いとエラーが出ます）
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/424a5ec2-1647-a9cd-e97b-89b9b1e6dd0c.png)


#### 複数行のテキスト

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----|:-----|:------:|
| 複数行フィールド (Multi-line text) | `multi_line_text_field` | 複数行のプレーンテキスト<br>改行を含めることが可能。 | `Ingredients`:<br>`Flour`<br>`Water`<br>`Milk`<br>`Eggs` | `string` |

**使用例**
配送メモ、告知をする場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
複数テキストを選択すると、最小の長さ、最大の長さ、正規表現の検証欄が表示されるので、ルールを追加したい場合は入力します。

正規表現は、下記のルールを参考にして入力してください。

https://github.com/google/re2/wiki/Syntax

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/7302c062-216d-e84e-f75c-52227dfc06af.png)

**商品管理の登録**
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/e752da18-90c0-e692-f3c0-30f25f382382.png)


正規表現を満たしていないものはエラーが出ます。（例では@が最低一つ無いとエラーが出ます）
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/8172d970-aa54-9625-fab8-cb713137c189.png)



### trueまたはfalse

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:----:|:-----:|:------:|
| trueまたはfalse (Boolean) | `boolean` | 条件に対しての true か false の値。 | `true` | `boolean` |

**使用例**
商品に刻印できるかどうかや、あるオプションが利用可能かどうかを追加する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/f8858950-4b94-5773-f11d-e205ee116f4e.png)

**商品管理の登録**
下記のように、ラジオボタンが表示されるので、`true`か`false`を選択します。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/1d577f0d-62f9-8ab0-996b-60557989b302.png)


### URL

| 名前 | API名 | 説明 | 値の例 | 値の型（非推奨） |
|:---:|:-----:|:-----|:-----:|:------:|
| URL | `url` | `http`、`https`、`mailto`、`sms`、`tel`のURL。<br>メタフィールド定義を作成するときに、<br>URLを特定のドメインのものに制限することが可能。 | `https://www.shopify.com` | `string` |

**使用例**
特定のウェブサイトでホストされている書籍レビューまたは商品ビデオへのリンクを追加する場合

**メタフィールドの登録**
下記のように、名前、ネームスペースとキー、説明を入力して保存します。
URLを選択すると、「ドメインの使用を制限する」の検証欄が表示されるので、ルールを追加したい場合は入力します。
追加で入力したドメインのみを使用することができます。（例：`unreact.jp`）

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/f8b0627e-1132-781f-9331-465e37c5a70c.png)

**商品管理の登録**

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/d78cc7de-d0b8-8ee2-b0e7-5b654b0c2f9a.png)

登録したドメイン以外のものはエラーが出ます。（例では`unreact.jp`のドメインでないとエラーが出ます）
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/85c406f5-3699-3125-3f96-db99973657a6.png)

## バリエーションメタフィールド
基本的に商品メタフィールドと同様に設定が可能です。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/8fdf9d4d-b6c8-b112-76b8-938cc568abad.png)

各バリエーションの設定ページでメタフィールドの登録が可能です。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/556d25a0-5925-bc99-e7e4-751c8ead030f.png)

バリエーション設定ページの一番下にメタフィールドを設定する場所があります。
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/1c750740-5575-4982-040a-a18e40188cfa.png)


# メタフィールドの表示
メタフィールドを表示する方法は、カスタマイズ画面で表示する方法とLiquidオブジェクトで出力する方法の2パターンあります。

## カスタマイズ画面で表示する方法
テキストフィールドやテキストエリアには、登録した値の型が`string`や`number`であるメタフィールドを使用することができます。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/dd735ffc-54f8-64d7-463c-c933b860b1cb.png)

データベースのアイコンを押すと、動的ソースの挿入と出てきます。
ここに表示されているメタフィールドを選択すると各商品に登録した値を出力することができます。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/85fd0195-dd04-29be-33b0-a8735ecc0df1.png)

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/d48fdcaa-b944-a5d9-5e5e-91668e1b6c42.png)

ページピッカーや商品ピッカーでは、ページリファレンスや商品リファレンスで登録したメタフィールドを使用することができます。

これにより、商品によって関連商品を変更することが可能になります。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/198d8b52-002d-95b9-9881-22c559b5d198.png)

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/58c3f7a9-edc8-6657-2de8-ce09e5e9bb76.png)

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/de2e60ac-d62e-40f4-62d3-3502011ec929.png)

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/80fce358-985b-5d6a-648e-a0e6a5e9f8b6.png)

イメージピッカーでは、ファイルで登録した画像をしようすることができます。

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/65640f44-9c95-8dae-828f-36c87d5fa365.png)

![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/ed0e1b0c-c367-8f84-b1df-5a4b756af6fc.png)


## Liquidオブジェクトで出力する方法
各商品メタフィールドには、`product.metafields.namespace.key`でアクセスすることが可能です。

### 出力例

メタフィールドオブジェクトを使用することで、値を使用したり出力したりできます。

#### 登録内容
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/4f045095-5165-7d51-5f0e-a2de959be487.png)

#### Liquid
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/893b688c-bb8c-864c-f45f-313183690fc5.png)

#### ストア出力
![ScreenClip.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665523/20207fb3-69e6-32b6-c77e-adfa9a19122a.png)

### 参考記事

https://shopify.dev/api/liquid/objects/metafield


# 終わりに
今回は、メタフィールドについてまとめてみました。

メタフィールドを使用することで、各商品ごとにテキストや画像を変更できるようになり、デザインの幅がかなり上がったと思います。

現在はまだ商品とバリエーションのメタフィールドしか公開されておりませんが、
今後、顧客やコレクションといったメタフィールドが提供されていくと思いますので、とても楽しみです！

公開されたらこの記事に追加していこうと思います。

# Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://coming-soon.reterior.jp/

https://apps.shopify.com/shopify-application-314?locale=ja&surface_detail=%E3%83%AA%E3%83%86%E3%83%AA%E3%82%A2&surface_inter_position=1&surface_intra_position=1&surface_type=search