同じ更新が再び届く
出荷依頼はすでに存在するかもしれません。合意した範囲内では、同じ処理を意図した再配信によって依頼を重複作成しないようにします。
同じ注文に関する別の更新
住所変更やキャンセルには別の処理が必要な場合があります。注文番号が同じでも、すべての更新が重複とは限りません。
顧客が二件目の注文をする
顧客、商品、合計金額が同じに見えても、新しい注文は処理する必要があります。内容が似ているだけでは再送とは判断できません。
システムの処理が完了していても、確認の返信が失われることがあります。連携を承認する前に、再送で請求書や出荷依頼が重複作成されない仕組みと、結果が不明な場合の確認担当者を尋ねましょう。

注文、倉庫、会計システムを接続する前に、同じ更新が二度届いた場合の動作を確認しましょう。データの再送が必要でも、請求書、出荷依頼、顧客への連絡はすでに作成済みかもしれません。
あるシステムが更新を送り、受信側が処理を完了したとします。成功を知らせる返信が戻る途中で失われると、送信側は待機し、タイムアウト後に再送します。
タイムアウトが示すのは再送が起きた理由であり、最初の処理が完了したかどうかではありません。再試行を無効にすると作業が未完了のまま残り、業務処理を毎回繰り返すと重複作業が発生するおそれがあります。
Malcolm Featonby は Amazon Builders’ Library の記事で、この不確実性について説明しています。再試行を安全にする。Stripe と Shopify も webhook の再配信について説明しています。Webhook はシステム間で自動送信される更新です。接続を稼働させる前に確認しておきたい動作です。
支払い済み注文の更新を受けて、店舗が出荷依頼を一件作成する例を考えます。次の三つの状況は、それぞれ異なる扱いが必要です。
出荷依頼はすでに存在するかもしれません。合意した範囲内では、同じ処理を意図した再配信によって依頼を重複作成しないようにします。
住所変更やキャンセルには別の処理が必要な場合があります。注文番号が同じでも、すべての更新が重複とは限りません。
顧客、商品、合計金額が同じに見えても、新しい注文は処理する必要があります。内容が似ているだけでは再送とは判断できません。
意図された処理を何で識別し、再配信後もその識別情報をどう保つのか、提供元に確認しましょう。技術的な方式を選ぶ必要はありませんが、重複を見分けながら新しい処理を受け付ける理由を説明してもらいましょう。
提供元によって詳細は異なります。Stripe の文書ではイベントの再送と、同じ対象に関する別々のイベントを扱っています。Shopify は個々の配信と、その背後にある事業者の処理を区別しています。ある用途に役立つ識別子が、すべての業務処理に適切とは限りません。
関連する例はStripe の webhook ドキュメントとShopify の配信確認ガイドにあります。提供元には、実際に接続するシステムの現在の動作を確認してもらいましょう。
出荷依頼は作成されたものの、完了を記録する前に接続が停止したとします。次の試行では既存の依頼をどう見つけるのでしょうか。二つの同じ更新が同時に届いたらどうなるでしょうか。過去に受信した更新の一覧だけでは、どちらの疑問にも答えられません。
次の三点を分けて確認しましょう。更新が届いた証拠、接続の処理状態、受信側システムで処理が行われた証拠です。配信確認だけでは、出荷依頼や請求書の存在を確認できない場合があります。
結果が不明な場合に誰が調査し、再試行を許可する前に何を確認するかを決めておきましょう。従業員が再開できる処理、提供元の支援が必要な処理、重複処理を避けるために中止すべき状況を明確にします。システム間の記録を照合し、次の対応を人が判断する必要がある問題もあります。
再試行が何を実行できるのか、結果が不明な場合に誰が引き継ぐのかが分かってこそ、「もう一度試す」ことに意味があります。
サポート対象のテスト環境を使い、架空の記録を用意して外部への業務処理を停止します。同じ更新の二度の配信、実際の二件目の注文、一つの手順が成功した後の障害をデモに含めます。配信ログだけでなく結果の記録も確認します。動作を確かめるために実際の決済や注文を再実行してはいけません。
起動条件、意図された処理、重複の判定方法、従業員が結果を確認できる場所を簡潔に書面で説明してもらいましょう。過去の処理を記憶する期間、遅れて届いた更新の扱い、結果が不明または未完了の処理の担当者も含めます。
特定の障害を安全にデモできない場合は、その不足を記録し、提供元と範囲を絞った確認方法を決めましょう。テストの成功が裏付けるのは、その条件下での動作です。接続するすべてのサービスで処理が必ず一度だけ行われる保証でも、一連の処理全体が不可分な一つの操作として完了する証明でもありません。
私たちはシステム連携と業務向けソフトウェアを開発しています。連携を計画中であれば、対象システム、実行したい処理、まだ説明が必要な再送時の動作をお聞かせください。必要な作業についてご相談いただけます。
いいえ。返信が失われた間に処理が完了している可能性があります。次の試行で何をするか決める前に、処理結果と受信側システムを確認してください。
あります。顧客が同じ商品と合計金額で意図的に二件目を注文することがあります。連携では新たな注文意思と再配信を区別する必要があり、内容の一致だけでは判断できません。
架空の記録を使い、外部への業務処理を停止したサポート対象のテスト環境を依頼します。再送、本当に新しい処理、一部の処理が成功した後の障害を含めます。実際の注文や決済で試すのではなく、テストできない点を記録してください。
稼働前に担当者または責任チームを決めます。従業員が自分で確認・再開できる範囲と、次の処理を許可する前に提供元の調査が必要な場合を明確にしてください。
前回のニュースレター:すでにお持ちのサブスク型サイトやアプリで、もっと収益を上げる方法。
その前の回:本物の成功事例から AI のたわ言を見抜く方法。
気になりますか?
毎週 もしくはお知らせいただければ、ご希望に合わせて調整します。いかがですか?