Shopify Functionsを使用すると、開発者は外部サーバーではなくShopifyのインフラストラクチャ内で実行されるコアコマースロジックをカスタマイズできます。つまり、カスタム割引の計算、支払い方法のフィルタリング、配送料の変更、カートの検証がネットワーク遅延なしでミリ秒単位で実行されます。関数はスクリプト エディター (Shopify スクリプト) に代わるもので、プラットフォーム上のバックエンドのカスタマイズの将来を表します。このガイドでは、あらゆる関数の種類、開発ワークフロー、展開パターンについて説明します。
Shopify Functionsを使用すると、開発者は外部サーバーではなくShopifyのインフラストラクチャ内で実行されるコアコマースロジックをカスタマイズできます。つまり、カスタム割引の計算、支払い方法のフィルタリング、配送料の変更、カートの検証がネットワーク遅延なしでミリ秒単位で実行されます。関数はスクリプト エディター (Shopify スクリプト) に代わるもので、プラットフォーム上のバックエンドのカスタマイズの将来を表します。このガイドでは、あらゆる関数の種類、開発ワークフロー、展開パターンについて説明します。
重要なポイント
- Shopify 関数は Shopify インフラストラクチャ内の WebAssembly サンドボックスで実行され、5 ミリ秒未満の実行時間を保証します
- 5 つの機能 API が利用可能: 割引、支払いのカスタマイズ、配送のカスタマイズ、カートの検証、注文のルーティング
- 関数は Rust、JavaScript、または WebAssembly にコンパイルできる任意の言語で記述されています。
- 各関数は、GraphQL クエリ結果を介して入力を受け取り、Shopify が操作に適用する構造化出力を返します。
- 機能は Shopify アプリの一部として展開され、販売者が管理者を通じて設定できます
Shopify の機能とは何ですか?
Shopify Functions は、事前定義された拡張ポイントで特定のコマース操作をカスタマイズする軽量プログラムです。 Webhook (データを外部サーバーに送信する) とは異なり、関数は Shopify のインフラストラクチャ内で WebAssembly モジュールとして実行され、以下のことを保証します。
- 速度: 5ms 未満の実行 (ネットワーク遅延なし)
- 信頼性: 外部サーバーへの依存はありません
- スケール: 容量計画を行わずにあらゆるトラフィック量を処理します
- セキュリティ: ファイルシステムやネットワークへのアクセスを必要としないサンドボックス実行
関数 API
| API | 目的 | 置き換え |
|---|---|---|
| 割引 | カスタム割引ロジック (BOGO、段階的、条件付き) | Shopify スクリプト (項目の割引) |
| 支払いのカスタマイズ | チェックアウト時に支払い方法を表示/非表示/並べ替え | 支払い方法の条件ロジック |
| 配信のカスタマイズ | 配送料、名前、在庫状況を変更する | 配送料スクリプト |
| カートの検証 | カートの内容を検証し、無効な組み合わせをブロックする | カート属性の検証 |
| 注文ルーティング | フルフィルメント場所の選択をカスタマイズする | デフォルトのロケーション ルーティング |
開発環境
前提条件
- Shopify CLI(最新バージョン)
- Node.js 18+
- Shopify パートナー アカウントと開発ストア
- Rust ツールチェーン (Rust ベースの関数用) または JavaScript ランタイム
関数の作成
Shopify CLIを使用して新しい関数をスキャフォールディングします。
npx shopify app generate extension を実行し、関数の種類を選択します。 CLI は以下を生成します。
| ファイル | 目的 |
|---|---|
src/run.js (または run.rs) | 関数ロジック |
input.graphql | 入力データを定義する GraphQL クエリ |
shopify.extension.toml | 構成とメタデータ |
schema.graphql | Shopify API スキーマ (自動生成) |
開発ワークフロー
- 入力クエリの定義: 関数が必要とするデータを取得する GraphQL クエリを
input.graphqlに記述します。 - ロジックの実装: 入力を出力に変換する関数を
src/run.jsに記述します。 - ローカルでテスト:
npx shopify app function testを使用して単体テストを実行します。 - デプロイ:
npx shopify app deployを使用して Shopify にプッシュします - 設定: 販売者はアプリの UI を通じて関数パラメータを設定します
割引関数
割引機能の仕組み
割引関数は、カート データ (品目、顧客情報、割引コード) を受け取り、適用する割引操作を返します。この関数は、ページの読み込み、アイテムの追加/削除、チェックアウト エントリなど、カートが評価されるたびに実行されます。
一般的な割引パターン
X を購入して Y を入手: カートに製品 X が含まれている場合、製品 Y にパーセントまたは固定割引を適用します。
段階的割引: カートの合計に基づいて段階的な割引を適用します (100 USD を超えると 10%、200 USD を超えると 15%、500 USD を超えると 20%)。
顧客固有の価格設定: 顧客タグまたはメタフィールドを確認し、セグメント固有の割引 (卸売、VIP、従業員) を適用します。
バンドル割引: 特定の製品の組み合わせがカートにある場合、バンドル割引が適用されます (3 つすべて購入すると 25% 割引)。
数量割引: 数量に基づいてユニットごとの割引を適用します (正規価格で 1 ~ 9 ユニット、10% オフで 10 ~ 24 ユニット、20% オフで 25 以上)。
入力クエリの例
割引関数の入力クエリでは通常、次のものが要求されます。
- 製品 ID、バリアント ID、数量、価格を含むカートの品目
- 顧客セグメンテーションを使用する場合は顧客情報 (ID、タグ、メタフィールド)
- コードベースの割引を検証する場合の割引コード
- 製品固有の割引ルールの製品メタフィールド
出力構造
この関数は、割引操作の配列を返します。
| 操作 | 説明 |
|---|---|
productDiscount | 特定の製品/バリエーションに割引を適用する |
orderDiscount | 注文合計に割引を適用する |
freeShipping | 送料を削除 |
各操作には、割引値 (パーセンテージまたは定額)、顧客に表示されるメッセージ、および割引が適用される条件が含まれます。
支払いのカスタマイズ機能
使用例
- 支払い方法を非表示: しきい値を超える注文の場合は「代金引換」を非表示にします
- 注文方法を再注文: 顧客の所在地に基づいて、最も一般的な支払い方法を最初に表示します
- メソッド名の変更: ローカライズされた支払い方法名を表示します
- メッセージの追加: 特定の支払い方法の横に追加情報を表示します
実装パターン
この関数は、カートの詳細と利用可能な支払い方法を受け取ります。支払い方法リストを変更する操作を返します。
| 操作 | 効果 |
|---|---|
hide | チェックアウトから支払い方法を削除する |
rename | 支払い方法の表示名を変更する |
move | 支払い方法の再注文 |
配信カスタマイズ機能
使用例
- 配送オプションの名前変更: 配送業者の料金名の代わりに「速達 (2 ~ 3 日)」を表示します
- オプションを非表示: 生鮮食品の陸送を削除します
- オプションを再注文: 緊急の注文の場合は、最速のオプションを最初に表示します
- メッセージの追加: 各オプションの横に配達予定日を表示します
実装
この関数は、設定された配送業者から配送料を受け取り、変更を返します。入力には、カートの品目 (製品タイプを確認するため)、配送先住所 (場所ベースのルール用)、および利用可能な配送オプションが含まれます。
カート検証関数
使用例
- 数量制限: 限定版商品は最大 5 個まで
- 組み合わせ制限: 製品 A と製品 B を同じカートに入れることはできません (互換性がありません)。
- 最小要件: 卸売アカウントは最低 100 米ドルを注文する必要があります
- 地理的制限: 特定の製品の制限された地域への発送をブロックします。
検証出力
検証が失敗すると、関数は次のエラーを返します。
- ターゲット: どのカート ラインまたはカート自体
- メッセージ: お客様向けのエラー メッセージ
- 重大度: エラー (チェックアウトをブロック) または警告 (許可するが通知する)
関数のテスト
単体テスト
デプロイせずにローカルで機能をテストします。
- サンプル入力データを使用してテスト フィクスチャを作成する
- フィクスチャに対して関数を実行します。
- 出力が期待される結果と一致することをアサートします。
Shopify CLI はテスト ボイラープレートを生成します。
| テストシナリオ | 何を確認するか |
|---|---|
| 空のカート | 関数は操作を返しません。 |
| 対象となるカート | 正しい割引/変更が適用されました |
| エッジケース | 境界値、最大数量 |
| エラー処理 | 無効な入力は正常に処理されました。 |
| パフォーマンス | 実行は 5 ミリ秒以内に完了します |
プレビューモード
公開する前に開発ストアで関数をテストします。
- 関数を開発ストアにデプロイします
- アプリ管理者から設定します。
- 製品をカートに追加し、動作を確認します
- Shopify CLIの出力で関数実行ログを確認します。
パフォーマンスに関する考慮事項
実行制限
| 制限 | 値 |
|---|---|
| 実行時間 | 最大5ms |
| メモリ | 12MB |
| 入力サイズ | 64KB |
| 出力サイズ | 64KB |
| 説明書 | 100 万の Wasm 命令 |
最適化のヒント
- 入力クエリをロジックに必要なフィールドのみに最小限に抑えます。
- 複雑なネストされたループを回避します -- ルックアップにはハッシュ マップを使用します
- 関数ではなくアプリ構成で値を事前計算します
- パフォーマンスが重要な機能には Rust を使用します (JavaScript より 2 ~ 3 倍高速)
- Shopify CLIパフォーマンスツールを使用したプロファイル関数の実行
販売者の設定
アプリ構成 UI
機能は、Shopify 管理画面で直接設定されるのではなく、アプリの UI を通じて設定されます。次の構成ページを作成します。
- 機能の目的と現在の設定を表示します
- 販売者がパラメーター (しきい値、製品の選択、パーセンテージ) を設定できるようにします。
- 実行時に関数が読み取るメタフィールドとして構成を保存します。
- 保存する前に入力を検証します
構成ストレージ
アプリのメタフィールドを使用して関数設定を保存します。
- 割引に関するメタフィールド: しきい値、パーセンテージ値、製品 ID
- アプリ データ ストレージ: 段階的ルール、顧客セグメントなどの複雑な構成
- 関数設定: 入力クエリを介して関数の入力の一部として渡されます。
ECOSIRE機能開発サービス
カスタム Shopify 関数には、コマース ドメインの専門知識と WebAssembly 開発スキルの両方が必要です。 ECOSIRE の Shopify アプリ開発サービス には、機能の設計、実装、テスト、展開が含まれます。私たちのチームは、お客様のビジネス ルールに合わせた割引エンジン、支払いのカスタマイズ、検証ロジックを構築します。継続的なニーズに対応するため、Shopify プラットフォームの進歩に合わせて、サポート サービス がカスタム機能を維持および進化させます。
関連書籍
- Shopify Checkout の拡張性
- Shopify アプリ開発ガイド
- Shopify API 統合ガイド
- Shopify フローオートメーション
- Shopify Plus エンタープライズガイド
Shopify 関数は Shopify スクリプトに代わるものですか?
はい。 Shopify スクリプトは非推奨となり、関数が代替となります。主な違い: 関数は (Ruby ではなく) WebAssembly として実行され、(スクリプト エディターではなく) アプリを通じてデプロイされ、より多くの拡張ポイントをサポートします。既存のスクリプトは引き続き機能しますが、Shopify は Functions に移行することをお勧めします。
開発者以外でも Shopify 関数を作成できますか?
直接ではありません。関数にはプログラミングの知識 (JavaScript または Rust) が必要です。ただし、開発者は、販売者がコーディングせずに機能の動作をカスタマイズできる構成 UI を備えたアプリを構築できます。 Shopify App Store の多くのアプリは、販売者向けのインターフェイスを提供しながら内部で Functions を使用しています。
1 つのストアで実行できる関数の数に制限はありますか?
Shopify は、インストールされる関数の数に厳しい制限を課しません。ただし、各チェックアウト評価では、該当するすべての関数が順番に実行されるため、パフォーマンスに関する考慮事項が適用されます。関数あたり 5 ミリ秒の制限により、個々の関数がチェックアウトを遅くすることはありませんが、数十の関数があると、理論的には合計チェックアウト評価時間に影響を与える可能性があります。
執筆者
ECOSIRE Teamテクニカルライティング
ECOSIRE のテクニカルライティングチームは、Odoo ERP、Shopify による EC、AI エージェント、Power BI による分析、GoHighLevel による自動化、そしてエンタープライズソフトウェアのベストプラクティスを扱っています。私たちのガイドは、企業が十分な情報に基づいてテクノロジーを判断できるよう支援します。
関連記事
電子商取引のための AI コンテンツ生成: 商品説明、SEO など
AI を使用して e コマース コンテンツを拡張します: 商品説明、SEO メタ タグ、電子メールのコピー、ソーシャル メディア。品質管理フレームワークとブランドの声の一貫性に関するガイド。
マルチチャネル電子商取引: 2026 年に向けた完全な戦略
チャネルの選択、在庫の同期、注文ルーティング、価格設定、返品、分析、技術スタックをカバーするこのハンドブックを使用して、マルチチャネル e コマースをマスターします。
Odoo Python 開発: 初心者とプロのための完全ガイド
モジュール構造、ORM API、ビュー、コントローラー、継承パターン、デバッグ、テストを網羅したこの完全なガイドで、Odoo Python 開発をマスターしましょう。