SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2026 セッションレポート

フロントエンドでは完結しない?厄介な「2重リクエスト」の攻略HANDBOOK

【19-A-7】2重リクエスト完全攻略HANDBOOK

「セキュリティ」と「パフォーマンス」のトレードオフをどう解消したか?

 スマートバンクでは、これら多岐にわたる技術を適材適所でシステムに組み込むことで、定量的かつ定性的な効果を引き出している。最も顕著な効果は、複雑に絡み合う外部連携システムにおける運用保守コストの劇的な削減と、データ不整合による手動修正オペレーションの排除だ。

 具体的な課題解決のプロセスとして、コンビニエンスストアやPay-easyを利用した入金機能での事例が語られた。ユーザーが外部の決済機関で支払いを行うと、スマートバンクのシステムに対してWebhook経由で入金完了の通知が送られてくる。

 しかし、ネットワークの遅延やサーバーの高負荷により内部処理に時間がかかると、外部システム側は「通信タイムアウト」と判定し、エラーとみなして同じWebhookを何度もリトライ送信してくる事象が発生した。

 この時、データベースに単純なユニーク制約しか設けていないと、2回目以降のリクエストはシステム内部で重複エラーとなり、外部システムに対してエラーレスポンスを返し続けてしまう。結果として外部システムは永遠にリトライを繰り返し、システム全体のリソースを圧迫するという困難に直面した。

 この課題に対し、同社は前述のAPIキャッシュの手法を適用して解決を図った。Webhookには決済IDという一意の識別子が含まれているため、すでに処理が完了している決済IDについては、内部的なエラーとして弾くのではなく、「キャッシュされた成功レスポンス」を外部システムに意図的に返却するようプロセスを改善した。これにより、外部システムは処理が正常に受け付けられたと認識してリトライを停止し、システム間の不整合という厄介な問題が見事に解消されたのである。

 また、API通信における「Idempotency-Keyヘッダ」の導入は、トランザクション管理の難易度を大幅に下げる効果をもたらした。外部システムを呼び出す際、アプリケーション内の状態更新と外部APIの呼び出しを一つのトランザクションで安全に括ることは技術的に困難を伴う。そのため、処理の途中で障害が発生した場合、社内データと外部サービスの状態にズレが生じ、エンジニアが膨大なログを追って手作業でデータを修正するという運用負荷がかかっていた。Idempotency-Keyを導入することで、処理の前段で確実に2重リクエストを検知・遮断できるようになり、後段の外部サービス連携で不整合が発生する確率が極小化された。

 一方で、セキュリティとパフォーマンスのトレードオフという新たな課題にも直面した。 排他制御のための悲観的ロックや、リプレイ攻撃(通信データを傍受して不正に再送するサイバー攻撃)を防ぐための「One-Time Token(使い捨てトークン)」の生成処理は、システムに高い負荷をかける。これらの強固な防御策をすべてのAPIに適用すると、アプリ全体のレスポンスが悪化し、ユーザー体験を損ねてしまう。

ワンタイムトークンのフローを図解

ワンタイムトークンのフローを図解

 そこで同社は、トークンによる防御をパスコードの登録やクレジットカード番号の表示、銀行口座からの引き落としといった、最高レベルの機密性と確実性が求められる重要機能にのみ限定して適用するというアプローチをとった。さらに、バーチャルカードの過剰な再発行といった異常な操作に対しては、ロック機構を作り込むのではなく、単純に指定回数でエラーを返す「Rate Limit」を採用することで、実装コストを抑えつつ安全性を担保している。こうした技術の取捨選択こそが、安定稼働を支える鍵となっている。

次のページ
2重リクエストにおける「銀の弾丸」は存在しない

この記事は参考になりましたか?

Developers Summit 2026 セッションレポート連載記事一覧

もっと読む

この記事の著者

中野 佑輔(編集部)(ナカノ ユウスケ)

 日本総合研究所を経て2025年よりCodeZine編集部所属。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山出 高士(ヤマデ タカシ)

雑誌や広告写真で活動。東京書籍刊「くらべるシリーズ」でも写真を担当。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/24154 2026/05/25 09:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング