FUNCTIONS

ShopifyファンクションでMetaobjectが利用可能に

GraphQL API 2026-04からすべてのFunction Targetがアプリ所有Metaobjectを参照可能に

ShopifyFunctions(全ターゲット対応)Input Queryhandle / ID で指定$app Metaobject段階価格・バンドル等アプリ所有タイプのみ

この変更はShopify Functionsを利用する開発者・アプリ開発会社を対象に、GraphQL API バージョン 2026-04 以降から有効です。これにより、すべてのFunction Targetでアプリ所有のMetaobjectエントリをインプットクエリ内で参照できるようになり、段階的価格設定やバンドル構成などの複雑なビジネスロジックをFunctions内で直接扱えるようになります。

1変更内容のBefore / After

BEFORE (〜2026-01)Metaobjectへのアクセス: 不可構造化データはFunctions外で処理カスタムロジックに制約ありAFTER (2026-04〜)全ターゲットでMetaobject参照可能handle / IDでエントリを指定取得段階価格・バンドル等を直接利用

2業務に活かせる具体ユースケース

課題
購入数量に応じた段階的な割引価格(ティア価格)をCart Transformで実現したいが、価格テーブルをどこに持たせるか設計が難しかった
打ち手
段階価格設定をアプリ所有Metaobject(例: $app:tier_pricing)で定義し、Cart Transform FunctionのインプットクエリでMetaobjectをhandleで取得してロジックに反映する
効果
価格テーブルをメタオブジェクトで一元管理でき、コードを変更せずに管理画面側で価格ルールを更新できる柔軟な運用が可能になる
技術メモ
Cart Transformの2026-04スキーマの Shop フィールド配下に metaobject インプットオブジェクトが追加されている。公式ドキュメントで最新スキーマを確認のこと
課題
商品バンドルの構成情報(セット内容・割引率)をFunctions内で参照できず、バンドルロジックをアプリサーバーサイドで二重管理する必要があった
打ち手
バンドル定義をアプリ所有Metaobjectに格納し、Product Discount / Order Discount Functionのインプットクエリで当該Metaobjectを取得してバンドル判定・割引計算を行う
効果
バンドル設定の変更をMetaobjectへの書き込みだけで反映できるため、アプリサーバーへのデプロイや再設定が不要になり運用コストを削減できる
技術メモ
アクセスできるのは $app プレフィックスで識別されるアプリ所有タイプのMetaobjectのみ。他アプリや共有タイプは参照不可
課題
配送ルールをShipping Discount / Delivery Customization Functionに実装する際、地域ごとの設定値をFunctionのコードにハードコードしていたため、設定変更のたびにデプロイが必要だった
打ち手
配送条件(地域・金額閾値・適用ルールなど)をアプリ所有Metaobjectで管理し、Delivery Customization FunctionがMetaobjectをIDで取得して動的に条件分岐する
効果
Metaobjectを更新するだけでFunctionの挙動を変更可能になり、ノーコードに近い形で配送ルールを運用管理できる体制を構築できる
技術メモ
インプットクエリファイルでhandleまたはIDを指定してMetaobjectエントリを取得する。クエリの書き方は2026-04バージョンのFunctionsドキュメント内 metaobject インプットオブジェクトのリファレンスを参照

3技術者が押さえるべきポイント

対応APIバージョン

GraphQL API 2026-04 以降が必須。それ以前のバージョンではMetaobjectアクセス不可。Functionのバージョンを2026-04に更新する必要がある。

対象スコープ

すべてのFunction Targetで利用可能。Cart Transform / Product Discount / Order Discount / Delivery Customization など全ターゲットが対象。

アクセス可能なMetaobjectの条件

$app 予約済みプレフィックスで識別されるアプリ所有タイプのみアクセス可能。他アプリや汎用タイプのMetaobjectはアクセス不可。Metaobjectの所有権については公式の「metaobject ownership」ドキュメントを参照。

クエリの記述方法

InputQueryファイル内でMetaobjectエントリを取得する際は handle または ID を指定する。具体的なクエリ構造はCart Transformの2026-04スキーマにある metaobject インプットオブジェクトが参考になる。

スキーマ参照先

公式ドキュメントの2026-04バージョン各Functionの Shop フィールド配下に metaobject インプットオブジェクトが追加されている。旧バージョンのスキーマには存在しないため注意。

確認項目 内容 ステータス
APIバージョン 2026-04 へのアップグレードが必要 要対応
Metaobjectタイプ $app プレフィックスのアプリ所有タイプのみ 制限あり
対応Functionターゲット 全ターゲット 対応済み
インプットクエリ変更 handle または ID でエントリ指定が必要 要実装
後方互換性 旧バージョンのFunctionへの影響は記載なし 記載なし

GraphQL API 2026-04以降、すべてのShopify FunctionsからアプリオーナーのMetaobjectを参照できるようになり、段階的価格設定・バンドル管理・配送ルールなどの複雑なロジックをコード変更なしに柔軟に運用できる設計が実現できます。

Source: https://shopify.dev/changelog/metaobject-access-in-functions | 公開日: 2026年4月1日