---
title: "Shopify の配送日検証：日付なし・休業日・満枠の注文をチェックアウトでブロックする"
description: "配送日ピッカーは日付を表示するだけです。日付なし、休業日、満枠の注文を止めるのは検証です。確認すべき項目、お客様に表示される実際のメッセージ、Shopify で検証を入れる 3 つの方法、そして検証でも防げないことを解説します。"
contentType: "blog"
locale: "ja"
localized: true
source: "https://orderrules.com/ja/blog/shopify-delivery-date-validation"
slug: "shopify-delivery-date-validation"
date: "2026-10-31"
tags:
  - "shopify"
  - "delivery dates"
  - "delivery date validation"
  - "checkout validation"
  - "shopify functions"
  - "express checkout"
  - "buy it now"
  - "shop pay"
  - "capacity"
---
**配送日ピッカーは日付を表示します。検証は、その日付を守らせます。** Shopify での検証とは、カートおよびチェックアウト検証 Function のことです。支払いの前に Shopify のサーバー上で動き、日付がない、休業日、満枠のいずれかなら注文を止めます。Shopify のどのプランでも、Shop Pay、Apple Pay、**Buy it now** を含むチェックアウトへのどの経路でも動きます。Plus が必要なのは、チェックアウトページの*中*に表示するピッカーだけです。

## ピッカーだけでは不正な日付が通ってしまう理由

商品ページやカートページのピッカーは、表示にすぎません。お客様のブラウザー上で、休業日と満枠の日付をグレーアウトするだけです。次のような場合、有効な日付がないままでも注文は通ります。

- **お客様がエクスプレスボタンを使った。** 商品ページの Buy it now、Shop Pay、Apple Pay、Google Pay はそのままチェックアウトへ進むので、カートのピッカーは一度も動きません。[Buy It Now は配送日を飛ばします](/blog/shopify-buy-it-now-skips-delivery-date)をご覧ください。
- **支払っている間に日付が埋まった。** ページを開いた時点では、ピッカーに「残り 1」と出ていました。その枠を別の人が取りました。
- **カートが昨日のものだった。** 日付を選んだあと、締め切りを過ぎてから戻ってチェックアウトしました。
- **カートドロワーにピッカーが表示されない。** あるいは、テーマが変わってピッカーのブロックがなくなりました。
- **カートの配送日が、手作業やスクリプトで書き換えられた。**

Shopify 標準の無料の方法、つまりテーマのコードでカートページに日付ピッカーを足す方法にも、同じ穴があります。日付は集めますが、チェックアウトでは何もチェックしません。

## 配送日の検証が行うべきチェック

OrderRules がチェックアウトで行うチェックと、お客様に表示されるデフォルトのメッセージです。

| チェック | 防げるもの | デフォルトのメッセージ |
|---|---|---|
| 日付が必須 | 日付がまったくない。Buy it now や Shop Pay でよく起きる | ご注文の前にお届け日を選択してください。 |
| 日付が有効 | 過去の日付、リードタイム内や締め切り後の日付、配送しない曜日、予約できる期間より先の日付 | 選択されたお届け日はご利用いただけなくなりました。別の日付をお選びください。 |
| 休業日 | 祝日などの配送休業日 | 選択された日付は配達を行っておりません。別の日付をお選びください。 |
| 日が満枠 | その日付が、お届け日ごとの最大注文数に達している | `{date}` の配達は満枠です。別の日付をお選びください。 |
| 時間帯 | 時間帯が未選択、または時間帯が満枠 | 配達時間帯を選択してください。/ 選択された配達時間帯は満枠です。別の時間帯をお選びください。 |
| 日付ごとの商品上限 | その日付に残っている数を超える商品数 | Only `{n}` left for delivery on `{date}`. Please reduce the quantity or choose another date. |
| 受け取り方法 | 店舗受け取り限定の商品と配送限定の商品の混在、または誤った受け取り方法 | カート内の商品は受け取り方法が異なるため、同時にご購入いただけません。 |
| 店舗受け取り | 受け取り日、店舗、時間帯が未選択。休業日や満枠の受け取り日・時間帯 | ご注文の前に受け取り日を選択してください。（ほかに 5 件） |

