サムネイル

Shopify Delivery Customization API とは?実装方法まで徹底解説!

目次

はじめに

今回の記事では Shopify Functions の概要から具体的な Delivery Customization API の実装方法まで丁寧に解説していきます。

今回の記事でわかること

  • Shopify Functions の概要
  • Delivery Customization API の概要
  • Delivery Customization API の実装方法

今回の記事を読んで、チェックアウト時の配送オプションをカスタマイズできる Delivery Customization API についてマスターしていきましょう!

Delivery Customization API とは

Delivery Customization API とは、Shopify Functions の機能の中の一つです。Delivery Customization API を使うと、チェックアウト時に表示される配送オプションをカスタマイズできます。具体的には、特定の配送方法を非表示にしたり、表示順を自由に変更したり、オプションの名前をカスタマイズしたりすることができるようになります。

Shopify Functions を活用すると、Shopify のバックエンドにカスタム処理を簡単に追加できます。配送、決済、ディスカウント設定などのカスタマイズが可能になり、開発の自由度が高まります。また、これらの Functions はアプリとしてストアに追加されるため、既存のアプリを利用するか、独自のカスタムアプリを開発して導入することができます。

Shopify Functions の API の種類

Shopify Functions は、Delivery Customization API 以外にもさまざまな API が用意されており、各 API でカスタマイズできる処理が異なります。現在公開されている API の種類と概要の一覧を表にまとめてみました。

Function APIDescription
Delivery Customization API顧客に表示される配送オプションの名前変更、順序変更、並び替えが可能
Order Discount APIカート内の全ての商品に適用される割引を作成可能
Product Discount APIカート内の特定の商品または商品バリアントに適用される割引を作成可能
Shipping Discount API配送料に対して送料無料や割引などのロジックを作成可能
Payment Customization API決済方法の名前変更、順序変更、並び替えが可能
Cart TransForm APIカート内の商品を拡張し、カート内の商品の表示を更新可能
Cart and checkout validation APIカートとチェックアウトの独自のバリデーションを作成可能
Fulfillment ConstraintsShopify での注文処理のためのロジックを独自でカスタマイズ可能

Delivery Customization API アプリの作り方

ここからは実際に Delivery Customization API を使用したアプリの作成方法を解説していきます。

今回はチェックアウト時に顧客に提供する支払いオプションをカートの合計金額に基づいて非表示にするという処理を作成していきます。

事前準備

アプリ開発を行う前の事前準備をしていきます。

開発ストアの作成

今回作成するアプリをインストールするストアを作成します。
ストアの作成

アプリ作成に必要なツールをインストール

Shopify Functions が組み込まれているアプリを開発するために以下のものが必要になるのでローカル PC にインストールしてください。

  • Node.js
  • Node.js のパッケージマネージャ(npm, yarn)
  • ShopifyCLI

以上で事前準備は終了です。

アプリ作成

ここからは実際に Delivery Customization API が搭載されたアプリを作成していきます。

アプリの本体を作成

Delivery Customization API はアプリの拡張機能になるので、まずはアプリ本体を作成していきます。

  1. ターミナルを立ち上げて、アプリを作成したいディレクトリで以下のコマンドを実行します。
npm init @shopify/app@latest
  1. コマンド実行後、プロジェクト名や使用する言語などを聞かれるのでそれぞれ以下のように答えてください。
Your project name?(アプリのディレクトリ名)
 -> delivery-customization-api-app

Get Started building your app?(Remix を使用するかどうか)
 -> Start with Remix

For your Remix template, which language do you want?(使用する言語)
 -> Typescript
  1. アプリのディレクトリに移動します。
 cd delivery-customization-api-app/
  1. アプリに必要なライブラリをインストールします。
npm install
  1. 以下のコマンドを実行して、アプリのローカルサーバーを起動します。
npm run dev

コマンド実行後、いくつか質問されるので以下のように答えてください。

Create this project as a new app on Shopify
(パートナーダッシュボードに新規でアプリを作成するかどうか)
  -> Yes, create it as a new app

App name(アプリ名)
  -> delivery-customization-api-app

Which store would you like to use to view your project?
(どのストアでアプリの動作を確認したいか)
  -> delivery-customization-api-demo(事前準備で作成した開発ストアを入力してください)

