Hot Heart, Cool Mind.

会計×IT の深層へ

オブジェクト指向とは何か、という問いについて

4月も半ばを過ぎて、新入社員がプログラミング研修を受ける季節になったからだろうと思うが、オブジェクト指向談義が再燃している。ほとんど年中行事だ。

今年は、オブジェクト指向という用語をアラン・ケイの言った意味で使うのは「特権的」だという主張まで出たりした。

ギブソンが考えた「アフォーダンス」は、使い手と道具の関係性に関する概念だが、ノーマンはそれを「誤用」し、道具のデザインがもつ特性の話にした。現在では後者の方が広く受け入れられているように思うが、だからといって、アフォーダンスという用語はノーマンの意味で理解すべきだ、という話になるだろうか。

よくいって、アフォーダンスというひとつの言葉に対して2つの意味内容が「事実上」存在するということだ。そして、「本来の」アフォーダンスは、と言えば、ギブソンのそれを指すに決まっているではないか。

それは、特権云々の問題ではなく、アフォーダンスと言う言葉をギブソンが作った、そしてそれが誤用を含みながらも受け入れられていったという歴史的経緯を忘れることは、知の損失になるからだ。

重要な概念の多くは、考えつかれた時点では、一筋縄には解きほぐせない込み入った外延を持っているが、普及するにつれ、情報損失を伴いながら、単純で伝えやすく、操作的/教科書的な意味内容をもつものに変質していく場合が多いことを念頭におけば、なおさらである。

さて、ここまでは前置きで、本題は「オブジェクト指向とは何か」という問いについてである。

言いたいのは、オブジェクト指向が何か、ということは、ある意味、大きな問題ではない、ということだ。大きな問題ではないというのは、僕らが直面しているプログラミング仕事をこなすためならば、それを理解していることは必須ではないし、じっさい、重要でもないということだ。 僕自身も、オブジェクト指向はこれだ、という決定版的理解を持っていない。

カプセル化・継承・多態を使いこなすのに、オブジェクト指向が何かという知識は別にいらない。オブジェクト指向という言葉をいっさい使わずとも、これらそれぞれに関する言語仕様を理解して、目の前の状況に当てはめることはできる。うまく使いこなすには学習と実践経験が必要だが、その点は何事でも同じだ。

アラン・ケイオブジェクト指向は、そうした言語機構を理解するための前提知識ではない。むしろ、そうしたものすべてを使いこなして我々は何処に向かうのか、ということに関するひとつの見解だと思う。僕を含むある人々にとってそれは興味深いが、それを知らない人はプログラムをうまく書けないといったものではない。

だから、自分がオブジェクト指向を「やっている」かどうかは、本来、どうでもいいことである。そこが気になって、自分がやっていることこそオブジェクト指向の本流だと言いたくなるとすれば、それは、オブジェクト指向に何かの「権威」あるいは「正統性の根拠」を求めているのではないかと内省してみた方がよい、そうした権威主義は創造的活動にとって一番の障害だから。また、そうしたことをいう人がいるならば、その人の中に「虎の威を借る狐」が棲んでいるのではないかと警戒しながら、その言説を聞いた方がよい。

一方で、先日の記事で書いた通り、プログラミングに対するアラン・ケイのまなざしは、とてもイメージ喚起的だと思う。目の前の仕事に対してではなく、これから自分が何を作るのかを考える上で非常に参考になる、と僕は思っている。 この点に関しては、ギブソンやノーマンのアフォーダンスもそうだろう。僕にとっては、レイコフの「メタファー」や、ポランニーの「暗黙知」、アレグザンダーの「パタン・ランゲージ」もそうだ。その点においても、アラン・ケイオブジェクト指向が特権的地位を持っているわけではないのである。

われわれプログラマにとっては、目の前のプログラミングできちんと結果を出すことが一番である。そのために使えるなら、カプセル化・継承・多態を使えばいいし、不要と思うなら使わなければいい。

オブジェクト指向がコードを書くのではない。われわれひとりひとりがコードを書くのだ。

そして、時々は、リラックスして、アラン・ケイやその他の先人たちが何を考えて来たのか、彼らが遺したソフトウェアを探究し、文章を読んで、考えてみると面白いかもしれない。あるいはむしろ、うまぴょいと稲作の方がよいかも。それもあなたの自由だ。

われわれは自由である。それが肝心だ。

hot-heart-cool-mind.hatenablog.com