Functions / 2026-04

Product Discount Functions に
「Buy X」を定義する prerequisites が追加

商品割引の Function で、割引対象の候補に「前提条件(prerequisites)」を設定できるようになった。これで「A を 2 個買ったら B が割引」という BXGY(Buy X, Get Y)の "Buy X" 側を、コードで表現できる。

このページの構成
  1. そもそも何が変わるのか(30秒で理解)
  2. BXGY 割引とは(仕組み図解)
  3. 追加された prerequisites の構造
  4. 判定フロー図解 : 割引が成立するまで
  5. 従来 vs これから
  6. 技術者が押さえるべき5つのポイント
  7. 業務に活かせる3つのユースケース
  8. 提案で使える1行サマリ

1そもそも何が変わるのか

Discount Functions の商品割引候補(product discount candidates)prerequisites フィールドが追加された。
これにより、「この割引を受けるには、別の商品を○個カートに入れていること」という前提条件を Function 内で宣言できる。= BXGY(Buy X, Get Y)の "Buy X" を表現できるようになった。

従来 : 割引対象だけを指定

商品割引 Function では「どの商品を、いくら割り引くか」は表現できたが、「○○を買っていること」という前提条件は持てなかった。

これから : 前提条件付きで指定

割引候補に prerequisites を付けられる。「カートライン X が quantity 個ある場合のみ、この割引を適用」という BXGY ロジックが Function で完結する。

2BXGY 割引とは(仕組み図解)

BXGY = Buy X, Get Y。「指定した商品を一定数量買う(Buy X)と、別の商品に割引が付く(Get Y)」という販促手法。記事の定義をそのまま図にすると次の通り。

Buy X = 前提条件 商品A 商品A ×2 指定数量を購入 満たすと Get Y = 割引対象 商品B 割引 この商品が安くなる 割引適用
記事の定義 : 「顧客は、ある商品(Buy X)を指定数量購入すると、別の商品(Get Y)への割引を受けられる」。今回追加されたのは、この "Buy X" を Function 側で宣言するための仕組み

3追加された prerequisites の構造

商品割引候補に prerequisites フィールドが追加された。各前提条件は cartLinePrerequisite として定義され、2 つの値を持つ。

フィールド意味記事の説明
id 前提に使うカートラインの識別子 The identifier for the cart line used as the prerequisite.
quantity 割引資格を得るために、そのカートラインに必要な数量 The number of items from that cart line required to qualify for the discount.

構造イメージ

// 商品割引候補(product discount candidate)に // prerequisites を付与するイメージ { prerequisites: [ { // cartLinePrerequisite id: "<前提となるカートラインの id>", quantity: 2 // 必要数量(Buy X の "X") } ] }
上記はフィールド名(prerequisites / cartLinePrerequisite / id / quantity)に基づくイメージ図。正確なスキーマ・型・必須/任意の区分は記事に記載なし。実装前に Discount Functions のドキュメントで確認すること。

4判定フロー図解 : 割引が成立するまで

カート 複数のカートライン (商品+数量) Discount Function 割引候補 + prerequisites を返す 前提条件チェック id のカートラインが quantity 以上あるか? 満たす → 割引適用 Get Y が安くなる 満たさない → 適用なし 通常価格のまま

※ 上図は idquantity の意味から組み立てた概念フロー。実際の評価タイミングや複数 prerequisite 時の挙動は記事に記載なし。

5従来 vs これから

項目従来の Product Discount Functionprerequisites 追加後
割引対象の指定 どの商品をいくら割り引くか 同上
「○○を買っていること」条件 不可 候補に前提条件を持てない prerequisites で宣言
BXGY の "Buy X" 表現 不可 cartLinePrerequisite で定義
条件の単位 カートライン(id)+必要数量(quantity
対象 Function 種別 商品割引(product discount)の候補

6技術者が押さえるべき5つのポイント

pre

1. 追加点は1フィールド

商品割引候補に prerequisites が増えただけ。割引そのものの返し方は従来通りで、前提条件を「付けられる」ようになった差分。

id+qty

2. 条件の正体は cartLinePrerequisite

各前提条件は cartLinePrerequisite で表し、id(カートラインの識別子)と quantity(必要数量)の2値を持つ。

X Y

3. Buy X と Get Y が分離

割引対象(Get Y)=候補そのもの、前提(Buy X)=prerequisites。両者が候補単位で結びつく構造なので、候補ごとに別々の条件を組める。

?

4. 細部の仕様は記載なし

複数 prerequisite の AND/OR、数量超過時の扱い、対象 API バージョン等は記事に明記なし。実装前にドキュメントで要確認

5. 一次情報は Discount Functions ドキュメント

記事は「詳細は Discount Functions のドキュメント参照」と案内している。フィールドの型・必須性・サンプル実装はそちらが正本。本ページの図やコードは概念整理用と割り切ること。

7業務に活かせる3つのユースケース

A×2 B
USE CASE 1

セット販売・抱き合わせ販促を Function で自動化

課題
「本体を買った人に、純正アクセサリを割引したい」をアプリや手作業のクーポンで運用しており、商品入替のたびに設定が破綻する。
打ち手
商品割引 Function の候補(Get Y=アクセサリ)に prerequisites(Buy X=本体)を付け、本体購入時のみ自動で割引が成立するようにする。
効果
クロスセルの取りこぼし防止と、割引運用のコード化(再現性・レビュー可能性)。
技術メモ
id に本体カートライン、quantity に必要個数を設定。複数条件の評価仕様はドキュメントで確認。
3 無料/割引
USE CASE 2

「3 個買うと 1 個無料」系のまとめ買い訴求

課題
消耗品・食品などで「まとめ買いでお得」を出したいが、数量条件をストアフロントや手動割引で管理するのが煩雑。
打ち手
対象カートラインの quantity を閾値(例: 3)に設定した cartLinePrerequisite を割引候補に付与し、閾値到達時のみ割引適用。
効果
1 注文あたりの購入点数アップ(AOV 改善)を、宣言的な割引ロジックで実現。
技術メモ
同一商品を Buy X と Get Y の両方に使うケースの挙動はドキュメントで要確認(記事に記載なし)。
USE CASE 3

外部割引アプリからの脱却・Function 集約

課題
BXGY を実現するためだけに外部割引アプリを契約しており、月額コストとブラックボックス挙動が負債化している。
打ち手
BXGY の "Buy X" が Function でネイティブに表現できるようになったため、自社管理の Discount Function へ移行を検討する。
効果
アプリ費用の削減、割引ロジックの内製化・バージョン管理、チェックアウト挙動の透明化。
技術メモ
移行可否は、既存アプリの割引仕様と Function 側の対応範囲の突合が前提。差分は Discount Functions ドキュメントで確認。

8提案で使える1行サマリ

「商品割引 Function の候補に prerequisites(cartLinePrerequisite = id+quantity)が追加。
これで 『Aを○個買ったらBが割引』という BXGY の "Buy X" を Function でネイティブに表現できる。
セット販売・まとめ買い・外部割引アプリ卒業の各シーンで効く。」