LoginSignup
15
11

More than 5 years have passed since last update.

オブジェクト指向にオブジェクトを持ち込め!

Posted at

この記事の内容

オブジェクト指向に生命を持ち込むな!に対するアンサーです。
オブジェクト指向は生命を含むオブジェクトを取り扱う、というのが個人的な結論です。だいぶ駆け足で書いたので、粗いかもしれませんがご了承ください。

オブジェクト指向は現実世界の写し

なぜ、「オブジェクト指向は現実世界をそのままソフトウェアに表現する」と言われるのでしょうか。もちろん、現実世界を単純にそのまま持ってこればそれで万事OKという話ではありません。だけれども、オブジェクト指向と現実世界は密接な関係があります。(単純に持ってきて成功するかどうかの話は、設計原則やGoFデザインパターンにも当てはまることでしょう。世の中そんなに甘くないということです。。。)

それは、「オブジェクト指向」を扱う人間が「現実世界」にいるからです。現実世界を作り出しているのは、まさに我々人間なのでです。哲学的な話になるかもしれませんが、「現実世界」を認知しているから「現実世界」があると言えます。つまり、「現実世界」というものは、ある種、主観的に認知した産物なのです。

その「現実世界」をどのように認知しているかという、その手法が、そのまま「オブジェクト指向」に反映できると考えています。

「オブジェクト指向」の世界は何も摩訶不思議なSF世界ではありません。むしろ、現実的な自然な世界こそが、真の「オブジェクト指向」の世界といえるでしょう。何も違和感がなく、自然に取り扱える、それはまさに設計の理想とも言えるでしょう。それは、我々が「現実世界」の不明な部分を探求することはあっても、そのものに不自然さを感じない(否定しない)ことと同じと言えないでしょうか。

もし、「オブジェクト指向」の世界に四次元ポケットがあるのであれば、なぜ我々はこんなにも苦しむのでしょうか。さっさと、秘密道具を使って解決すれば良いのではないでしょうか。そうならないのは、(言葉遊びかもしれないが)「オブジェクト指向」の世界は、「現実世界」のように甘くはなく、むしろ、この厳しい状況は、「現実世界」の方に近いとも思えます。

「オブジェクト指向」の世界には足りないものが多すぎます。もし、事足りているのであれば、進化は止まっているでしょう。それでも模索され続けているのは、まさに「足りていない釘」を探している状況なのではないでしょうか。

つまり、「オブジェクト指向」の世界は、今私たちが生きているこの「現実世界」と似ていると言えるでしょう。

生命はモノである

生命はどこからきたのでしょうか。突然何もないところから生まれたのでしょうか。

そう、生命はモノから生まれたのです。(たぶん笑)

生命とモノを区別する意味はないのです。

人は生命を創れる

モノ創り=自由なものを試行錯誤して自由なものを創れる、ということであれば、なぜ世の中に四次元ポケットがないのでしょう。

結局、モノ創りだって制限だらけで、「閉じた世界でのみ自由」というだけで、子作りと何も変わりません。また、子作りにも色々とあるのです⋯。

意識の存在証明

哲学的な話でいうと、自分に自由意志(意識)があるかどうかわかりませんし、そのことを気にすることに価値はありません。

なぜなら、オブジェクト指向の世界も、現実世界も作り上げるのは、(あろうがなかろうが)同じ「意識」からなので。

スタンバるか、スタンバらないかは「それ」次第

生命がたまたまそう造られただけで、オブジェクトが必ずしもそうとは限りません。それは、オブジェクトの仕様次第で、スタンバることもスタンバらないように作ることもできます。違うものを比べても、それは違うに決まっています。

動くかどうかであれば、植物はどうなのでしょうか。凍結させた生物はどうなのでしょう。それはスタンバッているというのかスタンバっていないのか。ここまでくれば言葉遊びの次元かもしれませんが⋯。

融通とは本質的に「統計」

人が空気読むのも、今まで生物たちが生き残ってこれたのも、「統計(経験)」のおかげです。生命だって、未知の領域に踏み込んだ途端に破綻するのではないでしょうか?それはまさに(統計(経験)を持たない)赤ん坊のようなものではないでしょうか。

生命の移植はまさに「規格」を利用している

もし、生命に規格がないのであれば、移植は不可能でしょう。それどころか、あらゆる手術が不可能でしょう。なぜなら、今までの知見が次の患者に適用できるとは限らないのだから。

移植や手術ができるのであれば、それはまさに規格の適合なのではないでしょうか。ただ、私たちはそれらを完全に把握していないだけなのです。

出産ではなく、認知

モノが誕生するのは、それを認知するからである。出産において、どこから我が子なのか、という非常に難しい問題があります。それは結局、認知というものを用いて解決するほかないのです。

認知という感覚は非常に大事です。

生命もオブジェクトも、すべては抽象化された情報として認知される(存在する)

世の中のものは情報の塊(データ)とも言えるのではないでしょうか。なぜなら、人はセンサ(情報を取得するモノ)でしか現実世界を認知することができないからです。情報以外を取り扱うことってあるのでしょうか。また、情報は、見方によって姿を変えます。全ての情報を同時に取り扱うことはすごい負荷がかかります。それは人にとっても、機械にとっても同じでしょう。

だから、抽象化を行なうのです。

オブジェクト指向は生命も含む万物を取り扱う

オブジェクト指向設計を行なう上で、あえて生物のみに焦点を当てる必要はありませんが、それらを区別する必要はありません。なぜなら我々は、生物であろうがなかろうが、同じような認識を行なうからです。必要なければ使わない、必要であれば使うということなだけです。

例えば、犬の翻訳機が必要になって、犬種ごとに言語が異なっていた場合はどうでしょうか。動物医療ロボットで、各動物ごとに治療が異なる場合はどうでしょうか。実際はもっと複雑かもしれません。

取り扱う「オブジェクト」に線引きは、そもそも不要なのです。「オブジェクト指向」がうまく取り扱えないというのは、ただ単に分析結果(設計)が目的とあっていないということだと思います。その「オブジェクト」にどのような「性質(特徴)」を盛り込めば良いのか、それに尽きるのです。(個人的には、その役割はインターフェースが一番適している(バランスが取れている)と思っています。)

そもそも「オブジェクト指向は現実世界をそのままソフトウェアに表現する」ということを実直に実行できるでしょうか。個人的には、それは無理なのだと思っています。設計原則にしても、GoFデザインパターンにしても無理なのです。なぜなら、(オブジェクト指向世界の)現実はそこまで単純ではないから。「オブジェクト指向」がうまく機能していない原因はもっと他にあると思います。

どのように、「オブジェクト指向」と付き合えばいいのでしょうか。それにはまず、現実世界を見ましょう。おおよそのことは、細部を気にせず物事を取り扱っているはずです。その感覚はそのまま「オブジェクト指向」にも用いることができるはずです。今見えている課題をきちんと分析し、どのように取り扱うべきか、取り扱えば良いのか、深く考える必要があります。それには、先人の知恵は大いに役に立つでしょう。

「オブジェクト指向」そのものを用いるのは非常に難しいと思います。それは普段私たちが行っている自然な行動と非常によく似ている、というかそのものだと考えているが、それにしたって一朝一夕で身につけたものではありません。それと同じで、「オブジェクト指向」が取り扱う課題が複雑(未知な部分もあることも含めて)なことであることが多いため、一朝一夕でできるものではないでしょう。経験によるところが大きいので、言葉を尽くしたって伝わりきれるものではありません。

15
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11