Guide業務とテクノロジー2026.09.11
Updated 2026.09.11
問い合わせの送信結果が分からないとき、どう扱うか
送信ボタンを押した。サーバーでは保存された。その直後に通信が切れた。PBGの問い合わせ基盤で設計・検証した、受付の事実とブラウザ表示が食い違う問題を解説します。
まず押さえること
成功応答が届かなかっただけでは、未受付と断定できません。受付を永続保存し、同じ送信の再確認を新しい受付と区別します。通知は保存した受付から別に配送し、その失敗で受付の事実を消さない設計にします。分からない状態を正しく伝え、確かめ直せることが重要です。
「失敗しました」が、事実に反することがある
通信が保存前に切れたなら、問い合わせは残っていないかもしれません。保存後なら残っているかもしれません。ブラウザには同じ通信エラーに見えても、サーバーの状態は違います。
新規送信を促せば同じ問い合わせが二件になる可能性があり、成功したはずと表示すれば未保存のものを受理済みと誤認させます。必要なのは不明を正しく表現し、同じ送信を照合できる仕組みです。
受付の事実と、失われた応答を分ける
保存から、応答と通知が分かれる
ブラウザから受付へ送信し、問い合わせと配信予定を同時に保存します。保存後はブラウザ応答とworkerの通知が別に進みます。
- 1. Browser → Reception
同じ送信を識別して受付へ渡す。
- 2. Durable Store
問い合わせ + 配信予定を一つのトランザクションで保存。
- 3. 保存後は二つの経路へ
- ブラウザへの応答
失われたら「受付未確認」。同じ送信として保存済み受付を照合する。
- Worker → Delivery
配信予定を処理。結果を記録し、失敗・滞留を回復する。
- ブラウザへの応答
PBGで採用した受付の単位
問い合わせ基盤は、本体と必要な配信予定を同じトランザクションで保存します。本体だけ残って通知の仕事が消える、といった片側だけの成立を避けるtransactional outboxの考え方です。
確認した受付処理と契約テストでは、同じ送信識別子と同じ内容の再試行には保存済みの受付を返し、新しい配信予定を増やさない経路を扱います。同じ識別子で内容が違えば同じ送信と扱わず、保存できなかった場合も成功にしません。
このサイトの現在の送信方式とは区別しています
このサイトの現在の送信方式とは区別しています
本記事はPBG問い合わせ基盤の設計・実装・契約テストを対象とします。ピース・ビズの現行コーポレートサイトのフォームが、この基盤へ移行済みという説明ではありません。基盤の完成と各サイトの接続・本番確認は別の作業です。
表示を確認できた事実へ合わせる
| 事実 | 状態 | 次の行動 |
|---|---|---|
| 保存済みを確認 | 受付済み | 同じ送信を新規作成しない |
| 保存前の入力問題を確定 | 修正が必要 | 理由を示し修正する |
| 保存の有無が不明 | 受付未確認 | 入力を保持し同一送信として再確認 |
| 保存済み・通知未完了 | 受付済み・通知処理中 | 配信側で再試行・監視 |
表は横にスクロールできます。
HTTPの再試行だけでは重複を防げない
HTTPには冪等性の概念がありますが、通常のPOSTを繰り返せば同じ一件になると保証されるわけではありません。新規受付では、アプリケーションが同じ送信を識別して既存結果へ戻す契約を持つ必要があります。
Firestoreの公式文書は、競合時にトランザクションが再実行され得ると説明しています。その中でメール送信のような外部作用を実行すると、保存のやり直しに伴って繰り返す危険があります。保存するのは通知の予定で、配送は後に分けます。
受付が一件でも、メールの完全な一回配送とは違う
workerは保存された予定を取り出し、結果を記録して失敗を再試行します。しかし外部の送信先が受け取った直後に応答が消えれば、配送結果も曖昧になります。受付の重複防止とメールのexactly-once保証は別です。
PBGの設計は配信状態と回復経路を持ち、滞留を監視する責任を残します。イベントと補完処理の二経路から、定期取得を中心にする方式へ絞った決定もあります。即時性と複雑さを比べ、必要な待ち時間に合う方式を選ぶ判断です。
すべての会社が独自workerを持つ必要はない
既存フォームサービスが必要な受付管理・重複対策・会社分離・保持方針を満たすなら利用する価値があります。メール送信だけでよいか判断するときも、通知が失敗した受付をどこから回復できるかは確認します。
独自基盤には保存、配送、監視、保持・削除の保守責任が増えます。公開したい知見は構成の大きさではなく、「受け付けた」という言葉を失われない事実へ結び付けることです。
自社フォームで確認する
自社へ当てはめる
- メールが届かなくても受付を取り出せるか。
- 通信断時に、成功・失敗を過剰に断定しないか。
- 再試行が同じ受付へ戻るか。
- 通知の滞留と会社ごとの閲覧・保持責任を管理できるか。
この記事について
進め方と判断の順序を整理した記事です。
First-hand experience
ピース・ビズグループ(PBG)の知見を扱います。PBG問い合わせ基盤の構成・データ契約・受付実装・契約テスト・配信方式の決定を確認しています。各サイトの接続完了、全社本番稼働、メールの完全な一回配送を主張していません。
参照した一次情報
- RFC 9110: HTTP SemanticsIETF確認日 2026.09.10
- Transactions and batched writesGoogle Cloud確認日 2026.09.10
- Handling OverloadGoogle確認日 2026.09.10
- Published
- 2026.09.11
- Updated
- 2026.09.11
- Published by
- Peace Biz
Next
続けて確認したいこと
業務とテクノロジーのトピックに戻る
このテーマで公開している記事の一覧をご覧いただけます。