Clicked Gallery

「冪等(べきとう)なAPI」とは?

実際の技術ドキュメントでハイライトされた言葉を、Clickedが解説します。

例文

Engineering Notes · AI Systems

The payment gateway endpoint must be fully idempotent to ensure multiple clicks don’t double-charge the card.

読者がドキュメント内の単語をハイライトすると、Clickedが技術用語「idempotent」をわかりやすく解説しました:

3段階での解説

事実はそのまま、ノリだけ変えて — スラングモード 😎

Clickedのやり方

●○○

Overview

冪等(べきとう)なAPIエンドポイントとは、1回呼んでも10回呼んでも同じ結果になるもののこと。同一のリクエストを繰り返しても、効果が重複して発生しないからだ。ダブルクリックが二重請求に化けるのを止めているのが、この性質にあたる。
●○○

Overview

冪等とは「ボタンを好きなだけ連打していい、カウントは1回だけ」という意味だ。1回呼べばカードに請求が立ち、Wi-Fiがしゃっくりして10回呼んでも、請求はやはり1回。再送できるAPIと、恐る恐る触るAPIの分かれ目がここにある。😎

まずはサッと概要 — それで十分なことも。

●●○

Detail

解こうとしている問題は、ネットワークがリクエストの途中で落ちることだ。決済の呼び出しがタイムアウトすると、クライアントにはサーバーが処理したかどうか分からないので、再送する。冪等でなければその再送がカードに二度請求しかねないが、冪等であれば再送はいつでも安全になる。標準的な実装が冪等キーだ。クライアントがリクエストに一意のIDを付け、サーバーは最初の実行結果をそのキーの下に記録し、同じキーの繰り返しには再実行ではなく保存済みの応答を返す。HTTPのメソッドには定義上すでに冪等なものもある。二度削除しても削除された状態のままだからだ。一方POSTは冪等ではなく、だからこそ決済APIはPOSTにキーを取り付ける。決済ページの「送信ボタンを二度押さないでください」という警告は、その仕組みを省いたと白状している表示だ。
●●○

Detail

なぜ存在するのか:インターネットは不安定だからだ。リクエストがタイムアウトした。通ったのか、通っていないのか。誰にも分からない。だからクライアントは再送するし、再送は無害でなければならない。手口はこう。一意の冪等キーをリクエストに添える。サーバーは処理を一度だけ行い、そのキーの下に領収書を保存し、重複してきたリクエストには同じ領収書を渡す。仕様の豆知識:GET、PUT、DELETEは規約上すでに冪等で、POSTは有名なことに冪等ではない。だから決済事業者はPOSTにキーを添えさせる。これまで見てきた「送信を二度押さないで!」の警告は、すべて自白である。😎

もっと知りたい? ワンクリックで深掘り。

●●●

Analogy

エレベーターのボタンだ。1回押しても、ため息をつきながら7回押しても、来るエレベーターは1台。リクエストは一度だけ登録され、繰り返しはすべて同じ結果に対応づけられるからだ。7台のかごを送り出すエレベーターがあったなら、それは冪等でない決済エンドポイントということになる。
●●●

Analogy

不安のあまり結婚式の出席確認を5回送ってしまうようなものだ。新郎新婦は皿を5枚用意したりしない。何回確認を送ろうと席は一つだからだ。決済APIも、きみのパニック連打をあのホストとまったく同じように扱うべきなのだ。

なじみのない概念も、身近なたとえでストンと理解 — 新しいたとえは何度でも。

AIによる解説には誤りが含まれる場合があります · 専門的な助言ではありません

正式な定義 — 同じ用語の、よくある説明

冪等性とは、ある操作の同一の呼び出しを複数回行っても、単一の呼び出しと同じシステム状態および応答が得られる性質を指す。HTTPのセマンティクスではGET、PUT、DELETEが冪等と定義される一方、POSTはそうではない。サービスは非冪等な操作に対し、クライアントが付与する冪等性キーによって冪等性を実装するのが一般的であり、最初の実行結果を永続化して重複リクエストに返すことで、ネットワーク障害下での再試行を安全にする。

「idempotent」のような言葉を、ブラウザ上でそのままClickedに解説させませんか?PDFにも対応。

Chromeに追加 — 無料

無料で50回の解説 · クレジットカード不要