複雑さはバグ

2018-07-29   design  management  society 

個人的に価値があると思っているけど、文章の質がいまいちだった昔の記事を書き直してみた。

複雑さはバグ

どういう意味かというと、読んで字の如く、

複雑さはそれ自体がバグ

という意味だ。

この思想は IT業界に限らず、もっと社会全体で理解・共有されるべきだ。

いまの日本社会を見渡すと、見渡す限りの複雑さで溢れかえっている。言い方を換えると、「いまの日本社会はバグっている」ということになる。そのバグ対応に日々追われ、かつそのバグへの対処もまた複雑さを生み出すため、複雑さの負の螺旋に飲み込まれている。それがおれのいまの日本社会の印象である。

これに対する根本対処はたった一つ、各々が「複雑さはバグ」と認識することである。

だめな設計は、なにをどうしてもだめ

たとえば、ある複雑なシステムを設計したとする。次にそれを実際に ITシステムとして実装する。これはなにをどう実装しても失敗するパターンだ。なぜなら、そもそも設計自体が複雑さというバグを抱えているからだ。だめな設計は、なにをどう実装してもだめなのだ。沼地の上に建物を建てるようなものである。

そのことを理解できない人は「ちゃんとテストするから問題ない」と主張する。たしかに完成した時点では問題がないように見える。だが、複雑さという沼地の上に建てられた以上、その建物が将来的にどうなるかは想像に難くない。おれ自身、そういうシステムを実際に何度か目にしたことがある。

これはなにも ITシステムに限ったことではない。あらゆる物、組織、システムに当てはまる。 複雑さが発生した時点でデバッグするべきなのだ。

こういう話になると、「言うは易しだ」と斜に構え、目をそむける人が必ず出てくる。勝手に沼に沈んでくれる分には文句はない。だが他人や社会まで巻き添えにしないでほしいものだ。

まあ確かにそういった意見には同意できる部分もある。なぜなら、複雑さの排除というのは想像以上に困難であり、実力と才能と経験を必要とする作業だからだ。高い能力を持った人間に権限委譲できないという、日本社会特有の問題があるため、複雑さの排除はより一層困難な作業になっている。

複雑さは脆弱性

バグは脆弱性と言い表されることもある。複雑さもまた言い方を変えれば脆弱性である。質の悪いことに、この「脆弱性」を悪用しようとする人間が一定数存在している。クラッカーと呼ばれる犯罪者がシステムの脆弱性を突き、不当に利益を得る犯罪行為がたびたび話題になる。

逆に脆弱性を意図的に生み出すことで、不当に利益を得ようと試みる人間も存在する。たとえば大手キャリアの携帯料金のプラン、あれを完全に理解できる人はどれだけいるだろうか? あれはまさに複雑さという脆弱性を意図的に作り出し、消費者の中に生み出した脆弱性を突くことで、不当に利益を得るビジネスモデルである。 複雑にすることで理解できないようにして (脆弱性を作り出して)、そこに付け込んで金を奪うのだ。

複雑さは脆弱性でもあるため、作り出してはいけないし、また近づいてもいけない。もし複雑さが発生し、関係者一同だれひとりとしてそれを問題と認識しないのであれば、速やかにそこから退避しなくてはならない。さもなくば、複雑さの沼に沈むか、複雑さの脆弱性を突かれるかのいずれかの未来しかない。

複雑さに対して圧倒的 NO を叩きつける

前述のとおり、複雑さの問題を解決するにはまず、

各々が「複雑さはバグ」と認識

する必要がある。

その上で本ブログが提唱する絶対無視の三原則、

  1. 近づかない
  2. 関わらない
  3. 信用しない

を、複雑さを生み出す人や組織に対して適用する。

要するに、複雑さの発生源に対して餌を与えないということだ。そうすることで、複雑さを生み出す個人や組織は存続できなくなる。たったそれだけのことではあるが、各自がこれを意識してくれるだけで、社会が大きく好転するのではないかと考えている。

日本の多くの若い女性は iPhone しか使わないという話を耳にしたことがある。これは非常にすばらしいことである。なぜならこれこそがまさに、複雑さしか生み出さない日本企業に対して、圧倒的 NO を叩きつけた結果であるからだ。

われわれが目指すべきはこれである。複雑さに対し、圧倒的 NO を叩きつけていこう。