2003年2月7日金曜日

ものづくりの本質

 今日例のスペースシャトル『コロンビア』関連の記事で非常に興味深い記事を見つけました。スペースシャトルはその筋の悪い設計故に今回の事故を引き起こしたというものです。そう、まるで筋の悪い設計によって作られたプログラムが大きなバグやトラブルを抱え込むように。

良い機械を設計するには、まず「何をする機械か」という目的を絞り込んで設定する必要がある。その上で目標実現のための仕掛けを、なるべく技術的に無理がないシンプルな形で組み合わせていくのだ。

 この原則は実はプログラムも同じです。「何をするプログラムか」をまず要求仕様という形ではっきりさせた上で、その実現のためにもっともシンプルな形での実装を行っていきます。余計に高度なテクニックやひねったアルゴリズムなんかはそれだけ難解になりバグも潜みやすければ修正もしづらいのです。そしてそういうプログラムはバグ修正や仕様変更がある度に現在のプログラムに無理矢理つぎはぎのパッチを当てるような形で追加修正がされていき、最後にそのつぎはぎのプログラムが破綻して大きなトラブルが起きた時にはもうどこが悪いのかさえ突き止めるのは難しくなっていたりするのです。それは、(この記事を読む限り)今回のスペースシャトルの事故もまったく同じです。

 オブジェクト指向というプログラム手法の原則の一つは、「なんでもできる」クラス(プログラムの単位とでも思ってください)を作らないということです。ひとつのクラスはひとつの責務を果たすのみに留め、債務過多の状態は避けねばなりません。でなけば非常に膨大で難解なプログラムができあがるか、あるいは帯に短したすきに長しなものになるかです。そしてスペースシャトルが辿った運命は後者の方でした。「本来何をすべきものなのか」という目標を見失った創作物は、どんなものでもみじめなものになってしまうといういい例かも知れません。

 私は、そこがものづくりの本質の一つなのではないかなと思います。「何をしたいのか」、「何を表わしたいのか」、その本来の目的も忘れてただものができあがることのみに焦点を定めて作られたものは、いつも悲しい末路を辿ってしまいます。これは一つの教訓でしょう。私がプログラムを書き、文章を書き、あるいは音楽をやり続ける限り、あるものを作り上げることによって「何がしたい」のか、「何を伝えたい」のか、あるいは「何を表わしたい」のか、その本質を見失わないでいきたいものです。

0 件のコメント:

コメントを投稿