魔法使いの弟子

いつか私もあなたみたいに

quilで作ったぼくのジェネラティブアート初公開

ここ100日くらいほぼ毎日休まずにコードかブログの記事を書いている。

平日は仕事から帰った後に家またはカフェでちびちび、
土日はコワーキングスペースに入り浸りだらだらと何かしら書いていて
「書く」ということがやっと習慣化しつつある。

小さな習慣は偉大だ。

最近のマイブームはClojureでのWebアプリ開発とジェネラティブアートだ。

Webアプリを作っているという事は前回の記事でも書いているが、
そのWebアプリのテーマになっているのがジェネラティブアートである。

ジェネラティブアートとは、幾何学とランダム性を融合させて作るアートである。
プログラムを書いた自分でさえどんなものが出力されるのかがわからない面白さがある。

Clojureを調べているうちにquilというライブラリを見つけて使ってみようと思ったのが
きっかけで今は下記の本を読みながら勉強中。

[普及版]ジェネラティブ・アート―Processingによる実践ガイド

[普及版]ジェネラティブ・アート―Processingによる実践ガイド

  • 作者: マット・ピアソン,Matt Pearson,久保田晃弘,沖啓介
  • 出版社/メーカー: ビー・エヌ・エヌ新社
  • 発売日: 2014/11/21
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (1件) を見る

この本には作例として著者の作品やその作品を作るための
Processingのソースコードが載っている。

Processingというプログラミング言語は
Javaを簡単にしたようなやつで書きやすく、プログラミング初学者には最適らしい。

Processingが書きやすいかどうかという議論は置いておいて、
quilを使いたい私は本に書いてあるコードをClojureで書き直したりしながら読み進めている。
quilがProcessingをClojureで使うためのラッパーであり、関数名とかほぼ同じなので読み替えはそんなに難しくない。

上で紹介した本で Wave Clock という作品が紹介されていて、
それを自分でも実装して何回か実行してみると以下のような図が表示される。

f:id:aoba17:20190814234417j:plain
f:id:aoba17:20190814234413j:plain
f:id:aoba17:20190814234511j:plain

見て分かるように、毎回異なる結果になる。
パーリンノイズと呼ばれる、知ってる人は知っているノイズを使って
線の長さや中点の位置、線を引く方向を少しずつ変えながら線を引きまくるとこうなる。

Processingではなくquilを使う事で得られる恩恵は、
ClojureとClojureScriptの高い互換性によりClojureで作ったアートをClojureScriptに移植するのが簡単である、
Clojure(Script)のREPLを使ったライブコーディングができる、
quil独自のドローイング用マクロを使える、
などがある。どれも素晴らしい利点である。

劣っている点とすれば、Lispを知らない人にとっては学習コストが高いことくらいだろうか。
(多分Lisp上で上記の3つの恩恵もLisper以外にはちんぷんかんぷんだろう。)

興味がある人は上で挙げた本を立ち読みでもいいから読んでみることをオススメする。
作例をみるだけでも結構楽しいと思う。