モデルオブジェクトが生まれたけどやっぱり現実とは無関係である話

#さて、前回は幾何学の話をしたので今回は文系っぽい話をしましょう

##美とか愛とか正義とかってとても文系っぽいですので美の話とかが良いですね

ところで私が言う美と他の誰かの言う美は同じものでしょうか？仮に違うものだとしたら私が美について何かを主張することに意味はあるでしょうか？
前回の続きで言えば、例えば誰かが「私の線分は長さ１だ」といったところで別の誰かが「いや私の書いた線分は長さ３だ」と言ったとします。このやり取りに意味はあるでしょうか？

私と誰かが何かについて何らかの合意をするには、私と誰かが同じものについて語る必要があります。前回書いたように同じオブジェクトに対して同じ操作をすれば同じ新しいオブジェクトができますから、同じオブジェクトについて何らかの合意をすれば、新しい合意されたオブジェクトができるでしょう。
しかし、ここで問題になるのが同一の美を別々の人間が共有することは不可能であるという事です。前回書いたように一度閉じたコンパスを全く同一の開き方で開くことはできませんし、別々の人が別々のコンパスで同一の作図をすることはできません。ならば美も同一の美を別々の人が共有するという事はできないでしょう。少なくとも共有しているとする数学的な根拠はありません。

##この問題に取り組んだのがプラトンであり、著作の「饗宴」です（解決できたとは言ってない）

饗宴は参加者が「自分の美」を語り、誰の「美」が正しいかを競い合う話です。つまり、この「美」は共有されたものではありませんし、誰かに賛意が集まったとしてもそれは正しさを担保しません。「俺は〇〇が美だと思う！」という語りに対して「何を言ってるかわからないけどなんかそれっぽいから俺もそう思う！」と言っているだけです。なんせ同じものについて語っていないので何を言ってるかわかるわけがありません。
これに対してプラトンは「いや、美のイデアというものがあるということにしてそれについて語ろう。そうすれば同じものについて語っていることになる」と言い出します。それがどのようなものかは議論して合意をすることができる、だからまず同じものについて語ることに合意しようじゃないかと。
この、議論と合意の対象として存在することにしたオブジェクトがイデアです。
そして、イデアについて言及したオブジェクトが「理論」や「モデル」です。
つまり「モデルオブジェクト」とは、（それがなんであるにしろ）ある対象を表現し、共有するために提示されたモデルであるオブジェクト、ということです。

##モデルは現実と関係ない

