「オブジェクト指向」を説明するときに、よく例え話として「哺乳類」というクラスがあってそのサブクラスに「イヌ」とか「ネコ」とかがあって、実際の犬猫はそのインスタンスであり云々、とか言ったりする。クラスという概念を生物における種に例えて説明するパターンだ。そしてそれをもって「オブジェクト指向は現実世界における関係性を記述するのに適している」とか解説されていたりするんだけど、しかしこれは本当に適切な例えなんだろうか。実際のところ、自然界における「種」という概念は極めて曖昧なものなので、曖昧な記述が許されないプログラミング言語とは相性が悪いことも多い。一体どこに問題があるのか。まずは「種」という概念を疑うところから始めてみよう。 僕らは普段、似たような性質のものをひとまとまりにして考えるという習慣を持っている。リンゴのようなものはすべてリンゴとして扱い、それぞれのリンゴ一つ一つの小さな違いにはあま