プラトンのおかげでUnityとちょっと和解できた
Unityの苦悩
Unityとは長いこと分かり合えずにいた。
2018年にBlenderでの3Dモデリングを始めた自分にとって、UnityはBlenderでモデリングをしたあとにVRChatへ持っていくためになぜか触らなければいけない謎のアプリケーションでしかなかった。
なぜ、こんなにもBlenderとUnityは操作感が違うのか。
Unityを触るたび、どう使えばいいのか全くわからずハゲそうになっていた。
しかし、VRChatで遊ぶにあたって、いつまでもUnityにアレルギーを持っているわけにはいかない。
今回、新しく販売されたアバターの狛乃君を改変したり、自分でワールドを作ってみようと思いあたって、はじめてUnityを基礎の基礎から勉強してみた。
Objectとはなにか、Prefabとはなにか、など、本当の基礎から色々と初心者向けの記事を読んでみたのだ。
そこで気がついたのだが、Unityの設計思想はプラトンのイデア論に似ている。
そう考えて、はじめてBlenderからUnityへモデルを移動させたときに、なぜあんなにも戸惑ったのかにも合点がいった。
UnityはBlenderとはまったく世界観が異なるのだ。
Unityとイデア論が似ていると言うと突拍子なく聞こえるかもしれないが、実はそうでもない。
UnityはC♯で動かすものであり、C♯オブジェクト指向プログラミング言語だが、オブジェクト指向とイデア論が似ていると主張している人はけっこういる。
これとかこれとかこれとか。
もしかしたらオブジェクト指向プログラミングで動くUnityがイデア論に似ているのは当たり前のことなのかもしれないとも思う。
それほどまでに奇妙に符合しているように感じるのだ。
イデア論とは
高校の倫理で習うくらい有名だが、簡単にプラトンのイデア論について書いておこう。
プラトンは、眼の前に見えている色々なものの本質が、眼の前ではないどこか別の世界=イデア界にあると考えた。
我々が普段見たり触ったりしている全てのものは、イデア界にある完全で不変の本質=イデアの幻影でしかないと、プラトンは言う。
このイデア論は哲学史的には後世に絶大な影響を与えたが、とはいえ、本物の存在が我々が見ることのできないどこか別の世界に存在するという考え方は神秘主義的だと批判され続けてきた。
たとえば、イデア論の究極系のような考え方をした新プラトン主義は流出論にたどり着き、グノーシス主義のような神秘思想へ受け継がれていく。
実際、ほとんどの人は普段イデア論のような考え方は一切しない。
眼の前にあるものの本質や要素は、眼の前のもの自体にあると考える。
たとえば、リンゴを見て「リンゴだ」と思ったとき、それは赤くて丸い果物だから「リンゴだ」と思うのであって、眼の前にあるリンゴがイデア界に存在するリンゴのイデアが投影されているから「リンゴだ」とわかるのだ、とは思わないだろう。 ましてや、リンゴを見て「赤い」とか「丸い」とか思ったときに、眼の前のリンゴに「赤」や「丸」のイデアが投影されているとは考えない。リンゴは、眼の前のリンゴ自体が赤くて丸いからリンゴなのだと考える。
しかし、イデア論ではそうしたリンゴの要素は、イデア界にあるリンゴのイデアから投影されている(哲学用語を使うなら「分有(Teilhabe)されている」)のだと考える。
Unityとイデア論の符合
ここまで読めばピンときた人もいるだろう。
Unityでも、Sceneにおいてあるオブジェクトには本質はなく、すべてProjectや、あるいはその中のAssetにおいてあるものから要素を受け取って存在している。
ドイツ語ウィキペディアのイデア論についての記事のイラストが最もわかりやすく、Unityとの対応を示しやすい。

上の図左側でIdeenと書かれているのがイデア界で、Unityならプロジェクト(あるいはアセット)にあたる。
Unity上で何かを作るための原型(Urbild)となるさまざまなファイルが置かれている世界だ。
そして、原型となるファイルは、一度Unityに入れたら基本的には変化することはない(unvergänglich)。
対して、右側のGegenständeこそが我々の目の前に存在している個々のものだ。Unityならシーン(あるいはヒエラルキー)にあたる。そこに置かれている、プロジェクトにあるファイルのコピー(Abbild)はシーン上の個々のオブジェクトだと言っていいだろう。(そもそも、ドイツ語のGegenständeは英語だとobjectだ。)
このシーン入れたオブジェクトは、アセットにあるファイルと違って変化することができる(vergänglich)。
しかし、シーン上のオブジェクトは変化させられるといっても必ずアセット内のファイルから要素を受け継いでいる(イデアを分有(Teilhabe)している)。
アセットのファイルが違うものに差し替えられたなら、その要素を受け継いでいるシーン内のオブジェクトはすべて書き換えられる。
UnityのUnpackは、単にオブジェクトの集合を「解凍する」動作ではなく、イデア界からの「分有」を無理やり振り解く行為なのだとわかる。

UnityとBlenderの大きな違い
そこまで考えて、自分がBlenderからUnityに移るときにどうしてあれほどまで戸惑うことになったのかが完全に理解できた。
Unityがプラトン的な世界観でつくられているのに対し、Blenderはアリストテレス的な世界観でつくられているのだ。
プラトンが本質をどこか別の世界にあると考えたのに対して、アリストテレスは本質は目の前のものに宿っていると考えた(アリストテレス哲学の用語を使うなら、形相は質料に宿っていて不可分だと考えた)。この眼の前のものをよく探究すれば本質がわかるというアリストテレスの考えは、長い時代を経て近代科学の考え方に受け継がれ、我々の日常の感覚に溶け込んでいる。
Blenderで3Dモデリングをする行為は、眼の前のもの、眼の前のポリゴンに「本質」のようなものを宿らせる行為にほかならない。
頂点を生成し、一つ一つ動かす作業は、イデア論のような超越的なものの考え方とは無縁だ。だから、オブジェクト指向的なソフトウェアにあまり縁がなかった自分は、BlenderでつくったモデルをUnityに持って行ったときに混乱したのだ。
5年前の自分に「UnityとBlenderは世界観がまったく違うんだよ。Unityはプラトン的な世界観で、Blenderはアリストテレス的な世界観なんだよ」と言ってあげたくて、この文章を書いた。
そう言ってくれる人がいれば、5年間もUnityにアレルギーを持ち続けることもなかっただろう。
それにしても、現実的な世界を再現しようとするUnityが、普段の現実的な考え方と乖離しているのはメチャクチャ面白い。
オブジェクト指向はバーチャルな世界を写実的に描写するためのもののはずだ。Unityも、バーチャルな世界に写実的な世界を生み出そうとするために設計されたはず。
それが日常的な現実感覚に基づく世界観ではなく、プラトンのイデア論のような神秘主義と批判されてきた世界観に近くなっているのだ。
なぜこのような一致があるのか、欧米圏のほうが古代ギリシア哲学の影響が強いせいでそうなっているのか、あるいは偶然なのか、効率よく写実的な世界をつくろうとするとどうしても神秘的な要素が入ってしまうのか、考えられることは尽きない。
この面白さを、自分はUnityを触ることによって実感をもって理解できた。
ありがとうUnity。