Shopify アカデミー「Shopify Development Fundamentals」ラーニングパスで学んできたGraphQLの実装チャレンジとして、新しいコレクションの作成から、商品登録、メタフィールドの活用、ページ反映の確認までを一通り実践しました。
この記事では実装の流れとつまずきやすいポイントなど、これからShopifyアプリ開発に挑戦する方にもわかりやすく記録します。
今回実現したいこと
今回のタスクには以下の要件が含まれています:
- 「Spring Collection」という新しいコレクションを作成する
- コレクションに含める複数の商品を作成
- 商品情報の登録
- 基本情報に加えてmetaobject(モデル情報)とmetafield(着用サイズ)も登録 ーこちらの実装に関してはhttps://blog.ayaogihara.com/shopify/displaying-model-information/で紹介しています
- 各商品をSpring Collectionに紐づける
- 作成した情報が、商品ページで正しく表示されることを確認
これは単なる「データを作って終わり」ではありません。GraphQLで登録した構造化データが、実際にフロントにどう反映されるかまでを含む、Shopifyならではの実装フローとなっています。
GraphQL実装前の準備:GraphiQL Appのインストール
GraphQLを使ってShopifyのデータを操作するには、GraphiQL Appという専用の開発ツールのインストールが必要です。
これは、Shopifyが提供しているストアのデータと直接やり取りできるブラウザベースのGraphQLクライアントで、管理画面内でクエリの実行・検証ができます。
インストール方法(開発ストアで作業しています)
- Shopifyアプリストアにアクセスし、GraphiQL Appを検索
- 開発ストアにインストール
- 管理画面から Apps > GraphiQL App に移動し、起動
GraphiQL Appでできること
- クエリの試行と修正:リクエストをすぐに実行してレスポンスを確認
- ドキュメント参照機能:GraphQLスキーマに基づいて利用可能なフィールドを確認
- Mutation・Queryの雛形作成支援:補完機能やクエリ構造のヒントが充実
本記事で紹介する実装チャレンジは、このGraphiQL Appを使ってすべてのGraphQL操作を行っています。
これからGraphQLの実装に挑戦する方は、まずはこのアプリをインストールして、開発環境を整えることから始めましょう。

ステップ1:Spring Collectionの作成
まずはGraphQLを使って、新しいコレクション「Spring Collection」を作成します。
GraphQLのcollectionCreate
mutationを使い、以下のようなクエリを送信しました。
mutation collectionCreate($input: CollectionInput!) {
collectionCreate(input: $input) {
collection {
id
title
handle
descriptionHtml
}
userErrors {
field
message
}
}
}
{
"input": {
"descriptionHtml": "Embrace the essence of renewal and blooming beauty with our captivating spring collection. From delicate pastel hues to vibrant floral patterns, our pieces embody the spirit of the season, bringing a fresh, joyful touch to your wardrobe.",
"handle": "spring-2025",
"title": "Spring Collection"
}
}

ステップ2:MetafieldとMetaobjectの登録内容をGraphQLで確認
商品データをGraphQLで作成する際、事前に登録したMetafieldやMetaobjectの定義(Definition)を把握しておくことが重要です。これにより、正しいnamespace・key・type・IDなどを把握し、エラーなくMutationを送信できます。
Metafield情報の確認クエリ
query MetafieldDefinitions($ownerType: MetafieldOwnerType!, $first: Int) {
metafieldDefinitions(ownerType: $ownerType, first: $first) {
nodes {
id
name
namespace
key
type {
name
}
}
}
}
{
"ownerType": "PRODUCT",
"first": 2
}

Metaobject情報の確認クエリ
query metaobjectDefinitions {
metaobjectDefinitions (first: 10) {
nodes {
name
id
metaobjects(first: 3) {
nodes {
id
handle
type
}
}
}
}
}