Have Shopify automatically update your app's URL in order to create a preview experience?
(アプリをプレビューするための URL を Shopify が自動で生成してくれる)
  -> Yes, automatically update

ここまででアプリ本体の作成は完了です。

アプリに Delivery Customization API の機能を追加

ここからは、作成したアプリの本体に Delivery Customization API の拡張機能を追加していきます。

  1. アプリのディレクトリに移動します。
 cd delivery-customization-api-app/
  1. 以下の拡張機能を作成するコマンドを実行して、アプリに拡張機能を追加します。
npx shopify app generate extension

コマンド実行後の質問には以下のように答えてください。

Type of extension?(作成する拡張機能の種類)
  ->  Delivery customization - Function

Name your extension?(作成される拡張機能の名前)
  -> 何も入力しない

What would you like to work in?(使用する言語)
  -> TypeScript
  1. インストールした拡張機能のディレクトリに移動します。
cd extensions/product-discount/
  1. run.graphql を以下のコードに書き換えます。
query RunInput {
  cart {
    deliveryGroups {
      deliveryAddress {
        provinceCode
      }
      deliveryOptions {
        handle
        title
      }
    }
  }
}

run.graphql にはディスカウントで必要な情報を取得してくる GraphQL クエリを作成しています。 どのような情報が取得できるかはこちらのドキュメントで詳しく確認できます。

  1. run.graphql を元に型 RunInput を生成します。
    以下のコマンドを実行して型を生成します。この型は、次に編集するrun.ts ファイルで使用されます。run.ts は実際にバリデーション処理を書いていくファイルです。
npm run typegen
  1. run.ts を以下のコードに書き換えます。
import type { RunInput, FunctionRunResult } from '../generated/api';

export function run(input: RunInput): FunctionRunResult {
  const message = '天候状況によって配送が遅れる可能性があります。';

  let toRename = input.cart.deliveryGroups
    // 該当する地域を含む配送先住所を持つ配送グループのフィルタリング
    .filter(
      (group) => group.deliveryAddress?.provinceCode && group.deliveryAddress.provinceCode == 'NC',
    )
    .flatMap((group) => group.deliveryOptions)
    .map((option) => ({
      rename: {
        deliveryOptionHandle: option.handle,
        title: option.title ? `${option.title} - ${message}` : message,
      },
    }));

  return {
    operations: toRename,
  };
}
  1. アクセススコープの更新
    shopify.app.toml の scopes を以下のように更新してください。
scopes = "write_products,read_delivery_customizations,write_delivery_customizations"
  1. アプリのディレクトリに移動してアプリをデプロイします。
cd ../.. && npm run deploy

コマンド実行後の質問には以下のように答えてください。

Include `shopify.app.toml` configuration on `deploy`?
  -> Yes, always

Release a new version of cart-chekout-validation-demo?
  -> Yes, release this new version

ここまででアプリに Shopify Functions の中の Delivery Customization API を搭載することができました。

作成したアプリを開発ストアにインストール

次に、作成したアプリを開発ストアにインストールします。
パートナーダッシュボードの「アプリ管理」から今回作成したアプリを選択します。
アプリを選択

アプリ詳細画面に遷移したら「ストアを選択する」をクリックしてください。
ストアを選択する

アプリの機能を試すストアを選択します。最初に作成した開発ストアを選択してください。
開発ストアを選択

インストール」をクリックしてアプリをストアにインストールします。
インストールをクリック

ここまでで、Delivery Customization API を搭載したアプリを開発ストアにインストールすることができました。

ストアで Delivery Customization API を有効化

次に、開発ストアで Delivery Customization API を有効化します。

Delivery Customization API を有効化させるためには、GraphQL Admin API を叩く必要があります。今回は Shopify が提供している「Shopify GraphiQL App」というアプリを使用して Admin GraphQL を叩いていきます。「Shopify GraphiQL App」についてはこちらの記事で詳しく解説しているのでよければ読んでみてください。

こちらから「Shopify GraphiQL App」をインストールできます。

▼ 「Shopify GraphiQL App」インストール画面
Shopify GraphiQL App インストール画面

「Shop URL」の項目にはアプリをインストールストアのドメインを入力します。最初に作成した開発ストアのドメインを入力してください。
開発ストアのドメインを入力

