記事のサマリー(TL;DR)
- ShopifyはDiscounts Allocator開発者プレビューでのみ利用可能だったDiscounts Allocator Function APIを削除し、正式リリースしないことを発表しました。プレビュー自体も終了しています。
- 大半の開発者は対応不要ですが、アプリ設定で
purchase.discounts-allocator.run拡張ターゲットを宣言しているアプリのみ対応が必要です。 - 今後ディスカウント機能を実装する場合は、Discounts開発者ドキュメントに記載のあるDiscount Function APIを使用します。
対応が必要な条件
アプリ設定にpurchase.discounts-allocator.run拡張ターゲットが宣言されている場合、その拡張をアプリ設定から削除する必要があります。削除するまでは、他の拡張機能への変更を含め、アプリ全体に対してshopify app deployが失敗し、「API not found for target: purchase.discounts-allocator.run」というエラーが発生します。この失敗は次回のデプロイ時に発生します。拡張を削除して再デプロイすれば、shopify app deployは成功し、他の拡張機能は想定どおり更新されます。
なお、既存のアプリリリースはインストール可能な状態のまま残りますが、それらのDiscounts Allocator Functionは動作しなくなります。アプリの他の機能には影響しません。
Discounts Allocator Function APIを一度も使用しておらず、その拡張ターゲットも利用していないアプリは影響を受けず、対応は不要です。
詳細
何が変更されたか
Discounts Allocator Function APIは、カート内の各ラインに対してディスカウントをどのように配分するかをアプリ側で制御できる機能でした。プレビュー開始以降、Shopifyのネイティブ機能によるディスカウント適用方法の制御が改善され、同一ライン上で複数の商品ディスカウントを重ねて適用する機能なども含まれるようになりました。Shopifyは、これらの仕組みによって大半のユースケースがカバーされるようになったと説明しており、Discounts Allocator APIを長期的なFunction APIとして維持する意味がなくなったとしています。ディスカウントの配分は、引き続きShopifyのプラットフォームロジックが担います。
今回の変更には以下が含まれます。
discountsAllocatorFunctionRegisterおよびdiscountsAllocatorFunctionUnregisterミューテーションが、Admin GraphQL APIのunstableバージョンから削除されます。これらはこれまで安定版(stable)では提供されていませんでした。- プレビュー期間中に登録されていたFunctionは、Shopify側で自動的に登録解除されます。
- APIリファレンスおよび「Build a discounts allocator」チュートリアルが、shopify.devから削除されます。
Functionを使ってディスカウントを作成し続ける場合は、Discounts開発者ドキュメント(https://shopify.dev/docs/apps/build/discounts)に記載のあるDiscount Function APIを使用します。
影響を受ける対象
- Discounts Allocator開発者プレビューに参加し、Discounts Allocator Functionを登録していたアプリ
- アプリ設定に
purchase.discounts-allocator.run拡張ターゲットが引き続き宣言されているアプリ
Discounts Allocator Function APIやその拡張ターゲットを一度も使用していないアプリは影響を受けず、変更の必要はありません。
関連ドキュメント
Discount Function APIを使ったディスカウントの構築方法については、Discounts開発者ドキュメント(https://shopify.dev/docs/apps/build/discounts)を参照してください。