Shopify Functions と Scripts の違いと、実店舗でも使える現実的な活用・移行ガイド
Shopify Functionsは、割引や配送などストアのロジックを拡張できる新しい仕組みです。一方で、旧Shopify Scriptsとはできること・制約が異なります。よくあるユースケースに絞って、現場で迷わないための「できること・できないこと」と移行の考え方を整理します。

結論から言うと、Shopify Functionsは「チェックアウトまわりの複雑なロジックをアプリとして安全に拡張する仕組み」であり、多くの割引・配送・支払い条件はFunctionsで再現できますが、「テーマ側の書き換え」や「カスタムJavaScriptの実行」はできません。旧Shopify Scriptsをそのまま移植するのではなく、「どの領域をFunctionsで置き換え、どこは別の方法にするか」を整理することが重要です。この記事では、ストア運営者・店長の目線で、Shopify Functionsで実現できること・できないことと、Scriptsからの移行の考え方を実務寄りにまとめます。Shopify Plusでないストアにも関係するポイントを中心に取り上げます。
Shopify Functionsとは何か:Scriptsとの一番大きな違い

Shopify Functionsは、Shopifyのバックエンド処理を拡張するための仕組みです。公式ドキュメント上では「ストアのビジネスロジックをカスタマイズするために、Shopifyのインフラ上で動作する小さなプログラム」と説明されています。これにより、チェックアウトやカートの割引、送料、支払い方法などを、アプリ経由で細かく制御できます。
旧Shopify Scriptsとの一番大きな違いは、「どこで動くか」と「どう提供されるか」です。ScriptsはRubyベースで、Shopify PlusのScript Editor上でストアごとに直接コードを動かす方式でした。FunctionsはGoベースのランタイムで、アプリとして配信され、Shopifyのサーバー上で強く制限された形で動作します。そのため、ストアの安定性や速度面ではFunctionsの方が有利ですが、自由度はScriptsよりも低くなります。
もう一つの違いは、利用できるプランです。ScriptsはShopify Plus限定でしたが、Functions自体は対象機能ごとに対応プランが分かれており、一部のFunctionsベース機能(例:注文割引)はPlus以外のプランでも利用できます。ただし、Scriptsからの移行という観点では、多くがShopify Plusストアでの話になります。実際に自分のストアで使えるかどうかは、公式ドキュメントの各機能ページで確認しておくと安心です。
Shopify Functionsで「できること」:よくあるユースケース別

