冪等性(べきとうせい)

最近ずっと Ansible の勉強をしています。次に導入するサーバの設定を Ansible で設計・反映させる予定だからなんですが、ぶっちゃけ1台だけのサーバなら直接コマンド入力で設定した方がずっと早いし、Ansible を使う意味は限りなくゼロに近いです。でもまあ最近の環境構築ではこういう技術を使うのがスタンダードだって言うし、身につけておいたらどこかで役立つかも知れないので勉強がてらやってるって感じです。サーバを実際に設定できるようになるのはいつになることやら。


で、Ansibleを触っているとよくこの言葉を見掛けます。


「冪等性」


漢字だとわかりづらいですが、「べきとう」というひらがなであればどこかで聞いたことがあると思います。プログラミングでは割と普通に使われる単語です。


冪等 – Wikipedia

数学において、冪等性(べきとうせい、英: idempotence 「巾等性」とも書くが読み方は同じ)は、大雑把に言って、ある操作を1回行っても複数回行っても結果が同じであることをいう概念である。まれに等冪(とうべき)とも





冪等の例

世の中にある操作は、冪等であるものと冪等でないものとがあります。


冪等であるものの例としては、

$i = 0;    //$iは常に0。冪等性が保たれる

冪等でないものの例としては、

$i = $i + 1;    //$iは操作する毎に1ずつ増える。冪等性は保たれない

となります。


現実世界に置き換えてみると、冪等であるものの例は、

コップに入っている水が50mlになるようにする

冪等でないものの例は、

コップに水を50ml入れる

でしょうか。



Ansibleでは

Ansibleで冪等であるというのは、何回処理を行っても結果が同じになること。

サーバの設定を行って、2回目実行したときに設定が変わってしまっていたり、動かなくなってしまっていたら困るとので、2回目の実行では結果が「変化無し」(つまり冪等である)となるのが望ましいわけですが……これが結構難しいんですよね。冪等であるためには、最初の状態を揃えるとかリセットするとか、確認して処理を分けるとかしなくてはならず。

人間が処理を考えると、どうしても冪等ではなくなってしまうんですよね。現実世界で冪等性を厳密に再現するのは難しいし、冪等でないのが自然なんでしょう。だからこそ、有り難いんですけど。



非常に数学的な概念だなあと思います。

僕は好きだけど、苦手な人はダメだろうなあ。