ChatGPTに特定の機能を持つコードのスニペットを書くように頼むのはよくある使い方だ。ただChatGPTは回答の長さに制限があるので、あまり長いコードの出力をお願いするのは現実的ではない。プログラム全体の仕様をプロンプトで投げて、そのコードを返してもらう、みたいな使い方はまだ難しい。
でもジェネレーティブアートみたいな、比較的短いコードでプログラムが完結するものであれば、プログラムコード全体を出力してもらうのも現実的だ。
例えば以下のプロンプトで、p5.jsで書かれたジェネレーティブアートっぽいコードが出てくる。
I want you to act as a generative art programmer. Conceive an unprecedented abstract and geometric animation piece, which loops infinitely, utilizing the p5.js framework, centered around the theme of "[Theme Name]". Consider using noise, mathematical functions or fractals to achieve this task, refraining from the use of user input. Set the canvas size to 400x200. Do not write explanations. Just show me the code for it.
このプロンプトで工夫した点は、[Theme Name]を使って、こんなテーマの作品を作ってとお願いしたところ。これがある種の乱数シードのように働いて、いろんなバリエーションの作品ができることを期待した。
このプロンプトにいろんなテーマ名を与えて、さらに気にいったものが出てくるまでなんどか回答をRegenerateした結果、以下のような作品ができた。出てきたコードはいっさい加工していない。
作品、与えたテーマ名、生成されたコードを表示している。まあまあいろんな作品ができているのではないだろうか。
ただテーマに沿った作品ができているかというと、どうだろう。'hexagons'みたいな直球のテーマはうまくくみ取ってくれる。'recursive life forms'も結構それっぽいのは驚きだ。ちなみにrecursiveは興味深い作品ができる魔法の言葉だが、無限に再帰する行儀の悪いコードがしばしばできる諸刃の剣。
悪ふざけで'digdug'とか入れたら、ChatGPTもdrawDigDugという関数を生成してきたが、君は本当にDigDugやホリ・タイゾウのことを知っているのかね。プーカの赤、ファイガーの緑、ホリ・タイゾウの青が並んでいるのは、偶然だよね?
理想的にはつぶやきProcessingの作品くらいのクオリティ、バリエーションが得られるのが良いのだが、プロンプトの工夫だけでそこまでいけるかは分からない。せめて作品をつくる際のブレスト、取っ掛かりに使えるといいな。