シンプルな設計には2種類ある。

それは、

  1. シンプルであるが故に適用できるケースが限定されてしまう設計
  2. シンプルであるが故に広範なケースに応用が利く設計

の2つである。
では、両者を分かつ違いはなんだろうか?


前者は、単純なくせに応用部分を「想定の内側」で解決しようとする。それゆえその想定範囲が性能上限になってしまい、応用が限られる。


後者は部品として使われることが徹底された設計であり、自己を「想定される機能および類似の機能における部分を担当するもの」と規定する。シンプルなのは部品であるが故であり、それゆえに様々なケースにおいて利用可能となる。応用部分は部品を利用する「外側」にあり、部品というものは使い方によっていくらでも応用が利く。


機械であってもソフトウェアであっても、設計というものは複雑になればなるほど故障率が高くなる。故に優れた設計とはシンプルであることが条件となるが、そのシンプルさとは「応用の利く部品」としてのシンプルさであり、制約となる単純さではない。


…あー、いや、今日若い衆に設計の際の考え方を指導してた時、相手が「単純な作りにする」ために「機能を犠牲にするべきか否か」悩んでいたのが気になったので書きたくなったんだな。

良くいわれるように「シンプルかつ確実に動く部品」の「組み合わせ」で「多様な機能」を実現するのが正解なんだが、まだ余裕がないのか、多忙の中でそうした基本が揺らいでしまう模様。


…うーむ、どうにも説明するに適切な語彙が出てこないのが残念なところだなぁ。