orangeitems’s diary

40代ITエンジニアが毎日何か書くブログ

必要な「無駄」はシステムから省いてはならない。

 

システムの世界に携わっていると、たくさんの人が「効率化」を叫ぶ。できるだけ同じ機能は、同じ場所にまとめよ。似たものを濫立させると無駄が多いので一つにまとめてシンプルにしたい。できるだけ物理的には共用化して、論理的に分けると資産効率がいい。そうやってたくさんのシステムは一つの物理構成に押し込められることが多く、できるだけコストは安く、扱いやすく、そしてその抽象化された一つの箱を一生懸命守るべきだ、なんて主張をする人、業界の中にも外にもたくさんいる。私もそんな説教や小言を受けたことがある。

けれど、これはもう若い頃から思っていたけれど、全く独立したシステムは、相互に影響を受けない、という概念こそ大事にすべきだ。この知識はどこで出て来たかというと、基本情報処理技術者試験、モジュール結合度の段落である。

プログラムの機能をまとめた「モジュール」という単位があって、それが別の「モジュール」にどれだけ依存しているかという話が結合度だ。できるだけ独立していた方がいいよ、さもないと、とあるモジュールがアップデートされたときに、結合度が強いモジュールが一変に動かなくなるよ、という話だ。

システムも同じなのだ。システムAとシステムBは、できるだけ独立していた方がトラブルに強くなる。物理的に分けてお互いに関与しなければ、システムAが止まってもシステムBは影響を受けない。

一企業が色々な社内システムを運用することもあれば、私のように複数の会社からシステムを預かる立場になることもあるけど、何しろ独立していた方がいい。結合させない方がいい。

だから、私はあえての「無駄」を許容し、システムそれぞれで共用部分を極力排した。他人から言わせると、もっと共通化すればもっとインフラにコストがかからないし、もっと管理コストも減らせる、こんな話はたくさんたくさん聞いたけど、それは結合度を上げる結果になり、一カ所やられると全部やられるぞ、と言う信念を私は曲げなかった。その分高いお金を取ってもいいので、絶対に共通化しないという意思をもった。管理も大変だけど、それぞれ別々にやると決めた。

結果的に、その決断は正しかったと誇っている。必要な無駄がある。無駄をあえて残す。効率化しない。無駄な無駄だけ削ぎ落す。

今のデジタル化に怖さがあるのが全くこの点である。世は共通化を促し、一カ所に全てを集め効率化してコストを減らしつつ、自動化することで社会運営を省力化しようとしている。

しかし、この結果無駄を注ぎ落し、危険な状態に近づいている。システムのある部分を強烈に叩くと、全てに影響があるような、結合度の強いシステム群を大規模に作ろうとしているように見える。

「バラバラに作っていれば、コストはかかったかもしれないが、あんな一遍にダメになることにはならなかったのに・・」という作りのものが社会から排除されるようなものの考え方に変わって行くことを、今後期待したい。

効率化に偏ったデジタルの考え方は、かくも危険なのである。