Shopify Scripts廃止完全対応ガイド|6月30日までにFunctionsへ移行する手順【2026年最新】

⚠️ 緊急:2026年6月30日をもってShopify Scriptsが完全停止します。チェックアウトの割引ロジック・配送ルール・決済カスタマイズにまだScriptsを使っている場合、今すぐShopify Functionsへの移行が必要です。この記事では、Scripts廃止の背景・影響範囲・Functionsへの具体的な移行手順をエンジニア目線で解説します。

📘 移行チェックリスト+よくあるエラーと対処法をnoteで公開中

noteで読む(無料)

📋 目次

  1. 廃止スケジュールと今すぐ確認すべきこと
  2. Shopify ScriptsとFunctionsの違い
  3. 影響を受ける機能の全リスト
  4. 移行手順:割引ロジックの移行(具体的コード例付き)
  5. 移行手順:配送ルールの移行
  6. 移行手順:決済カスタマイズの移行
  7. 移行でよくあるエラーと対処法
  8. AIを使った移行作業の効率化

1. 廃止スケジュールと今すぐ確認すべきこと

🚨 廃止スケジュール(確定)/これが最後の期限です

Shopify Scriptsの廃止期限はこれまで2度延長されてきました(2024年8月→2025年8月→2026年6月30日)。Shopifyは今回が最終期限と明言しており、これ以上の延長はありません。

2026年4月15日(完了)
Shopify Scriptsの新規作成・編集がロック済み。既存Scriptsの修正も不可に。4月15日以降にバグが発覚しても、Scripts内での修正手段はない。
2026年6月30日(最終期限)← 今ここ
既存の公開済みScriptsが完全停止。チェックアウトでの割引・配送・決済カスタマイズが動作しなくなる。猶予期間なし・ロールバック不可。
移行完了目標:6月15日まで
本番環境での十分なテスト期間を確保するため、6月15日を移行完了の目標にすることを推奨。

 

2. Shopify ScriptsとFunctionsの違い

比較項目 Shopify Scripts(廃止) Shopify Functions(移行先)
実行環境 Shopifyサーバー上でRubyライクな独自言語 WebAssembly(Wasm)。高速・軽量
開発言語 Shopify独自のScript言語 Rust・JavaScript・TypeScript(任意)
パフォーマンス レイテンシが発生することがある 5ms以内の実行が要件。高速
対象プラン Shopify Plus限定だった 全プラン 利用可能
デバッグ ログが見づらく難しかった Shopify CLIでローカルテスト可能
配布方法 ストアごとの個別設定 アプリとして配布・Shopify App Storeへの公開も可能
料金 無料(Plus料金に含む) 実行回数に応じた従量課金(無料枠あり)
💡 エンジニア目線のポイント

Functionsは全プランで使えるようになったことで、Plusでなくても高度なチェックアウトカスタマイズが実現できる。移行は「コストがかかる作業」ではなく「より良いアーキテクチャへの移行」として捉えると判断がスムーズになる。

3. 影響を受ける機能の全リスト

機能 Scripts廃止の影響 Functions対応
カスタム割引(複雑な条件分岐) 6月30日以降動作停止 対応済み Discount Functions
送料カスタマイズ(条件付き送料無料等) 6月30日以降動作停止 対応済み Shipping Functions
決済方法のフィルタリング 6月30日以降動作停止 対応済み Payment Customization
カート変換(商品の自動追加・削除) 6月30日以降動作停止 対応済み Cart Transform
配送オプションのソート・フィルタ 6月30日以降動作停止 対応済み Delivery Customization
Scriptsを使うサードパーティアプリ アプリ側の対応待ちが必要 要確認 アプリの更新状況を確認

4. 移行手順:割引ロジックの移行

最も多いユースケースである「購入金額に応じた割引」を例に、ScriptsからFunctionsへの移行手順を解説します。

移行前の準備

1
Shopify CLIをインストール
Node.js 18以上が必要。ターミナルで以下を実行。
💻 Terminal
# Shopify CLIのインストール npm install -g @shopify/cli @shopify/theme # バージョン確認 shopify version
2
Functionsアプリのプロジェクトを作成
💻 Terminal
# アプリの新規作成 shopify app init my-discount-function # Functionの追加(discount typeを選択) shopify app generate extension # → 「Discount」を選択 → 「Order discount」または「Product discount」を選択

JavaScriptでの実装例(購入金額3万円以上で10%OFF)

以下はShopify Scriptsで実装していた「3万円以上購入で10%OFF」のロジックをJavaScript Functionsに移行した例です。

📄 src/index.js(JavaScript Function)
// Shopify Functions: 注文割引(3万円以上で10%OFF) export default function run(input) { const THRESHOLD = 30000; // 閾値:30,000円 const DISCOUNT_RATE = 0.10; // 10%OFF // カートの合計金額を取得(単位:円) const cartTotal = input.cart.cost.subtotalAmount.amount; // 閾値未満の場合は割引なし if (cartTotal < THRESHOLD) { return { discounts: [], discountApplicationStrategy: “FIRST” }; } // 割引の適用 return { discounts: [ { targets: [{ orderSubtotal: { excludedVariantIds: [] } }], value: { percentage: { value: DISCOUNT_RATE * 100 }, }, message: “3万円以上購入で10%OFF”, }, ], discountApplicationStrategy: “FIRST”, }; }
💡 Scriptsとの主な違い

