限りなき旅は続く
余談です。大変失礼ながら、「オブジェクト指向でなぜ作るのか」の最後のページ、「作者プロフィール」をみて、笑ってしまいました。*1
それから、「現実世界をそのままソフトウエアに表現するオブジェクト指向技術」を求めて10年余りの旅に出るが、当初の目標を達成出来ずに終わる。その経験を元に本書を執筆する。
というのも、この興味深い旅路の軌跡を、目にしたことがあるからです。
3.1 多重分類と動的分類
実は現在主流となっているオブジェクト指向プログラミング言語にはある制約があります。それは「オブジェクトが帰属するクラスは唯一で、かつ帰属するクラスを変更することができない」というものです。あまり一般的な用語ではありませんが、前者を単一分類 (single classification) 、後者を静的分類 (static classification) と呼びます。
つまり会社員、学生をクラスとして定義した場合には、ある人が会社員になったり、学生になったりすることをオブジェクト指向プログラミング言語では直接表現できないのです。
オブジェクト指向は本当に「オブジェクト」指向か?
4.2 オブジェクトの世界は階級社会?
ところで英語のclassには「階級」という意味もあります。オブジェクトの世界も、クラスを「分類」ではなく「階級」と考えると、少し違った様子に見えてきます。
つまりオブジェクト指向プログラミング言語の世界では、そこに住むオブジェクトの階級 (class) は、オブジェクトが誕生した時点で唯一に定まっており、この世から消えるまで決して変えることができないのです。これではまるで中世の封建社会のようです。中世の国王にとっては、その方が国の秩序を保つのが簡単だったように、私たちモデラーにとってもオブジェクトの階級が決まっている方が、ソフトウェアの秩序を保つのが容易なのかもしれません。
将来的にはもしかすると、オブジェクトが自律的に動き回り、自由に成長していくようなプログラミング言語が登場するかもしれません。しかしそんな世界をどうやって分析・設計すればよいのでしょう?むしろそのときには、民主社会に国王の統治が要らないように、オブジェクトの世界を完全に操る私たちモデラーも不要な存在になってしまうのでしょうか?
オブジェクト指向は本当に「オブジェクト」指向か?
なるほど、何処か遠いところに旅だってしまったようです。(^^;
平澤氏のこの記事については オレオレOO以外の何者でもなく、失礼ながら私も、
オブジェクト指向は本当に「オブジェクト」指向か?-Wiki っぽい場(あるいは 疑似脳内ネットワーク)
- あたった文献が悪いのでは?(笑) オブジェクト指向アプローチなる語を「間違った定義」をしてる文献ばかりにあたってしまったとか?
という事じゃないかな〜、、と思います*2。
このような壮大な旅の結果、平澤氏がたどり着いた結論は、「オブジェクト指向と現実世界は大違い」です。(重い、重いわ)
なので、
歴史に「れば、たら」は禁物ですが、もし「クラス」ではなく、集合論をイメージしづらい「モジュール」などの別の名前がつけられていたら、ソフトウェア開発技術の歴史は大きく変わっていたかもしれません。
には、つい、「オレも惑わされることなかったのに、とほほ」という、穿った見方をしてしまいます。
この本が正しく見える理由
この本が正しく見える理由は、2章にあります。平澤氏が壮大な宇宙旅行の末たどり着いた結論は、さすがに威力絶大ということでしょうか。
で、これまでよく言われていた「間違ったOOP」を説明してみせながら、
- オブジェクト指向と現実世界は大違い
で、ちゃぶ台をひっくり返してみせます。
正しく間違いを指摘しているから 正しいというわけじゃないのですが、でもそうであるとその論調すべてが正しく感じるというモノ(マインドハック?)。それに加えて、「現実世界との対比はたとえ話として割り切るのがコツ」という言には、平澤さんの魂の叫びを感じまするるる、なので、間違いの指摘に実体験を伴った言葉の重みがにじみ出てしまっていて余計読者に 本書が玉石混合混交の「玉」であると思わせてしまうのだと、私は思うんです。