冪等性 (べきとうせい) を理解して設計・実装するために役立つ記事まとめ

Tadashi Shigeoka ·  Fri, August 11, 2017

「冪等性 (べきとうせい、英: idempotence)」を理解して、システム設計・実装するために役立つ記事をまとめたのでご紹介します。

エンジニアとしてキャリアを積んでいくと、どこかのタイミングで冪等性を意識して、システム設計・実装しないといけない時が来ます。

「冪等性ってどういう意味なんだろう?」「冪等性を担保してシステムを設計したり、実装したりするには何を考えないと行けないんだろう?」という疑問を持つエンジニアたちの役にこの記事が少しでも立てば嬉しいです。

冪等性(べきとうせい)について

まず、冪等性についての情報を、ウィキペディアからエンジニア向けの情報だけ抜粋してみました。

冪等性(べきとうせい、英: idempotence 「巾等性」とも書くが読み方は同じ)

大雑把に言って、ある操作を1回行っても複数回行っても結果が同じであることをいう概念である。まれに等冪(とうべき)とも。

情報工学における冪等

情報工学における冪等とは、ある操作を1度行っても複数回行っても同じ効果となることを言う。特に、何回行ってもエラーや不整合の状態が変わらない操作を指す。

ウィキペディア以外だと NTT データの連載記事が、冪等性についてシステム開発を例にして分かりやすく説明しているので、こちらも一読しておくことをおすすめします。

…、「冪等性(べきとうせい)」という概念があります。冪等性とは「何度同じ操作をしたとしても同じ結果を得られる」というものです。

例えば「abcというユーザーを指定の属性で作成せよ」という「プログラム」をあったとします。この「プログラム」を何回実行したとしても、「abc」というユーザーが指定の属性で作成されているという結果に変わりはないという事です。つまり先の例で言えば、パッケージがインストール済みならば「何もしない」のが望ましい動きになります。

冪等性の設計・開発お役立ち情報

冪等性のデザインパターン

トレジャーデータの古橋氏の技術ブログでの「リトライと冪等性のデザインパターン」シリーズが参考になります。

  1. リトライと冪等性のデザインパターン
  2. 続・リトライと冪等性のデザインパターン - リトライはいつ成功するか
  3. 続々・リトライと冪等性のデザインパターン - あらゆる操作を冪等にする方法

REST, HTTPメソッドの冪等性

REST
HTTP

シェルスクリプトの冪等性

シェルスクリプト (ShellScript) で冪等性(べきとうせい)を意識して、実装する場合は以下の記事を参考にすると良いです。

冪等性(Idempotence)の英語情報

もし英語ネイティブなエンジニアに冪等性について教える機会があれば、以下の記事を読んでもらうのがおすすめです。

以上です。

冪等性について正しく理解して、良いシステム設計・実装のお役に立てれば幸いです。