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

#この記事の内容
[オブジェクト指向に生命を持ち込むな！](https://qiita.com/tutinoco/items/8592f3432c5293b52566)に対するアンサーです。
オブジェクト指向は生命を含むオブジェクトを取り扱う、というのが個人的な結論です。だいぶ駆け足で書いたので、粗いかもしれませんがご了承ください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#生命もオブジェクトも、すべては抽象化された情報として認知される（存在する）
世の中のものは情報の塊（データ）とも言えるのではないでしょうか。なぜなら、人はセンサ（情報を取得するモノ）でしか現実世界を認知することができないからです。情報以外を取り扱うことってあるのでしょうか。また、情報は、見方によって姿を変えます。全ての情報を同時に取り扱うことはすごい負荷がかかります。それは人にとっても、機械にとっても同じでしょう。

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

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

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

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

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

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

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