でも、これ、ちょっと読むと、う~ん、あるあると思うのだけれど、実は僕の身の回り(つまりはWeb制作やシステム設計)の「あるある」という話とは原因が別なのではないかと思いました。
設計図どおりに作ることができても、期待どおりの機能をはたさない、という問題である。これも想像力の欠如といえるので、原因は同じである。重すぎて、あるいは摩擦が多すぎて、モータが回らないとか、強度が弱すぎてぐらぐらするとか、さらには、工作精度が出せないために、それが積もり積もって致命的な欠陥が生じる、ということもある。自分で描いた設計図をもとに、自分自身で工作をしているのに、こうなるのだ。他人が図面だけを見て作ったら、絶望的だろう。
森さんが問題にしているポイントは、2次元で描かれた設計図を、3次元で、かつ重量や摩擦などの物理的性質に落とし込む際の想像力です。
つまりは設計図には描ききれない、したがって想像力=デザインを実現に向けて磨ききるための、図と実物の間にある相違をいかに補えるかという問題だと思います。
これはようするに「作業過程は思考過程である」ということを、別の問題から捉えた視点に相違ないものだと感じます。
Webの設計、システムの設計の場合
これはWebの設計、システムの設計の問題とはちょっと違う気がします。そもそもWebにしてもシステムにしても、2次元を3次元に移したり、質量のないものを質量のあるものに変換する話ではありません。
なので、それらの設計がうまくいかない話と、上記の森さんの話の問題は別のところにあるはずです。
何が違うかといえば、Webやシステムの設計書の場合、すべてをドキュメントの段階で想像してしまおうという考えがそもそも薄いと思います。
これはいい/悪いという話ではなくて、たぶん、そういうもんなんだと思います。
2次元を3次元に移したり、質量のないものを質量のあるものに変換したりすることのないWebやシステムの場合、設計者が全部抜けのないよう想像して全部設計したらそれはほとんど実物をつくってるのに近いんだと思います。
そうなるとデザイナーだったり、コーダーだったり、プログラマだったりの仕事がなくなります。
Webやシステムの設計の場合、そもそも設計=デザイン行為が実開発とかなり近いため、それゆえ設計=デザイン行為そのものを実開発の作業のなかにも一部入れ込んでいるのではないでしょうか?
この場合、「作業過程は思考過程である」という考えはますますもっともなものになるはずで、仮に設計書どおりにしか、デザインを落とさないデザイナーや、見たまんまにしかコーディングしないコーダーやプログラマーがいたら、それは作業=思考をやっておらず、設計=デザインは自分の仕事じゃないと勘違いしてるんじゃないかと思うわけです。
Webやシステム開発がうまくいかないのはなぜか?
じゃあ、そうなると、Webやシステム開発がうまくいかないのはなぜなんでしょう?そのヒントは、上記の引用の最後に記されてるんじゃないでしょうか。
森さんは先の引用の最後で問題をすりかえています。
最初は問題は、図と実物の差異を埋める想像力の問題だったのに、最後で自分と他人を比較する時、問題はコミュニケーションの問題にすりかわっています。
そして、多くのebやシステム開発がうまくいかないのは、コミュニケーションにおける想像力の欠如や不足が問題だったりするんじゃないでしょうか?
先ほど書いたように、Webやシステムの設計過程は、設計と呼ばれる段階と実装と呼ばれる段階に事実上、設計=デザインが分離してしまっていて、かつ、その両段階を実行する人が違っていたりするのが当たり前なので、森さんのいう2つ目の問題「他人が図面だけを見て作ったら、絶望的」なことが当たり前のように起こります。
さらに設計書そのものが先の森さんの言っている設計図に比べれば、とても図面だけ見て作れるものにはなっていないのだから、当然のようにそこではコミュニケーションが大事な要素となってくるでしょう。
もちろん、それだけでなくロジックを考える際や画面遷移を考える際に、ヌケモレがあるというデザインと実装のあいだの想像力が足りないこともあるでしょう。
でも、それより多いのは同じ設計書をみたAさんとBさんの解釈が異なっていたり、あるいはどちらか一方もしくは両者がともに設計をサボっていたりするからではないでしょうか?
結局、考えが足りないというのもコミュニケーションの問題です。
森さんの小説を読んだことがある方なら、森さんの小説の主人公たちが他の登場人物がいなくても、自身のなかでコミュニケーションを行っていることをご存知でしょう。
つまり、想像力が足りないというのは個人の内部でのコミュニケーションの問題だったりするわけです。
ちょっと待て。なぜ1回でうまくいくことを想定するのか?
でも、もう1つ、この話の問題点は、ここで設計書から実装への問題を1回限りのものとして限定的に考えている節があるところです。誰もが経験的に知っているように、Webの構築でもシステムの開発でも、いくつもプロジェクトを繰り返すうちに設計の問題は回避できるようになります。
最初にあった想像力の欠如も、繰り返しの経験によって脳のパターン認識として蓄積され、同じ間違いは起こしにくくなります。
それでも、コミュニケーションの問題は残るので、開発メンバーが異なれば、異なる問題が生じるかもしれません。
しかし、それも度重なる経験で補うことは可能でしょう。
つまり、そもそもデザインというのは、その大半が前のデザインのコピーであって、前のデザインはそのまた前のデザインのコピーなのだから、結局のところ現実の研究開発の革新は、最小のものとなる。ダニエル・C. デネット『ダーウィンの危険な思想―生命の意味と進化』
上記の引用は、生物進化における累積淘汰を駆使したデザイン変更について述べたものです。
累積淘汰とは、眼という器官が最初からいまのような眼として進化したのではなく、最初は光を集めるだけの集光器官から段階を経て徐々に見えるようになり、眼としての性能を高めるためのデザイン変更が累積的に行われることを示す進化論的用語です。
アルゴリズム
先の経験の蓄積による想像力欠如の補填も、この生物進化における累積的デザイン変更の過程と似ています。ただ、違うのは、生物進化を促すものが個々の動物の意思や、ましてや神の意思などではなく、意思などもたない盲目なアルゴリズムによるものだという点です。
アルゴリズムの作り出すものがどんなに印象的だろうと、その下にあるプロセスは、どんなときにも、いかなる知的管理の助けもなしに継起する、個々には心を持たない一群のステップだけから成っている。それらのステップは、定義上「自動的」ステップであり、自動機械の働きである。ダニエル・C. デネット『ダーウィンの危険な思想―生命の意味と進化』
もちろん、人間が行う設計=デザインにおいて、すべてを「いかなる知的管理の助けもなしに継起する」「自動機械の」ステップの集まりにしてしまうことはできません。
なぜなら、それではとにかく設計=デザインが人間が行う作業としてはあまりに退屈なものとなってしまうでしょうから。
しかし、その定義からして、誰がやっても(途中のミスさえなければ)ステップを決められたとおりに行えば、いつでも期待されたとおりの答えが出せるアルゴリズムの魅力も捨てがたいはずです。
手戻りやコスト超過などの失敗が発生しやすいWebやシステム開発の現場においては特にそうではないでしょうか?
もし誰でも同じ答えを出せるアルゴリズムの手をまったく借りないのだとすれば、すべては想像力に何の欠如もないスーパー設計者=デザイナーの手を借りなくてはいけなくなるのですから。
うちの会社でよく言われる言葉の1つに「10%のプロセス、90%の自由」というものがあります。
つまりは10%だけ取り入れたアルゴリズムを厳守すれば、あとの90%は好き勝手に個々人が頭を働かせればいいということです。
これがなかなかうまくいく。そして、うまくいかないときは大抵プロセスが守られていないか、プロセスが規定されていない新種の要件だったりします。
問題は設計図ではありません。
設計図から実物をつくりあげるというプロセスそのものの設計が行われていなかったりすることに真の問題はあるのではないでしょうか?
この記事へのコメント