風呂瀬 信五

デジタルアートに時間を刻む:コードで描く移ろいと永続の表現

静的なビジュアルに物足りなさを感じ、コードで描く世界に「時間の流れ」そのものを組み込みたい。そう願うクリエイターは少なくないはずです。アニメーションやインタラクションといった表層的な動きだけでなく、移ろい、循環、そして時には断絶といった、より深く哲学的な時間の概念を、どのようにアルゴリズムで表現できるのでしょうか。コードは静的な絵を描くための画材であると同時に、不可視であるはずの時間そのものを彫刻するためのノミにもなり得ます。この記事では、クリエイティブコーディングを通じて、デジタル表現における時間の詩学を探求し、移ろいと永続性を作品に宿すためのアプローチと思索のヒントを紐解いていきます。

デジタルに刻む、時間という不可視の彫刻

絵画がキャンバスという二次元空間を、彫刻が物質という三次元空間を扱う芸術であるならば、クリエイティブコーディングはそれに「時間」という第四の次元を加えて探求する芸術だと言えます。ディスプレイに映し出される光の明滅は、単なる映像ではありません。それは、プログラムが実行されている「今、この瞬間」に生成され、変化し、そして消えていく、儚くも確かな存在の証です。

私たちは、p5.jsの draw() 関数が1秒間に何十回も繰り返し実行されるその仕組みの中に、時間の基本的な構造を見出します。それは、絶え間なく現在が過去へと流れ去り、未来が現在へと立ち現れる、世界の根源的なリズムのシミュレーションです。このループする時間の中で、私たちは変数を少しずつ変化させ、図形を動かし、色を移ろわせることで、目に見えない時間の流れを、知覚可能な現象として翻訳します。コードによって記述されたルールは、時間の経過とともに複雑な振る舞いを展開し、まるで生命が宿っているかのような風景を立ち上がらせるのです。

リアルタイム生成の魔法:今、この瞬間に生まれるアートの生命

ジェネラティブアート、特にリアルタイムで生成される作品の魅力は、その一回性にあります。あらかじめレンダリングされた映像とは異なり、コードは鑑賞者の目の前で、その瞬間のためだけにビジュアルを生成します。Casey ReasとBen FryがProcessingを開発した当初から探求してきたように、アートは完成した「モノ」だけでなく、生成される「プロセス」そのものに宿ります。

例えば、millis() 関数やJavaScriptの Date オブジェクトを使って現在の時刻を取得し、それを描画のパラメーターに利用すると、作品は実行されるたびに異なる表情を見せます。朝に見る作品と夜に見る作品では、色彩や動きが変化するかもしれません。このような作品は、美術館の壁に掛けられた絵画のように固定された存在ではなく、私たちと同じ時間を生き、呼吸する生命体のような存在感を持ち始めます。この「今、ここ」でしか体験できないという性質は、デジタルデータが持つ複製可能性という特性とは対照的に、アートに唯一無二のオーラを与えます。

function setup() {
  createCanvas(windowWidth, windowHeight);
  colorMode(HSB, 360, 100, 100);
}

function draw() {
  // 現在の秒数に応じて背景の色相が変化する
  let hue = map(second(), 0, 60, 0, 360);
  background(hue, 50, 80);

  // 時間の経過で円が揺らぐ
  let x = width / 2 + sin(millis() / 1000) * 100;
  let y = height / 2;
  
  noStroke();
  fill( (hue + 180) % 360, 80, 100);
  circle(x, y, 50);
}

上記のシンプルなコードでさえ、実行するたびに現実世界の時間と同期し、二度と同じ瞬間は訪れません。このリアルタイム性こそが、デジタル表現に予測不可能な生命感をもたらす魔法なのです。

ループと永続性:反復の中に宿る生命のリズムと新たなパターン

p5.jsにおける draw() のループ構造は、単なるアニメーションのための仕組みではありません。それは、生命のリズム、自然界のサイクル、そして永続性という概念を表現するための強力なメタファーです。同じコードが繰り返し実行される中で、わずかな変化が積み重なっていくことで、予測不能で有機的なパターンが生まれます。