「Admin API」の項目では、「Shopify GraphiQL App」に許可するアクセススコープを選択します。「Select all」をクリックしてください。
Select all をクリック

Install」をクリックしてアプリをストアにインストールしていきます。
Install をクリック

インストール」をクリックしてください。
インストールをクリック

ここからは、Admin GraphQL を叩いて Delivery Customization API を有効化していきます。

下記のクエリを使用して Delivery Customization API を有効化します。YOUR_FUNCTION_ID_HERE の部分は、アプリを作成してきたディレクトリの .env ファイルに SHOPIFY_DELIVERY_CUSTOMIZATION_ID=xxxxxxxxxxxxxxxxxx という行があると思うので、そこの xxxxxxxxxxxxxxxxxx に該当する部分に書き換えてください。

mutation {
  deliveryCustomizationCreate(
    deliveryCustomization: {
      functionId: "SHOPIFY_DELIVERY_CUSTOMIZATION_ID"
      title: "Add message to delivery options for state/province"
      enabled: true
    }
  ) {
    deliveryCustomization {
      id
    }
    userErrors {
      message
    }
  }
}

以上で、Delivery Customization API を有効化することができました。

有効化できているか確認してみましょう。

ストア管理画面左側のサイドバーから「設定」をクリックしてください。
設定をクリック

配送と配達」を選択します。
配送と配達を選択

「Add message to delivery options for state/province」が追加されており、有効化されていることが確認できます。
有効化の確認

Delivery Customization API の動作確認

Delivery Customization API の動作確認を行なっていきます。

チェックアウト画面に移動して挙動を確かめましょう。

チェックアウト画面

配送住所が指定した場所である場合に配送方法にメッセージが追加されています。

まとめ

今回は Shopify Functions の概要から Delivery Customization API を使用して、Shopify Functions の具体的な実装方法まで解説しました。

Shopify Functions は、今回紹介した Delivery Customization API のような多様な機能を提供します。これにより、ディスカウント、配送、支払い方法などのカスタマイズが可能となり、開発の幅が大きく広がります。この機会に、さらに詳しく学んでみることをお勧めします!

最後まで読んでいただきありがとうございました!

これらの記事では、Shopify Functions を解説しています。

おすすめ Shopify アプリ

シンプル店舗受け取り|お手軽ローカルピックアップのアイコン

シンプル店舗受け取り|お手軽ローカルピックアップ

お客様がカートページで受け取り店舗・日時を指定できます。テイクアウトや店舗受け取りにおすすめです。

シンプル注文履歴おすすめ商品|お手軽マイページアップセルのアイコン

シンプル注文履歴おすすめ商品|お手軽マイページアップセル

マイページの注文ページに、商品ごとに設定したおすすめ商品を表示。再購入を後押しします。

シンプル顧客メタフィールドCSVインポート・エクスポートのアイコン

シンプル顧客メタフィールドCSVインポート・エクスポート

顧客メタフィールドをCSVで一括管理。エクスポート・編集・インポートがかんたんに。

シンプルフォーム一体型LP|お手軽チャットボット購入のアイコン

シンプルフォーム一体型LP|お手軽チャットボット購入

チャットボット形式でお客様が迷わず注文できるLPを設置できます。コーディング不要で、テーマエディタから簡単に設定できます。

シンプル商品メタフィールドCSVインポート・エクスポートのアイコン

シンプル商品メタフィールドCSVインポート・エクスポート

商品やバリエーションのメタフィールドをCSVで一括管理。インポートもエクスポートもこのアプリひとつで完了。

シンプル新しいお客様アカウント拡張|生年月日・追加フォームのアイコン

シンプル新しいお客様アカウント拡張|生年月日・追加フォーム

誕生日や性別などの項目を、お客様アカウントのプロフィールページに追加できます。コーディング不要です。

シンプル2点目購入割引|2点目以降自動セール設定のアイコン

シンプル2点目購入割引|2点目以降自動セール設定

2点目以降の購入で自動割引。割引バッジと対象商品の表示で、まとめ買いを後押しします。

シンプル商品カルーセル|お手軽おすすめ商品スライダーのアイコン

シンプル商品カルーセル|お手軽おすすめ商品スライダー

おすすめ商品をスライダーで表示できます。ストアのどこにでも設置でき、お客様に気になる商品を見つけてもらえます。

関連記事