保存できたのに、通知がない。自動化で「受付済み」と「通知済み」を分ける理由

保存できたのに、通知がない。自動化で「受付済み」と「通知済み」を分ける理由 業務自動化

フォームの受付は保存されている。でも担当者には通知が届いていない。気付かずにフォームを送り直すと、今度は同じ受付が2件になる。複数のサービスをつなぐ自動化では、こうした途中までの成功が起こり得ます。

受付が存在することと、通知が完了したことを別の状態として残します。この記事は架空の問い合わせ受付の設計例です。状態欄を追加するだけで、外部送信の重複を完全に防げるという意味ではありません。

1つの「完了」では、やり直す場所が分からない

保存と通知をまとめて成功・失敗だけで記録すると、通知エラーからの再実行で受付まで作り直すことになります。受付IDを決め、保存済みの受付に対する通知として記録すれば、どちらを再処理すべきか区別できます。

受付と通知は、別の状態。受付:データの保存は完了。通知:送信はまだ完了していない。再処理:受付を作り直さず通知を確認。同じ受付IDで、保存と通知をひもづける
図1:受付と通知は、別の状態。同じ受付IDで、保存と通知をひもづける
記録架空の例
受付IDREQ-20261102-001
保存状態保存済み
通知状態未送信/送信中/送信済み/要確認
通知先・通知種別担当窓口/新規受付
試行の記録試行番号、日時、結果、外部側のID
再送の担当受付運用担当。状態を確認して判断

再送してよい失敗と、結果が分からない失敗を分ける

送信前に入力チェックで止まった場合と、送信した直後に応答が途切れた場合は違います。後者は外部側で送信済みの可能性があります。失敗という表示だけで再送せず、外部側の記録や配信状態を確認できるようにします。

外部サービスが重複を防ぐキーに対応しているなら、その仕様に従って同じ通知IDを使います。対応していない場合、送信と記録の間の中断で重複が残り得ます。「送信済みと記録したから絶対に1回」にはなりません。

再送前に結果を確かめる。送信前に停止:原因を直して再送を検討。応答が途切れた:外部側で送信済みか確認。送信済み:同じ通知を増やさない。結果不明を、未送信と決めつけない
図2:再送前に結果を確かめる。結果不明を、未送信と決めつけない

保存と送信予定を一緒に確定する考え方

AWSのTransactional outboxの解説は、データ更新と通知予定を同じトランザクションで保存し、送信を別に進める方法を説明しています。トランザクションとは、複数の変更をひとまとまりで確定・取消する仕組みです。単にスプレッドシートへ状態列を追加しても、同じ保証にはなりません。

小さな自動化でも、「受付が保存されたら通知待ちが残る」「送信処理が待ちを拾う」という役割分担は参考になります。実装方法は保存先の機能や同時実行の条件で選び、通知側でも重複時の扱いを決めます。

止まったときに見る一覧を用意する

確認する一覧
・保存済みで通知待ちの受付
・送信中のまま一定時間が経過した通知
・結果不明で人の確認が必要な通知

再送前の記録
受付ID/通知ID/外部側の確認結果
再送する理由/実行者/日時/再送後の結果

通知待ちが増えていることに気付けなければ、再送できても運用は止まります。担当者が確認する頻度と、誰が代わりに見られるかを決めます。処理記録に本文や個人情報を丸ごと残すより、必要なIDと結果へ絞ります。

確認は、保存直後と送信直後の中断で行う

検証用の通知先で、保存後に送信を失敗させる、送信後の記録を失敗させる、同じ受付を再処理する、という条件を試します。何件保存され、何回通知され、どの状態が残るかを並べます。この記事はその確認観点を示すもので、特定環境での配信保証を検証した結果ではありません。

受付そのものの重複対策は、同じ注文を増やさないキーとロックと合わせて考えられます。保存と通知を分けると、失敗した仕事だけを見つけて戻せるようになります。

参考資料・確認範囲

2026年11月2日確認。本文の例・図・ひな型は本記事用に作成したものです。以下は、設計や事例の背景として参照した一次資料です。

AWS:Transactional outbox pattern

コメント

タイトルとURLをコピーしました