「うぅ……」
机に突っ伏したユミナさん。
「どうしたの?」
珍しく紙パックのジュースを飲んでいるアキさんが言う。
「数学がぜんぜんわかんなくって……」
「大変ね」
冷たく言うアキさん。今日は火曜のお昼前、食堂で三人で集まっていろいろする時間です。
「ミドリさんはどう思う?」
「ごめんちょっと聞きそびれた」
今やっているのは自動生成型ワールドのパラメーター調整。どこか懐かしさがあるような空間みたいなものをどうやって作るかのあたりの話。このあたりは正直最適化をAIにやらせたくてもそのために必要な感性を人間が持っているせいで結局手作業で試行錯誤したほうが早いという悲しいオチになっています。
「ユミナさんが数学がわからないんだって」
「どの?」
アキさんの言葉に、ユミナさんは顔を上げてちょちょいと空中を操作する。
「なんだただの三次元ベクトルか」
「外積ってそんな難しいものだっけ……」
僕とアキさんは言う。二つのベクトルが作る平面を貫くような向きのベクトルを作るための計算手順。
「二人ともわかるの?」
「一応はVRやっていて少し数学寄りに潜れば嫌でもでてくるし……」
「線形代数の基礎でしょう?」
あ、やっぱり僕とアキさんの認識が違う。アキさんはたぶん基礎の数学の範囲を一通りやったときに出てくるもの扱いしているんだな。
「……二人とも、助けてもらえない?」
「課題の代筆はしないわよ、不正行為はしない主義なので」
このあたりの毅然とした態度を取れるのはアキさんの尊敬するべき点だと思う。
「でもアキさんはそう言って類似の問題の解き方を懇切丁寧に説明した資料は提供したりするんだから……」
とはいえ甘いんだけれどもね。まだ半年弱の付き合いですが大体どういう人なのかわかっているつもりです。
「友達の理解を助けるための行為よ、むしろまともに教えられない教師陣こそが責められるべきだと思う」
「一応大学は自分から学ぶ場所って建前になっているから……」
「建前って言ってしまっているでしょう」
はい。いやその、今の大学進学率とか情報系の博士まで行く割合とかを考えるとかつてのような放っておけば勝手に学ぶような人間がゴロゴロいた時代というのは遠くなってしまったのです。
博士号の価値が落ちたとも、あるいは多くの人がそのようなかなり最先端の研究に触れる機会を手に入れることができたとも言えるだろうが実際に学ぶ学生にとってはせいぜいモラトリアムが五年ぐらい増えた感じになる。
「……二人とも、ありがとうね」
ユミナさんが言う。こういう声に深みを出すのってどうすればいいのかな、なんてことを考えてしまう。いや別に声がいいから手伝うというわけじゃないですけどね。アキさんは声以外もって方向でもないからな。
「あなたがやらないと意味がないようなことしか私にはできないから」
「それでも、やってくれるのはとても嬉しいよ」
「いいんだ……」
僕の言葉に、小さくユミナさんは頷いた。
というわけで問題を見ていく。今の時代はXR端末一つあれば三次元にいろいろな情報を表示できるので本当に便利だ。
「ミドリさん、この机の上に座標系を組める?」
「ちょっとまってね」
フィールドの標準設定やって、ええと参照面をセット。これでいけるかな。VRならもう少し便利なのだが、XRだとカメラとの誤差とかのあたりで基準座標の設定が少し大変なのだ。本当はマーカーとかあると良いのだが、仕方がないので机の縁を参照させよう。
「ちょっとエンティティを作ってみる」
赤く光る、指先に乗るようなサイズの点。5センチメートルを1とする座標系での座標が表示されるようにしてある。これでいけるかな。
「ベクトルは作れる?」
「Arrowエンティティはデフォルトであったっけな、XRで触ったことないからあまりわからなくて」
XR空間の共有や編集の共通規格は二つの系譜のパッチワークのようになっている。一つは世界的大企業が自社囲い込みのために開発したデザインが洗練されているけど良くわからない開発環境を要求してくるやつ。
もう一つは開発自体はこれまた大企業だが、もう少しオープンソースの方に振っている。ではどこで利益を確保していたのかと言うとXR用の開発ソフトとかアセットとかですね。
とはいえ二つも規格があるとやり取りがしにくいってことで統合されてはいるのですが、端末のOSの違いによって微妙に見えるものが違うなんてことはあるのです。なのでちゃんと全員が見えるかどうかを確認しながらエンティティを作っていく。
「ええと外積ってどう計算するんだっけ」
「行列式みたいなものを使えばいいけど」
「いやそうなんだけど、便利なライブラリとかないかなって」
しかし少し調べても直接出すやつがなかったので、仕方がなく作ることにする。掛け算と引き算だけなので別にそう難しいわけじゃないんだけれどもね。
「ミドリちゃん、それ何?」
「ノードエディタ」
名刺ぐらいの大きさのカードにくっついたノードをワイヤーで繋ぐようにくっつけて情報を引っ張ってくる。必要な座標をfloatに変換してコードと言うのもおこがましいような式をちゃちゃっと書く。
「ちょっと触ってもらえる?」
ユミナさんに渡すのは黒い点から赤青黒の三本の矢印が伸びたようなエンティティ。
「……これは?」
「赤が左側、青が右側」
「非可換だから重要ね」
僕の説明にアキさんが言うがユミナさんは良くわかっていないようだ。
「根本を掴むと全体を動かせて、赤と青の矢印は先端をつまむと動かせる。黒は計算結果だから動かせないよ」
「わかった」
そう言ってアキさんはおそるおそるではあるが触っていく。赤い矢印を引っ張ると黒い矢印が伸びるし、青い矢印とのなす角を狭めると黒い矢印は縮んでいく。
「面白いわねこれ」
「十分かそこらで作ったにしては悪くない出来栄えだと思う」
本当はもう少し陰影処理とかに気を配りたかったのですが、適当にAIでそれらしくってやってしまった。でもこのわざとらしいプラスチックみたいな光沢も悪くないんじゃないですかね。
「それじゃあ、外積の基本的な特徴から話していきましょうか」
アキさんはユミナさんが授業で使っている資料を手元に引き寄せて、解説に使うページまでスクロールした。