AI活用の教科書
バックエンド設計開発むずかしい3分で読了

冪等性

Idempotencyべきとうせい

ひとことで言うと

同じ操作を何度くり返しても、結果が一度だけ実行したときと変わらない性質のことです。

📖 もうちょい詳しく

何が新しいの?

ネットを通じたやり取りでは、通信がうまくいったのか分からなくなることがあります。たとえば「送信」を押したのに返事が返ってこず、もう一度押してしまう、といった場面です。このとき同じ操作が二回届くと、二重に処理されてしまうおそれがあります。冪等性(べきとうせい)は、こういう「同じ操作が何度も届く」状況でも安全に動くようにするための、設計上の考え方です。

どうやって動いてるの?

多くの場合、操作のたびに「これは同じ依頼ですよ」と分かる目印(冪等性キーと呼ばれる、重複しないIDのことが多いです)を一緒に送ります。受け取った側は、その目印をすでに処理したかどうかを記録しておきます。すでに処理ずみなら、もう一度実行はせず、前と同じ結果だけを返します。こうして、何回届いても実際の処理は一度きりになります。

何ができるの?

通信が不安定でも、安心して「再送」できるようになります。とくにお金が動く決済では大事で、ボタンの二度押しや自動の再送が起きても二重課金を防げます。ネット通販の注文確定や、ポイントの付与など、「一度だけ起きてほしい処理」を守るために広く使われています。

🌱 身近なたとえ

エレベーターのボタンで例えると分かりやすいです。同じ階のボタンを何度も押しても、エレベーターが何台も余分に来ることはありません。一度押されたら受け付けて、あとは同じ状態のままです。冪等性もこれと同じで、何回くり返しても結果は一度押したときと変わりません。「押した回数」ではなく「最終的にどうなったか」だけが残ります。

✅ まず覚えるポイント

  • 同じ操作を何度くり返しても、結果が一度実行したときと変わらない性質です
  • 通信の再送やボタンの二度押しが起きても安全になります
  • 冪等性キー(重複しない目印)で「同じ依頼か」を見分けることが多いです
  • 決済の二重課金を防ぐなど、お金まわりでとくに重要です
  • 「実行した回数」ではなく「最終結果」がぶれないことが大切です

🧭 よくある勘違い

冪等性があれば何度送っても処理が増えるの?

増えません。むしろ逆で、何度送られても処理は一度きりになるよう作ります。二回目以降は新しく実行せず、最初と同じ結果を返すだけです。だから安心して再送できる、というのが冪等性のねらいです。

取り消しや削除には関係ない話?

そんなことはありません。「あるデータを削除する」操作も、すでに消えていれば二回目は何も変わらないので、冪等になりやすい例です。一方で「残高に100円足す」のような操作は、くり返すたびに増えてしまうため、そのままでは冪等になりません。こういう操作こそ目印で重複を防ぐ工夫が要ります。

🧩 関連して覚えると楽な言葉

  • API: アプリ同士のやり取りの窓口。冪等性は決済などのAPI設計で重視されます
  • REST: URLとHTTPの操作でデータを読み書きする設計様式。操作ごとに冪等かどうかを意識して作ります
  • トランザクション: 複数の処理を「ぜんぶ成功」か「ぜんぶ取り消し」のひとまとまりで扱うしくみ。二重実行を防ぐ考え方が近いです
  • Webhook: 何かが起きた瞬間に相手へ自動でお知らせを飛ばすしくみ。再送が起きることがあるので、受け手側に冪等性が求められます

🏁 ひとことでまとめ

何回くり返しても、結果は一度きりと同じ。再送や二度押しが起きても壊れないための、設計のお守りのような性質です。