Shopify Functionsは、特定の「拡張ポイント」に対してのみ使えます。2024年時点で主に公開されているのは、割引、配送、支払いなどの領域です。ストア運営で頻出するユースケースに絞ると、次のようなことができます。
- 注文割引・商品割引の細かい条件指定(例:特定のタグ付き商品だけ割引、一定数量以上で割引率変更)
- 配送料のカスタムロジック(例:特定地域と購入金額の組み合わせで送料を変える)
- 支払い方法の条件付き表示(例:高額注文時だけ銀行振込を表示する)
- カート・チェックアウトでのアイテムの並べ替えや非表示(対応している拡張ポイントに限る)
たとえば「同じカテゴリの商品を3点以上買ったら、そのカテゴリの中で一番安い商品を無料にする」といった、標準機能では実現しづらい割引も、注文割引Functionsを使うことで再現できます。Scriptsで書いていたような複雑な条件分岐も、対象が「割引ロジック」に限られる範囲であれば多くは移植可能です。
また、Functionsは管理画面のUIとセットで動くケースが多いです。たとえば、Shopify公式の割引機能は内部的にFunctionsを利用しており、アプリ側で用意した条件(顧客タグやカート金額など)を管理画面のフォームで設定できるようになっています。これにより、「毎回開発会社に依頼しないと条件が変えられない」といったScripts時代の課題を減らしやすくなりました。
Shopify Functionsで「できないこと」:よく誤解されるポイント
Functionsはあくまで「Shopifyが用意した拡張ポイントの中でロジックを書き換える」仕組みであり、何でもできるわけではありません。Scriptsからの移行で特につまずきやすいのは、次のような領域です。
- テーマのHTMLやLiquidの書き換えはできない
- チェックアウト画面に自由なUIパーツを追加することはできない(Checkout UI Extensionsなど別仕組みが必要)
- 外部APIへの自由な通信はできない(Functionsの実行環境は強く制限されている)
- 任意タイミングでの実行(cronのようなもの)はできない。あくまで「イベントが起きたとき」のみ
たとえば、「チェックアウト画面に独自のバナーを出したい」「カートページにおすすめ商品を埋め込みたい」といった要件は、Functionsではなく、テーマ編集やCheckout UI Extensions、アプリブロックなど別の仕組みを使う必要があります。Functions単体で「フロントの見た目を変える」ことはできません。
もう一つよくある誤解が、「Functionsから外部在庫システムに問い合わせて、その結果で割引を変える」といったケースです。Functionsは高いパフォーマンスと安定性を重視する設計のため、実行時に任意の外部サービスへアクセスすることは想定されていません。このような連携が必要な場合は、Webhookやバッチ処理であらかじめ必要な情報をShopify側に書き込んでおき、その結果だけをFunctionsで参照する、といった設計が必要になります。
ScriptsからFunctionsへ移行するときの考え方:全部移植しない勇気
Shopify Scriptsを長年使ってきたPlusストアでは、「すべてのScriptsをFunctionsに移行しなければいけない」と考えがちですが、実務的には「残すべきロジック」と「やめてよいロジック」を分けて考えることが重要です。運営を見直す良いタイミングと捉えるのがおすすめです。
実際の移行では、まず既存Scriptsを用途ごとに棚卸しします。たとえば次のような分類です。
- 売上に直結するロジック(例:まとめ買い割引、会員グレード別の割引)
- 運営効率を上げるロジック(例:特定条件で自動的に配送方法を切り替え)
- 効果が不明瞭・利用頻度が低いロジック(例:キャンペーン終了後も残っている古い条件)
あるPlusストアでは、Scriptsの本数が10本以上に増えた結果、どの割引がいつ効いているか社内で把握できず、問い合わせ対応に時間がかかる状態になっていました。Functions移行を機に、「売上貢献が明確な3本だけを移植し、残りは標準の割引機能とルール運用で代替する」という方針に変えたところ、オペレーションがシンプルになり、割引の問い合わせ対応時間を半分以下に減らせたケースがあります。
ScriptsからFunctionsへの「技術的な」移行可否は、開発パートナーやアプリ提供者が判断する部分も多いですが、「それは本当に必要なロジックか」「標準機能やシンプルなルールで代替できないか」を運営側で見直しておくと、移行コストを抑えつつトラブルも減らせます。
実装・運用の現場で気をつけたい3つのポイント
Functionsベースの仕組みを導入するとき、現場目線で特に気をつけたいのは「誰が条件を変更できるか」「検証環境をどう用意するか」「他アプリとの相性」の3点です。
1つ目は権限と運用フローです。割引や配送条件をFunctions経由で細かく制御できるようにすると、誤設定による影響範囲も大きくなります。たとえば、「特定の顧客タグにだけ適用するつもりが、全顧客に割引が適用されていた」といったトラブルは現実に起こり得ます。社内で「誰が条件を変更できるか」「変更時に確認するチェックリスト」を決めておくと安全です。
2つ目は検証方法です。Scripts時代と同様、本番ストアで直接試すのはリスクが高いため、可能であれば開発用ストアや複製テーマを使い、「テスト用クーポン」や「テスト用顧客タグ」で事前検証する流れを作っておきます。チェックアウトの合計金額や送料が正しく出ているか、想定と違うパターンを最低でも数ケースは確認してから本番適用するのが現実的です。
3つ目は他アプリとの相性です。Functionsは割引や配送などコアな部分に介入するため、同じ領域を扱う複数アプリを入れると、「どの割引が優先されるか」「送料の計算が二重にならないか」といった問題が出やすくなります。導入前に、既存アプリと機能が重なっていないか、提供元のドキュメントやサポートで確認しておくと後戻りを防ぎやすくなります。
RecoBoostならこう活かす:レコメンドと割引ロジックの役割分担
RecoBoostのようなレコメンドアプリとShopify Functionsは役割が異なります。RecoBoostは「どの商品をおすすめするか」をAIで最適化し、カート追加や関連商品の露出を増やす役割です。一方、Functionsは「おすすめされた商品をどう値引き・どう配送するか」といったロジックを担います。たとえば、RecoBoostで「この商品を一緒に買う人が多い」組み合わせを表示しつつ、Functionsベースの注文割引で「おすすめセットを同時購入すると10%オフ」を自動適用すると、レコメンドの訴求力を高めながら運営側の手作業を減らせます。このように、レコメンドは「何を売るか」、Functionsは「どう売るか」と割り切って役割分担すると、両者を無理なくストア運営に組み込めます。
Shopify Functionsは、Scriptsの完全な代替というより「特定領域のロジックを安全に拡張するための器」です。まずは自社ストアで本当に必要なロジックを絞り込み、その中でFunctionsが使える部分だけを無理なく移行することが、トラブルを抑えつつ機能強化する近道になります。
