∑考=人 〜プロメテウス〜

そして今日も考える。

トランザクション制御ができれば正確な管理は可能だが

私は管理が嫌いである。そもそも管理が嫌いじゃない人間なんているのだろうかと思う。とは言え、企業活動をする上で管理は決して外すことができない業務である。私の会社にもありとあらゆる管理簿が存在する。

 

ただし、その管理簿と実態には大きな乖離がある。それを定期的に棚卸しして、一瞬の間実態と管理簿を合わせることで応急処置を施しているのが現状である。たぶん、どこの会社も同じようなものだと思う。しかし、これは果たして管理と言えるのであろうか。はっきり言って管理簿をメンテナンスすることが目的になってしまっている。

 

私なんかは正直、どうせできない管理などしなければいいとずっと考えている。例えば、私は自分の支出とかを今まで全く管理したことがないし、管理しなくても何の問題もない。そんな管理に時間や労力を増やすくらいなら収入を上げた方が結果的に良いと思っているからである。

 

ただ企業活動ともなると、まぁそうもいかないらしい。だとすれば、やっぱり管理がスムーズにできない理由をちゃんと考えていかなければならない。

 

管理がちゃんとされない(管理簿が日常的にメンテナンスされない)原因は実にシンプルである。「実際にやったこと」と「管理簿に記入する」という2つの動作がトランザクションとして扱われていないためである。

 

トランザクションとはIT用語では最小の処理単位を意味する。それ以上、分割されてはならない処理のことを示す。(ちなみにこれをトランザクションのACID特性の一つである原子性である。)

 

元々英語で"transaction"は"取引"という意味である。例えば、銀行でAさんが自分の口座からBさんの口座に10,000円振り込んだ場合、Aさんの口座からは-10,000円、Bさんの口座には+10,000されて取引は完了する。これがもしAさんの口座からは-10,000円されているのに、Bさんの口座にはお金が振り込まれていないとすると大問題である。

 

上記の例は取引として成立していないとみなされる。つまり、「Aさんの口座から-10,000円」と「Bさんの口座に+10,000」という2つの処理は決して分割されてはならないため、一つの処理として考えなければならない。よって2つの処理を合わせて最小の単位として考える必要があり、このような処理をITの世界ではトランザクションと呼ぶのである。

 

システム上においては、トランザクション処理が途中で分割されることはほぼありえない。これはデータベースの中にトランザクションを制御する機能があるからである。途中で処理が終わってしまった場合は、「ロールバック」という、処理をする前の状態に強制的に戻す機能があり、完全に処理が完了した後に「コミット」という、処理を確定させる仕組みが備わっているからである。

 

システムの場合は強制的に制御することが可能である。しかし、物理世界においてはこれが難しいのだろう。例えば、「物を購入する」と「購入品を管理簿に記入する」は本来トランザクションであるべきだが、物を購入して、購入品を管理簿に記入していない場合にロールバック、すなわち物を返品する、なんてことを強制することができない。

 

これを上手く制御する仕組みさえできれば、少なくとも管理ができないなんていうことはなくなるはずなのだけど、いい方法が浮かばない、無念。