「美」そのものは共有することができないので議論の対象にできないから美のイデアを議論の対象にするように、現実も共有することはできないので現実に存在する何かを議論の対象にすることはできません。誰もが自分の現実を見ているだけですし、現実を共有していることを証明することはできないからです。
[クオリア](https://ja.wikipedia.org/wiki/クオリア)というものがあります。ありますがそれが具体的になんであるかを正しく言える人はいません。誰だって自分のことしか分からないんですから他人の見てる現実は似たようなものと期待するくらいしかできないのです。
そこで、現実に存在したり現実に存在しなかったりする何かを対象としたモデルを作成し、このモデルを議論の対象にします。このモデルとは単に議論の対象にするために創造されたオブジェクトなので別に現実世界を表現したものとは限らず、現実と関係ありません。つまり、モデルオブジェクトも値オブジェクトと同じく現実と無関係ですし現実をとらえたものというわけではありません。あなたが現実をモデル化したいと思って作ったなら貴方が見てる現実を表現したモデルでしょうし、４次元空間とか現実に無いものをモデル化してもそれはモデルでしょうし、ゲームをモデル化したいと思って作ったならそれはゲームのモデルでしょう。
シミュレーションゲームは現実の戦闘をシミュレートしたゲームだって？んな馬鹿な。あれの多くは現実の戦闘をモチーフにした陣取りゲームですよ。

##モデルはオブジェクトでもあるがだいたいClassとして扱われる

モデルはそれ単体でオブジェクトになりますが、それがどのようなものであるかは多くのオブジェクト指向言語ではClassとして記述します。
さてこのモデルというものは共有するために普遍です。普遍であるために一部のオブジェクト指向言語ではClassは操作の対象にとることが出来ずそれ自体ではアイデンティティのあるオブジェクトとして扱われません。作図していない長さ１の線分がアイデンティティを持ちえないのと同じようなものです。なので作図に使うオブジェクトが必要です。これがオブジェクト指向言語で言うところのObjectになります。
実をいうとこのClassにそのまま実体を持たせた値オブジェクトでも十分に物事を記述できますし実際にScalaとかはそう書く人が多いでしょう。ですがこの値オブジェクトだけで書かれた何かは時間とか手続きとかととても相性が悪い一方、普通の人は時間や手続きで物を考えます。例えば今日の私と明日の私は新陳代謝により構成が変わっているため数学的には別の値ですが別人と考える人はそんなに多くないでしょう。というわけで時間を考慮したObject、MutableなObjectが「便宜上」必要になります。というのが次回のお話です。

順番が前後しますがここから下がなぜモデルオブジェクトがこのようなものであるといえるのかという話なのでお暇ならどうぞ。

##モデルについて語ることは正しいか？

モデルは何かについて述べたものです。つまり（受け取るParameterは未知だとしても）何かについての操作が関数オブジェクトのように既知であるのと同様に、何かについて述べたモデルもまた既知であるという事になります。（何について述べているのかは未知ですが。）
また、モデルはアイデンティティを持ちえません。あるモデルと全く同じモデルがもう一つあったとしてそれを区別するのは不可能です。つまりモデルは普遍な存在であるという事になり共有することができます。
数学的には共有されていないもの未知のものについて語るのは同じものについて語ることにならないので正しくないことになりますが、既知ならば同じものについて語れるので正しいことになります。同様にモデルは既知であることによりモデルについて語るのは正しいことになる、これがプラトンが議論の対象となるモデルとモデルが対象とするものとしてイデアを導入した工学的な理由です。
一般に科学者がモデルや理論を公表するのは別にその人が考えや思いを伝えたがってるとか正しいと思ってるとかじゃありません。提示したモデルに関しては正しく議論できるというかモデルを提示しないと正しく議論ができないからです。

##ObjedtなのかSubjectなのか

ParameterとArgumentが同じものを指しているにもかかわらず既知かどうかで名前が違うように、Objectも名前を変えます。それがSubjectです。
何らかのものを指すときはParameterと同じように「それが何であれ言及の対象としているもの」としてObject、何らかのものがあってそれがどういうものかを述べるときはArgumentと同じように「実際に言及の対象としているモノ」としてSubjectです。理屈の上では例えばOOP言語でObjectはフィールドを持ちますが同じObject内のフィールドをメソッド内から参照するときはSubjectのフィールドになるわけですよ。わかりにくいですね！っていうかそんな言語見たことないわ！
まぁともかくだから手紙のタイトルはSubjectになるわけですし議論の主題も（議論があるという事は実際に存在する何かについて議論するという事なので）Subjectとなるわけです。
この未知であるという事と既知であるという事は日本ではあまり気にしませんが英語などでは重要になるそうです。例えば未知のものはaがつき、既知であればTheが付くといったように。未知であるか既知であるかはその文章の中で変わるので最初に登場するときは a , 次に登場するときは the , 公知であるときは最初から the だったりして英語の論文とか書くときに大変らしいですね。
でも論文では何については知り特定できていて何については知らなかったり特定してなかったりすることをきちんと分けないといけないのでそれでいいんでしょう。
[東京大学大学院の記事です](https://www.s.u-tokyo.ac.jp/ja/story/newsletter/english/03.html)


##マサカリカレンダーなので一応今日も投げておきましょうか。

ちょくちょくモデルは現実を単純化したものだという人がいますがそれは先述したように誤りです。単純にしたがるのは単に話を分かりやすくるためです。
また、先日オブジェクト指向の話が出てきたときに「Objectはものであり、Subjectは対象であり、SubjectとしてのObject」のような記述を見かけましたが、先述の通りObjectとSubjectはその存在の在り方によって分けられたものです。議論の対象をObjectとすると例えば議論の対象としてあるシステム（SubjectとしてのObject）をとったときにじゃあそのシステムを構成する部品としてのもの（言及の対象としてのObject）は何と呼ぶのか、という話になるのでやはりObjectは言及の対象と表現するのが良いかと思います。