← inaro.devShopify学習ツール
17-07

Shopify Functionsを実装する

顧客タグに応じた自動割引をFunctionsで実装し、デプロイして有効化できる

最終確認: 2026-09

解説

受託の現場でなぜ必要か: この回では、顧客タグに応じた自動割引をFunctionsで実装し、デプロイして有効化できるようになります。
受託では、テーマのJSで書いた割引は誰でも改ざんできるので、チェックアウトの中で動くFunctionsで実装します。

Functionsとは、チェックアウトの中でShopifyが実行するロジック

JavaScript / TypeScript(WebAssemblyにコンパイル)またはRustで書きます。
テーマのJSと違って改ざんできず、チェックアウトの価格計算に介入できます。
大きいカートではRustが推奨です。
手順は、生成 → 入力クエリ → 純粋関数 → ローカル実行 → デプロイ → 有効化、の6つです。

どう生成し、何を書くのか

shopify app generate extensionでDiscountテンプレートを選びます。
生成されるのは、入力クエリ(.graphql)と、入力を受けて割引の指示を返す純粋関数(.js)と、shopify.extension.tomlです。
TOMLにはターゲットcart.lines.discounts.generate.runinput_queryexportを書きます。
ファイル名や関数名は生成されたものに従います。

ローカル実行 → デプロイ → 有効化の3段階

shopify app function run --input input.jsonでローカルでテストし、shopify app deployで配布します。
有効化はdiscountAutomaticAppCreatefunctionHandlediscountClassesを指定するか、アプリが用意する管理画面UIから行います。
デプロイしただけでは割引は効きません。

発展:統合されたDiscount APIと制約

商品割引・注文割引・配送割引は1つのDiscount Functionにまとまり、discountClassesとターゲットで出し分けます。
古い「product_discounts」型の記事と混ぜません。
実行時間・命令数・出力サイズに上限があり、外部APIは呼べません。
必要なデータは入力クエリで取り切ります。

ステップ1 / 2

ShopifyはShopify Inc.の商標です。本サイトは個人が制作した非公式の学習教材であり、同社の承認・提携・後援を受けていません。記載内容は2026-09時点のものです。料金・上限値・管理画面のラベルは変わるため、作業の前に公式ドキュメントで確認してください。