桐生映司(仮)開発日記

開発の日常を書いていきます

mrubyでの30日開発日記(7日目)

今日やったこと

 glfwのチュートリアルをやっていた。というのも、どういうものかを知っておかないとと思って読んだ。  今までだったら、闇雲にやっていればいずれはパターンが見えてくると思っていたけど、これだと僕にとってあまり効率が悪い。  最近気づいたのは以下の手順に則ってやればいいのだと思った。

1.まずは、最低限の基礎だけを覚える。glfwの場合はチュートリアルだろう。

2.終わったらチュートリアルで重要そうな部分を掘り下げていく。glfwの場合はvulkan, window, context, monitor, inputといった構成要素を一つづつ分解していく。

3.それを踏まえて、どういう構造にすればゲームが作りやすくなるのかを考える。

 要するに、まずは森を見たあとにそこにいる木を見ていく。カリキュラムのように木を見ていき、最後に森を見ていくというのは僕には合っていない。なぜかと言うと、大抵の人なら木を注意深く観察するというのは退屈だし、面白くない。広大な森を見たあとでそこに何が生息をしているのかを知っている方が楽しんで見れる。
 これはいろいろな学びに役立つだろう。例えば、数学の場合だ。最初からそこで教える全体の内容やなぜ数学が必要なのかという内容とか面白い歴史を学んでから、問題を解いてみる。国語でもなにかおもしろいような取っ掛かりになるような文章を用意してからそれに付随する物を教えていく。  glfwの場合はもともとどういう構成でやっているのかがドキュメントで揃っているから森が見えた。まずは森をみることから始めたほうが僕にとってはよかったみたい。

今日のコラム

 妄想を馬鹿にする人がちらほらいる。僕も妄想する癖があるし、ときたまそういう人にバカにされることがある。  ただ、別に彼らを断罪しようなどという気持ちはないし、それをして争ったら平和に過ごせなくなる。そうすれば、好きなアニメもゲームも争いのせいで潰れる。ですので、妄想の良い面とはなんなのかを語っていこう思う  妄想のなにがいいのか?それは思考実験にほかならない。僕からの視点だと、物語を考えることも思考実験をすることも本質的には変わらないと考えている。  まず、物語を作るところから説明していく。物語を考えるとき、僕はまず伝えたいことを考える。例えば「今を生きる」というテーマだったらどうやってそれが大切なのかを証明しなくてならない。今をときめく女子高生がきらきらした学園生活をして「今を生きるってすばらしい!」ってなったら説得もできないし、正直その女に対して殺意が湧く。僕なら、「未来が見通せる少女と過去から逃れられない青年が今の地点から明日を変えることができるのか?」というようにしてやってみる。ここで大切なのは「未来を見通せる少女」という現実では絶対に存在をしないような人物を出していることだ。架空の物を登場させることで現実感を少しだけ排除できるメリットは「現実の諸問題を直視無くていい」ということがある。現実には解決しなければならない問題が山ほどあるがそれを全てのっけって証明することはできない。だから、物事をシンプルにするためにそういう人物を使うことによって説得をしやすくしたり考えをまとめやすくしている。要するに解答を簡単にすることができるのだ。
 一方数学のような学問だ。数学は物事を抽象化して考える学問でもある。数というのは目に見えないものだし、数字は人間しか見ることができない。では、どのように抽象化するのかというと、変数を用いて証明しようとする。ルート2の背理法が一番有名だろう。「その解が有理数の場合」という仮定が間違っていれば、ルート2は無理数であるというような解答だ。ルート2を正確に解答したとしても、無限に続く数をすべて紙に書くことができない。そして、そのような数字を用いて考えることは脳に大きな負担を要する。だから、x/yというような変数を用いて有理数を表現して解くという方法を用いている。1/2という具体的な数字よりもこのような変数を用いるほうが考えやすいのだ。
 この2つで共通していることは、どちらも「現実で存在しない物」を用いていることにある。現実を全て直視することは難しい。太陽を直接見たら失明するのと同様に、僕らも現実を直視したら脳みそがパンクするのと同じだ。だからこそ、架空の物を用いて表現したり見たりすることが大事なのだ。
 妄想をすることはいいことだ。思考実験が良くて、物語を考えるのが悪いというのは間違っている!どのような馬鹿げた妄想だとしても深く掘り下げれば立派だ。