アプリのチェックアウトでのチェックが最初の行だけだと、日付なしの注文は止められても、予約超過は止められません。

## Shopify で検証を入れる 3 つの方法

**1. 自分で検証 Function を作る。** 開発者が、カートの配送日を読み取り、許可されていなければエラーを返す、カートおよびチェックアウト検証 Function を書きます。どのプランでも動きます。Function は実行中にデータベースを参照できないので、許可する日付と予約済みの数を、あらかじめメタフィールドに書き込み、最新に保つ必要があります。作業の大半はそこです。仕組みは、Shopify の[検証 Functions の解説](/blog/shopify-checkout-validation-functions-block-orders)で扱っています。

**2. チェックアウト検証付きの配送日ピッカーアプリを使う。** インストールする前に、5 つ確認しましょう。

1. カートおよびチェックアウト検証 Function を使っているか、それともテーマの JavaScript だけか。
2. Buy it now、Shop Pay、Apple Pay で日付のない注文を止められるか。
3. チェックは、Shopify のどのプランで動くか。
4. 満枠の日付や時間帯を、ピッカーで隠すだけでなく、チェックアウトでも再チェックするか。
5. 販売するすべての言語で、メッセージを編集できるか。

[配送日ピッカーアプリの比較](/blog/best-shopify-delivery-date-picker-apps)で、チェックアウトで強制するアプリと、表示だけのアプリを示しています。

**3. Shopify Plus なら、ピッカーをチェックアウトの中に置く。** チェックアウト UI 拡張が、チェックアウトページにカレンダーを表示するので、エクスプレスで購入するお客様にも見えます。ただし、これも表示にすぎません。検証 Function と組み合わせないと、日付が飛ばされたり、古い日付が残ったりします。

## OrderRules で設定する

1. **Advanced** プランで、利用可否ルールを開き、**チェックアウトで配送日を必須にする** をオンにします（時間帯を使うなら **時間帯を必須にする** もオン）。
2. Shopify で **設定 → チェックアウト** を開き、**チェックアウトルール** までスクロールして、OrderRules のルールがオンか確認します。
3. 検証がチェックする内容を設定します。**お届け日ごとの最大注文数**、各時間帯の **1日あたり上限**、**配達日** で集計する商品の制限、配送休業日です。
4. **チェックアウトメッセージ** で、メッセージを編集するか、言語パックを適用します。
5. 日付なし、休業日、満枠の日付で、カート、**Buy it now**、Shop Pay の各経路からテストします。最初に試すなら、[開発ストア](/docs/getting-started/test-on-development-store)がいちばん安全です。

## 検証でも防げないこと

- **同じ秒に完了する 2 件のチェックアウト**は、最後の 1 枠に対して両方が通ることがあります。検証は予約済みの分を読み取るだけで、ロックはかけません。
- **締め切り直後**は、アプリが許可する日付の一覧を更新するまでの短い間、日付がチェックアウトを通ることがあります。ページ上のピッカーからは、その日付がすぐに消えます。
- **チェックアウトを経由しない注文**はチェックされません。Shopify POS、サブスクリプションの更新、管理画面で作成して支払い済みにした注文、ほかのアプリや Admin API からの注文です。これらも上限にはカウントされます。
- **購入後の変更。** Shopify の管理画面で注文の日付を変更しても、チェックされず、枠も移動しません。
- **郵便番号とゾーン。** OrderRules は住所をチェックしません。あるエリアへの配送をやめるなら、そのエリアを Shopify の配送ゾーンから外してください。

詳しくは、[互換性と既知の制限](/docs/guides/compatibility-and-limitations)をご覧ください。

## 関連記事

- [Buy It Now は配送日を飛ばします](/blog/shopify-buy-it-now-skips-delivery-date) · [チェックアウト検証の仕組み](/blog/shopify-checkout-validation-functions-block-orders) · [おすすめの配送日ピッカーアプリ](/blog/best-shopify-delivery-date-picker-apps)
- [チェックアウトでの配送日（Plus）](/docs/delivery/delivery-date-at-checkout) · [配送日の上限](/docs/delivery/delivery-date-limits)