Scripts時代は独自言語で書いていたが、Functionsは標準的なJavaScriptで書ける。inputオブジェクトにカートデータが渡されるシンプルな構造なので、既存ロジックの移植はほぼ直感的にできる。

ローカルでのテスト方法

💻 Terminal
# Functionのビルド shopify app function build # テスト用のinputを渡してローカル実行 shopify app function run # 開発用サーバーの起動(ストアと接続してリアルタイムテスト) shopify app dev

5. 移行手順:配送ルールの移行

「5,000円以上で送料無料」「特定都道府県のみ配送」などの配送カスタマイズはShipping Functionsで対応できます。

実装例(5,000円以上で送料無料)

📄 src/index.js(Shipping Function)
// Shopify Functions: 配送カスタマイズ(5,000円以上で送料無料) export default function run(input) { const FREE_SHIPPING_THRESHOLD = 5000; const cartTotal = input.cart.cost.subtotalAmount.amount; // 全配送オプションを取得 const deliveryOptions = input.cart.deliveryGroups .flatMap(group => group.deliveryOptions); // 閾値以上の場合は全オプションの金額を0に変更 if (cartTotal >= FREE_SHIPPING_THRESHOLD) { return { operations: deliveryOptions.map(option => ({ rename: { deliveryOptionId: option.handle, title: `${option.title} (送料無料)`, }, })), }; } // 閾値未満は変更なし return { operations: [] }; }

6. 移行手順:決済カスタマイズの移行

「代引きを特定条件で非表示にする」「クレジットカードのみ表示する」などはPayment Customization Functionsで対応します。

実装例(特定商品が含まれる場合に代引きを非表示)

📄 src/index.js(Payment Customization Function)
// Shopify Functions: 決済カスタマイズ // 特定タグの商品がカートに含まれる場合は代引きを非表示 export default function run(input) { const COD_TAG = “no-cod”; // このタグが付いた商品があると代引き不可 // カート内の商品タグを確認 const hasNoCodItem = input.cart.lines.some(line => line.merchandise.product?.tags?.includes(COD_TAG) ); if (!hasNoCodItem) { return { operations: [] }; // 変更なし } // 代引き(Cash on Delivery)を含む決済方法を非表示 const hidePayments = input.paymentMethods .filter(method => method.name.toLowerCase().includes(“代引”) || method.name.toLowerCase().includes(“cash on delivery”) || method.name.toLowerCase().includes(“cod”) ) .map(method => ({ hide: { paymentMethodId: method.id }, })); return { operations: hidePayments }; }

7. 移行でよくあるエラーと対処法

エラー・症状 原因 対処法
Function execution time exceeded 5ms制限を超えている ループ処理を見直す。データ取得はinputから行い、外部APIコールは不可
ローカルテストは通るが本番で動かない アプリのデプロイ忘れ shopify app deployを実行してから再確認
割引が二重に適用される discountApplicationStrategyの設定ミス "FIRST""MAXIMUM"か要件に応じて設定
旧Scriptsアプリが残ったまま アプリの削除を忘れている 管理画面→アプリから旧Scriptsアプリをアンインストール
input.cart is undefined APIバージョンの不一致 shopify.app.tomlのapi_versionを最新(2025-04以降)に更新

8. AIを使った移行作業の効率化

🧠 Claude(Anthropic)

既存のScriptsコードをそのまま貼り付けて「これをShopify Functionsに移行してください」と指示するだけで、対応するFunctionsコードを生成してくれる。複雑な条件分岐も正確に変換できる精度が高い。Shopify SidekickはClaude Sonnetで動作しており、Shopify管理画面上でのAIアシスタントとしても活用できる。

🤖 ChatGPT(MCP×Shopify連携)

MCP連携でShopifyのストアデータを直接確認しながら、どのScriptsが残っているかを洗い出す作業に活用できる。「現在有効になっているScriptsの一覧を出して」という指示から移行対象の特定が可能。

✨ Gemini(Google)

Shopify Functionsの公式ドキュメント(英語)を読み込ませて「日本語で要点をまとめて」という使い方が実務で役立つ。APIの仕様変更の把握にも使える。

🔍 Perplexity

「Shopify Functions エラー ○○○」のようなデバッグ調査に強い。Stack OverflowやShopify Community Forumの最新情報を横断的に収集して回答してくれる。

Claudeへの移行プロンプト例

📋 Claude・ChatGPTへのプロンプト
以下のShopify Scriptsコードを、Shopify FunctionsのJavaScript実装に移行してください。 【移行元のScriptsコード】 [ここに既存のScriptsコードを貼り付ける] 【条件】 ・JavaScript(TypeScriptでも可)で実装 ・Shopify Functions APIの最新仕様に準拠 ・5ms以内に実行が完了する実装にする ・コメントは日本語で記載 ・エラーハンドリングも含める 移行後のコードと、Scriptsとの主な違いの説明もあわせてお願いします。

📘 移行チェックリスト+よくあるエラー対処法・プロンプト集をnoteで無料公開中

noteで読む(無料)

🛒 Shopifyでの構築・カスタマイズを検討中の方へ

Shopify無料体験をはじめる

Scripts→Functions移行のご相談・実装代行はお気軽にどうぞ

お問い合わせはこちら