商品を作成する前のフィールド確認作業は、後続ステップの成功を左右する重要な準備です。とくに複数の商品を一括で登録するような場合、スキーマの誤りは全ての登録失敗につながるため、この工程はしっかり行うことが大切です。
ステップ3:GraphQLのMutationを使って商品を作成する
MetafieldやMetaobjectの情報を確認できたら、GraphQLを使って商品を作成していきます。ここでは、productCreate Mutationを使用します。
商品には、以下の情報を登録します:
- タイトル(title)
- 商品の説明(bodyHtml)
- 商品タイプ(productType)
- コレクションへの関連付け(collectionsToJoin)
- ステップ1でコレクションを作成した際のレスポンスでGIDを確認できます
- Metafield・Metaobjectのカスタム情報(metafields)
namespace
、key
、type
は、ステップ2で確認したMetafield定義と一致させる必要があります- Metaobjectは、IDを直接指定して登録します
mutation productionCreateMutation {
productCreate(product:
{title: "Spring Blossom Maxi Dress",
productType: "Dress"
collectionsToJoin: "gid://shopify/Collection/000000000"
metafields:[{
namespace: "custom"
key: "wearing_size"
value: "Small"
},
{
namespace: "custom"
key: "model_info"
value: "gid://shopify/Metaobject/0000000000"
}
]
}){
product {
id
}
userErrors {
field
message
}
}
}

ステップ4:商品ページに反映されているか確認
GraphQLで商品作成のmutationを実行した後は、Shopifyの管理画面(Admin)で実際に商品が登録されているかどうかを確認しました。
手順は以下の通りです:
- Shopify管理画面メニューの「商品」→「すべての商品」へ移動
- 作成した商品が一覧に表示されているか確認
- 対象商品をクリックし、詳細ページにてタイトルやメタフィールドの情報が反映されているかをチェック
今回は、商品名・価格・コレクションの割り当て・メタオブジェクトの内容などがすべて正常に反映されていることを確認できました。
これにより、GraphQLを使った商品作成と関連データの紐づけが正しく行われていることが証明でき、データ操作とフロントエンドの連携の第一歩を実感できました。
つまずきやすいポイントと補足解説
GID(グローバルID)の取得は必須
ShopifyのGraphQLでは、metaobject
や collection
、product
などを他のエンティティと関連付ける際に、GID(グローバルID) を明示的に指定する必要があります。
今回はまずコレクションを作成したので、そのレスポンスに含まれる id
を控えておけば、後から商品に割り当てる際に再度クエリを発行せずに済みます。最初のmutationの返り値も見逃さず活用すると、開発の効率が上がります。
GraphiQLではタブを分けて作業するのが便利
Shopifyが提供する GraphiQL アプリでは、複数のクエリやミューテーションをタブで並行管理できます。たとえば以下のようにタブを分けて作業すると、コピペやIDの参照が非常にスムーズになります:
- タブ1:
collectionCreate
- タブ2:
productCreate
- タブ3:GIDを確認するためのクエリmetafieldDefinitions
- タブ4:GIDを確認するためのクエリmetaobjectDefinitions
特にIDをまたいで使う操作が多い今回のようなケースでは、一括で見比べながら作業できる構成がとても効率的です。

GraphQL独自の構文に慣れる必要がある
GraphQLのクエリは、見た目はJSONに似ていますが、クオーテーション(” ”)を使わない独自の構文です。たとえば次のような記述になります:
{
shop{
name
primaryDomain{
url
}
}
}
初めて扱うと、うっかりキーや値に "
を付けてしまうなど、細かい構文ミスでエラーが出やすくなります。JSONっぽいけどJSONではないという前提を理解しておくと、混乱を防ぎやすくなります。
クエリとレスポンスで記法が異なることに注意
GraphQLでは、クエリは独自言語で書きますが、レスポンスはJSON形式で返ってきます。この差異に慣れていないと戸惑いやすいポイントです。
例:
- クエリは
product { title }
のように記述(クオーテーションなし) - レスポンスは
{ "product": { "title": "商品名" } }
のようにJSONで返ってくる
このように、出力と記述形式の違いを意識して使い分けることが重要です。
userErrors をmutationに含めると原因特定に役立つ
GraphQLのmutationは、失敗してもHTTPエラーを返さず、成功したかのようにレスポンスを返すことがあります。そのため、mutationの返り値に userErrors
を含めておくとエラーの情報を表示することができます。
userErrors {
field
message
}
この指定をしておくことで、たとえば「必須フィールドが抜けている」「メタフィールドの型が一致していない」などのエラーをメッセージ付きで受け取ることができ、開発時のデバッグが格段に楽になります。
まとめ:GraphQLで拡張するShopifyのデータ操作
今回の実装チャレンジでは単なるAPI操作にとどまらず、metaobjectやmetafieldの実用例、GraphQLのMutationによる商品作成や紐づけ、そして最終的なストア反映まで実践的な一連の流れを体験できました。
「データを構造的に扱いそれをストア上で適切に表示させる。」この一連のプロセスを習得することこそがShopifyにおける「実装力」の基礎となると実感しています。