見出し画像

random は初心者殺し…

「random() には気をつけろ…」電話の向こうで男の声が言った。

知らない番号からの電話には出ないことにしている僕がその電話を取ったのは、スマホに浮かんだ番号に興味を惹かれたからだった。
それはフィボナッチ数列だった。

「えっと、何…」戸惑う僕に構うことなく男は再び言った。
「random() には気をつけるんだ」
「random() って Processing とかの?」
「Processing でも p5.js でも何でもだ。やつは…初心者殺しだ」

画像1

setup()

random() は普段から僕もよく使っている。それが初心者殺しだって…?

男は僕の返事など待たず、熱のこもった声で喋りだした。
「今まで決まりきった結果しか出なかったものが random() を使うだけで毎回違う結果が出るようになる。それは新鮮な驚きであり感動的でもある」

確かに僕にも覚えがある。まるで自分の手で”アート”を生み出せたような、そんな魔法のような効果に興奮したものだ。

画像6

「だがやっているうちになんだかつまらなく感じられてくる。最初は心躍る”作品”だったものが、繰り返すうちにどの結果もつまらなく見えてくる。どこが良いのか、何が面白いのか、見どころがどこなのか、全くわからなくなってしまうんだ。そうだったろう?」

男の問いに少しギクッとして、僕は慌てて言った。
「そ、それは、何回も試していけば良いもの、これだ!というものが出てくるんじゃないですか?」
「百万回試したって出てきやしないさ!」吐き捨てるように男は言った。
「それで今度はコードをいじり始めるが、色、大きさ、配置場所、どれも random() を主軸に据えている限りろくなものはできやしないんだ」

画像2

draw()

「でも…」クリエイティブ・コーディングを始めたころを思い出しながら僕は言った「初心者向けの説明では必ずと言っていいほど出てくるじゃないですか」

「使うなという話じゃない。メインのロジックとして使うのはどうかという話だ。random() はスパイスみたいなものだ。スパイスをうまく使えば料理は美味くなる。だが、スパイスだけじゃ料理にはならんだろう?まずは random() を使わずに作って、スパイスとして変化をつけるところに random() を加えるのが上手い料理の作り方ってものだ」

わかるような… でもなんだか丸め込まれてるような気も…
「ランダム・ウォークはどうなんですか? あれは random() がメインでしょう?」
「あれはカレーだ」
「!?」
「確かに random() あってこそのランダム・ウォークだ。カレーもスパイスあってこそだが、スパイスだけで食えるカレーにはならんだろう?ランダム・ウォークも同じこと。動きの方向を限定するとか、表示の方法を工夫するとかして初めて作品として面白いものができる」


「人は予測不可能で雑然としたものは好きじゃない。規則性のある整理整頓されたものが好きなのさ。しかし規則正しいだけだと、今度は飽きてつまらないと感じてしまう。そこでちょいとスパイスのようにランダム性を入れる。それが random() の使い途だ」

noLoop()

男は続ける。
「同じコードで毎回違う結果が出るから面白い。でもそれに嵌って先に進めなくなる。終いにはつまんなくなって作るのを辞めちまうやつもいる。そういう意味で random() は初心者殺しなのさ」
「random() は初心者殺し…」
「そうだ。なんとなく "やっててつまらない" とか "上達してる気がしない…" と感じてるとしたら、それは才能とか努力とかそういうものじゃなく、random() の罠に嵌っているだけかもしれないんだ。そんな風に感じてるんなら、数式とか規則に基づくものを主軸に据えて作るようにしてみるといい」
「さっき ”まずは random() 使わずに作る” って言ってましたけど、例えばどんな風にですか?」
「まずは数式、三角関数を使って描くグラフとか、ストレンジアトラクタ等の漸化式なんて面白いだろう」

画像7


「それと規則、自分でルールを作ってもいいし、例えば単純に倍、倍としていくだけでも面白いものはできる」


「あと数列とかだな」

そう言えばと思って言ってみた。「例えば、フィボナッチ数列とか?」
電話の向こうで男がニヤリと笑った気がした。

画像4

あとがき

random() を使ってはいけないというお話しではありません。また、random() 主体で作った作品がダメだということでもありません。

random() は初心者向けの解説でよく出てくる割に、使いこなすのは相当難しいものだと思います。そもそも乱数はコントロール不能なものであり、そんなものを使って思い通りに作品を作るなんて土台無理な話しです。

そういうことをまだよくわからない初心者の方が random() を使い続け、面白い作品が作れないと悩み、苦しみ、遂には自分には才能が無いのだと諦めてしまう。そんな悲しい姿を、私は今まで数え切れないほどこの眼で見てきてはいませんが、見たくないなと思っています。

この記事は Processing Advent Calendar 2020 18日目の記事でした。
昨日の記事はレオナさん「クリスマスカラーのポストカードをネットプリントに登録しました!」でした。クリスマス気分盛り上がりますね!🎄
明日は ayato さんの超絶面白い大興奮の記事です。どうぞお楽しみに!😀

画像5

参考までに

動きの方向を限定し、表示の方法を工夫してみたランダム・ウォークの作例です。

規則正しくきっちりしたものにランダム性を入れてみた作例です。

規則正しくきっちりしたもの。

画像7

それにランダム性を入れてみたもの。

画像8

画像9

バズってないけど宣伝させてね

📘 他にも note でいろんな記事書いています。

🎨 こちらのブログはソースコード付きのクリエイティブ・コーディング作品集になってます。

🐦 Twitter でもいろいろ面白いの上げてるのでぜひフォローしてください。


この記事が面白かったらサポートしていただけませんか? ぜんざい好きな私に、ぜんざいをお腹いっぱい食べさせてほしい。あなたのことを想いながら食べるから、ぜんざいサポートお願いね 💕