パーリンノイズ (noise()) 関数を用いることで、私たちはこのループの中に自然な「ゆらぎ」を導入できます。時間 (millis() / 1000 など) をノイズ関数の引数に与えることで、完全にランダムでもなく、完全に周期的でもない、滑らかで予測のつかない値の流れを作り出せます。この値を使ってオブジェクトの位置やサイズ、色を制御すれば、まるで風にそよぐ草木や、水面のきらめきのような、生命的な動きをシミュレートできます。

この反復と変化のプロセスは、ミニマルミュージックの作曲家たちが探求した手法とも響き合います。同じフレーズを少しずつずらしながら繰り返すことで、鑑賞者の知覚に新たなパターンが浮かび上がるように、ジェネラティブアートにおけるループもまた、単純な規則から立ち現れる複雑さの美を私たちに示してくれます。それは、永遠に続くかのように見えながらも、一瞬たりとも同じではない、デジタルな曼荼羅のようです。

時間軸の操作とインタラクション:鑑賞者が織りなす「時」の体験の共創性

クリエイティブコーディングにおける時間表現は、作家が一方的に提示するだけのものではありません。インタラクティブアートの領域では、鑑賞者の存在そのものが、作品の時間軸を動かすトリガーとなります。マウスの動き、キーボードの入力、あるいはマイクやカメラから得られる現実世界のデータによって、作品の時間は加速し、減速し、逆行し、あるいは停止します。

例えば、Rafael Lozano-Hemmerの作品群に見られるように、鑑賞者の心拍や動きが直接的に光や音のパターンを生成するインスタレーションは、鑑賞者を単なる観客から、作品の時間を共に創造する「共創者」へと変えます。もはやそこにある時間は、作家によってプログラムされた絶対的なものではなく、鑑賞者一人ひとりの身体や行動と結びついた、相対的で個人的なものになるのです。

コードでこれを実現するには、mouseX や mouseY といった変数を使ってアニメーションの速度を制御したり、mouseIsPressed を条件に時間の流れを分岐させたりするような、シンプルな実装から始められます。鑑賞者が自らの手で作品の「時」を操る体験は、映像を再生・停止するのとは全く異なる、深い没入感と主体性を生み出します。作品と鑑賞者の間に時間の対話が生まれる瞬間です。

刹那の美学:グリッチとノイズが示す、時間の断片と予期せぬ秩序

私たちはしばしば、コンピュータが刻む時間を正確で均一なものだと考えがちです。しかし、デジタルの世界にも、時間の流れが乱れる瞬間は存在します。処理負荷によるフレームレートの低下、データの破損、あるいはアルゴリズムの意図せぬバグ。これらは一般的に「エラー」と見なされますが、クリエイティブコーディングの文脈では、予期せぬ美を生み出す「グリッチ」として捉え直すことができます。

グリッチは、滑らかに流れるはずだったデジタルな時間に亀裂を入れ、その断片を露わにします。映像がカクついたり、色が乱れたりするその瞬間、私たちは普段意識することのない、コンピュータの物理的な制約や計算のプロセスを垣間見ます。完璧に制御された時間の流れから逸脱した、この刹那的なノイズの中に、かえって人間的な手触りや、予測不能な秩序を見出すことができるのです。

意図的にグリッチを生成するグリッチアートの手法は、この時間の断片化を美学へと昇華させます。ピクセルソートのアルゴリズムを応用したり、ビデオデータのバイナリを直接操作したりすることで、時間の連続性を破壊し、新たな視覚的リズムを創造する試みです。それは、計画された調和だけでなく、偶然の不協和音の中にも美が存在することを示唆しています。

終わりに:コードが紡ぐ、未来へ続く時間の物語

クリエイティブコーディングにおける時間表現は、単なるテクニックの集合ではありません。それは、絶えず移ろいゆく世界の姿を捉え、生命の営みを模倣し、そして私たち自身の知覚と対話するための、一つの哲学的な探求です。リアルタイムの生成、ループと永続性、インタラクションによる共創、そしてグリッチという刹那の美。これらのアプローチを通じて、私たちはコードという論理的な言語を用いながら、極めて詩的で感情的な「時間」の物語を紡ぐことができます。

あなたの書く一行一行のコードが、ディスプレイの中に新たな時間の流れを生み出し、まだ誰も見たことのない風景を描き出すかもしれません。静的なイメージの向こう側にある、変化し続ける世界の表現へ。その扉は、いつでもあなたの手によって開かれるのを待っています。

関連記事