本質
本質というのは除くことができないもののことを言う。
例えば、携帯電話の本質を考えてみる。
「携帯電話」という言葉から表面的に考えてみれば、「携帯できる」かつ「電話」であるならばそれは「携帯電話」である。
「携帯できる」を除くとただの電話だ。「電話」を除くともはや何なのかわからない物体になる。だから「携帯できる」と「電話」は「携帯電話」の本質である。
それに対してテレビやラジオやメールや時計やアラームなどは携帯電話の本質ではない。なぜならそれらを除いたとしても依然として「携帯電話」であることには変わりないからだ。
本質はセマンティックウェブを考える上では重要。というのも、セマンティックウェブを構成しているオントロジーでは、ある概念を定義する時には「本質属性」を明確にしなければならないからだ。人が「りんご」を指して「果物」と言っても理解できるのはそれを自動で処理できてるからだ。
オブジェクト指向プログラミングにおける継承関係も本質的なものであることが求められる。メソッドを再利用できるから継承するのではなく、is-a関係であるかどうかを考えることが継承すべきかどうかの判断材料になる。が、それはまた別の話。(→結合度)
本質を考えることはなぜ重要なのか
「りんごが食べたい」と言う人がいたとする。でも本当はりんごかどうかはこだわってなくて、「甘いものが食べた」かったのかもしれない。
「りんご」という言葉を鵜呑みにすると、「りんご」という限られた空間の中でしか選択肢がなくなる。もしかすると「いちご」を差し出したら最高のりんごよりも喜んでくれるかもしれない。
選択肢の幅を広げるためには「りんご空間」から一度飛び出してもっと広い空間、例えば「果物空間」や「甘いもの空間」に出かけなければならない。そして、その中から最適なものを選べばよい。
間違って「赤いもの空間」に出かけてはいけない。本質を見誤ると間違った空間に行ってしまい、間違った選択をすることになってしまう。その中から最適なものを選んだとしても、前提が間違っているのでどうがんばっても解答も間違ってしまう。