事業紹介 事業紹介トップ 経営データ分析基盤 Claude / MCP 導入 育つ業務アプリ 複雑な SaaS を専用 UI に Shopify Plus 移行・拡張 生成AI 活用(Multi AI) SEO / AIO / 広告運用 顧問・アドバイザリ インフラ構築 自社メディア投資・開発
Claude Claude / MCP 総合 Claude Cowork Claude Code 導入支援 Claude Code 使いこなし支援 Claude Design MCP 開発・サーバー構築
Shopify Plus Shopify Plus トップ EC-CUBE からの移行 大手カートからの移行 Shopify 通常プラン EC サイト構築
実績
業界ニュース 業界ニュース トップ AI ニュース └ Claude └ ChatGPT・Codex └ Gemini └ その他 Shopify ニュース SaaS ニュース お知らせ(自社発信)
会社情報 お問い合わせ
2026.07.04

Shopify GraphQL Admin API 2026-07:コレクションの新マルチソースモデルとAPIが正式公開

記事のサマリー(TL;DR)

  • Shopify API 2026-07 でコレクションが単一 ruleSet から複数 CollectionSource へ移行、除外条件・サブコレクション参照が追加
  • 旧バージョン(2026-07 未満)では新モデルを使ったコレクションがクエリ結果からフィルタ除外されるため、移行は早急に対応が必要
  • Shopify Functions の ProductVariant 型に inAnyCollection / inCollections フィールドが追加され、バリアント単位のコレクション判定が可能に

Shopify Plus カスタムアプリ・Functions 開発者が先行対応すべき移行ポイント

Shopify のコレクション API は 2026-07 リリースで構造が根本から変わります。これまで1つの ruleSet に全ルールを記述していた設計が廃止され、複数の CollectionSource を組み合わせるモデルへ移行します。移行前のバージョンで構築されたカスタムアプリやストアフロントは、新モデルを利用したコレクションをクエリ結果で受け取れなくなる(フィルタアウトされる)という破壊的な挙動変化が発生します。

国内で Shopify Plus を運用しているショップのうち、商品のタグ・メタフィールドを組み合わせた自動コレクションを使っているケース、あるいは Shopify Functions で割引・配送ロジックをコレクション単位で制御しているケースでは、2026-07 への API バージョンアップと合わせてクエリ・ミューテーションの書き換えが必要です。collectionCreate(input:) / collectionUpdate(input:) のように input: 引数を使うパターンは非推奨となり、新たな collection: 引数(CollectionCreateInput / CollectionUpdateInput 型)への移行が求められます。また、Checkout Extensions や Functions でバリアント単位のコレクション判定(例:特定のサイズやカラーのみをセール対象にする)を実装している場合は、ProductVariant.inAnyCollection / inCollections の活用で実装がよりシンプルになります。

詳細

GraphQL Admin API の変更点

コレクションソースと条件(Collection sources and conditions)

新しい Collection.sources フィールドは、コレクションを構成する1つ以上のソースを返します。CollectionSource インターフェースを実装する具体型は2種類です。

  • CollectionConditionsSource:型付きの包含条件(inclusion conditions)とオプションの除外条件(exclusion conditions)、および手動選択によって商品を含めます。ターゲットは PRODUCTS または VARIANTSCollectionSourceTargetType 列挙型で指定します。
  • CollectionSubCollectionsSource:参照する1つ以上のコレクションからメンバーシップを引き継ぎます。

条件は強く型付けされており(strongly typed)、各条件は具体型と対応する入力型を持ちます。条件のマッチング挙動は CollectionConditionMatchType 列挙型で制御します。

  • ANY:いずれか1つの条件が一致すればよい
  • ALL:すべての条件が一致する必要がある

コレクションにソースを定義するには、collectionCreate および collectionUpdate の新しい collection 引数(CollectionCreateInput / CollectionUpdateInput 型)を使います。CollectionUpdateInputsourcesToCreatesourcesToUpdatesourcesToDelete を公開しており、コレクション定義全体を置き換えることなくソースを段階的に更新できます。

シェアラブルアプリコレクションソース(Shareable app collection sources)

CollectionConditionsSourceshareable フィールドが true の場合、そのソースは呼び出しアプリが所有し、ショップ内の複数のコレクションにリンクできます。管理用の新ミューテーションが3つ追加されました。

ミューテーション / クエリ 用途
collectionConditionsSourceCreate シェアラブルソースの作成
collectionConditionsSourceUpdate シェアラブルソースの更新
collectionConditionsSourceDelete シェアラブルソースの削除(リンク中のコレクションから自動的にデタッチ)
collectionConditionsSources(appId:) 特定アプリが所有するシェアラブルソースの取得
collectionConditionsSourcesByApp ショップにシェアラブルソースを公開しているアプリの一覧(ページネーション付き)

特定のコレクションにシェアラブルソースを付与するには、CollectionShareableSourceInput { sourceId }sources または sourcesToCreate フィールドに渡します。シェアラブルソースは所有アプリのみが更新・削除できます。

使い分けの指針:同じロジックを複数のコレクションで再利用する場合のみシェアラブルソースを使う。単一コレクション向けであれば、通常のコレクションミューテーションでソースを管理する。

その他の追加点

  • Collection.subCollectionEligibility:コレクションをサブコレクションターゲットとして使用する際の包含・除外それぞれの適格状態を返す。非適格理由は安定した SubCollectionIneligibleReason 列挙型で表現される。
  • collectionConditionMetafieldDefinitions:呼び出しアプリのアクセス範囲にスコープされた、包含条件で使用できるメタフィールド定義を返す。
  • CollectionSourceExclusionConditionUpdateInputcollection フィールドが追加され、コレクションベースの除外条件を削除・再作成なしにその場で更新できる。

Shopify Functions でのバリアント単位コレクションメンバーシップ

Shopify Functions の ProductVariant 型に2つの新フィールドが追加されました。

  • inAnyCollection(ids: [ID!]!): Boolean!:バリアントが指定したコレクションのいずれかに含まれている場合に true を返す。
  • inCollections(ids: [ID!]!): [CollectionMembership!]!:バリアントのコレクション別メンバーシップを返す。

バリアントが「コレクションのメンバー」と見なされるのは、バリアント自体がそのコレクションに含まれている場合です。既存の Product.inAnyCollection および Product.inCollections は、バリアント単位のメンバーシップに関わらず、商品全体がコレクションに含まれている場合に true を返す挙動を継続します。

非推奨(Deprecations)

非推奨の要素 移行先
Collection.ruleSet Collection.sources(各ルールは対応する包含条件型にマッピング。例:タグルール → CollectionSourceInclusionConditionProductTag
collectionCreate(input:) / collectionUpdate(input:) collectionCreate(collection:) / collectionUpdate(collection:)

レガシーの input: 引数は引き続き CollectionInputruleSet フィールドを含む)を受け付けますが、新しい collection: 引数のみがソースを定義できます。両方の引数が渡された場合は collection: 引数が優先されます。

移行チェックリスト:

  1. Collection.ruleSet を読み取っているアプリは Collection.sources へ切り替える
  2. input.ruleSet を書き込んでいるアプリは collection: 引数の新しいソース定義へ切り替える
  3. API バージョンを 2026-07 以降にアップグレードする(しないと新モデルのコレクションがクエリ結果から除外される)
  4. Functions でバリアント単位のコレクション判定が必要な場合は ProductVariant.inAnyCollection / inCollections を使う