モノクロタイム

I'm from the future!

ジェネラティブアート(普及版)読む・Part3,Chapter7

Chapter7 自律性

Chapter6では,Processingでアートを作りながらオブジェクト指向プログラミングについて学んだ.

プログラミングにおいて,オブジェクトはただデータを保持しているだけだけど,自分たちが定義しようと思えば,オブジェクトに感情や願望などの人間的な要素を与えることは可能になる.そしてそういった特性をもつオブジェクトは,ヴァーチャルの世界の構成員となり,所謂「エージェント」となることができる.

プログラミング用語における「オブジェクト」と「エージェント」の違いは、エージェントが環 境を観察し相互作用することにあります。エージェントには、目的、意思、偏見といったような、 複雑な行動をとる可能性があります。それらは不正確さ、自己利益、非合理性などのとても面白い行動をも生み出せます。

そして,自律性.自立じゃなくて,自律.

自分たちが考える自律というのは,自分でものを考え,自身で物事に対し決定を下す能力のこと. そして「エージェント」と「オブジェクト」の違いは,「エージェント」が自律性をもつ構造物で,「オブジェクト」はそうではないということ.

即ち「エージェント」を自らの手でコーディングし作り出すことで,より複雑で予測不可能な動きをするアート作品を創りだしていこうというのが,本Chapterの狙い.

セル・オートマトン

まず,エージェントとは何かといった概念を学ぶ必要がある.

コンピュータサイエンスの初期のゲーム「セル・オートマトン」を使用する.

セル・オートマトンとは,ある空間上に複数のセルが並び,互いに隣接するセルの状態によって自身の状態が変化していくようなモデルである. 人工知能やゲームにも応用されていたりするので,そういった分野を勉強したことのある人には難しくない話かもしれない.セル・オートマトンは,解説しようとすると1つの記事を埋め尽くしてしまうくらい長い説明をしなければならないので,詳しくはWikipediaやその他のページを参考にして欲しい.

f:id:yomoyamareiji:20150226234809p:plain

Processingで描いたセル・オートマトンのイメージ.

これは静止画だけれど,もちろん動きを付けることもできる.最も知られたセル・オートマトンとして,ジョン・コンウェイが考案したゲームオブライフというものが存在する.ゲームオブライフについてもやはりWikipediaが詳しいので,詳しく知りたい方はここからどうぞ.

ゲームオブライフのルールは以下の通り.

● ルール 1:生きている(黒い)セルは、2 つか 3 つの隣接セルが生きていればそのまま生き続 ける。さもなければ、過疎か過密のどちらかで死んでしまう。

● ルール 2:死んだセルの周囲に、ちょうど 3 個の生きた隣接セルがあれば奇跡が起こり、それは生き返る。

これをProcessingで実装するコードが載っていたので動かしてみると…

f:id:yomoyamareiji:20150226235901p:plain

f:id:yomoyamareiji:20150226235911p:plain

ぬるぬる動いて気持ち悪いw

30秒後ぐらいには収束して,状態が変化しなくなります.

ヴィシュニアク・ヴォート

ゲームオブライフのような複雑かつ予測不可能な動きをする規則は他にもある.ジェラード・ヴィシュニアクが実験を行ったヴィシュニアク・ヴォートは,それぞれのセルの状態が周りのセルの集団からの圧力を受けやすく,隣接セルの傾向に流される,所謂服従のような規則である.

つまり,自身のセルの状態が周囲のセルの中で多数派であれば状態は変化しないが,少数派のとき,多数派の状態と同じになるように自身の状態を変化させる.

f:id:yomoyamareiji:20150227000808p:plain

最初は白と黒が混在しているが,

f:id:yomoyamareiji:20150227000839p:plain

次第にまとまりはじめ,

f:id:yomoyamareiji:20150227000900p:plain

きれいに別れる(画面が一色に塗りつぶされた回もある).

ブライアンの脳

もう一つの規則,それがブライアンの脳.

ブライアンの脳は3つの状態を持つセル・オートマトンである.

状態の遷移の仕方については,以下の様なルールが存在する.

ブライアンの脳の CA の状態は、「発火」「休息」「オフ」の 3 種類です。

セルは、脳のニューロンの動きのように発火し、再び発火する前に休息します。ルールは次の通りです。

● もし状態が発火なら、次の状態は休息

● もし状態が休息なら、次の状態はオフ

● もし状態がオフで、2 個の隣接セルが今まさに発火していれば、そのセルは発火する

これをProcessingで表現すると,

f:id:yomoyamareiji:20150227001455p:plain

模様が水平・垂直に動いていって,

f:id:yomoyamareiji:20150227001548p:plain

これらがぶつかると,爆発したように周囲のセルの状態が変化する.

波(平均化)

以上2つの規則では,セルは2つまたは3つの状態を繰り返しているが,もちろんセルがこれ以上の状態を持つように定義することも可能である.具体的な例をいうと,波.

海岸やビーチなどを思い浮かべてみればわかりすいと思うのだけど,波は大きくうねる場所もあれば,穏やかな部分もある. この大きな波と穏やかな部分をそれぞれある値とすると,この2つの値の間には連続的な値によって求められた海面の高さがあるはずである.

これをProcessingで実装すると,さらにおもしろい効果を得ることが出来る.

f:id:yomoyamareiji:20150301151821p:plain

水たまりに水が落ちたような効果が得られる.

f:id:yomoyamareiji:20150301151849p:plain

シミュレーションとビジュアライゼーション

今まで作ってきたセル・オートマトンはすごく単純なもので,この規則を利用してもっと複雑な,或いは美しいアートに変化させることができる.

ではその複雑さや美しさをどう表現していくか.例えばの例で2つ.

ソフトウェア・エージェント

冒頭でオブジェクトに人間的な感情や願望などの要素を含めていくと述べているが,人間レベルの知性を実装する必要は無くて,感情のぶつかり合い,願望の大きさや量の相互作用によって複雑さは生まれていく.

つまり,人間がコンピュータに指令を与えることによって生まれる複雑さである.大まかな指令を与えるのは人間だが,この指令を受け取るのはコンピュータ(この本で言えば,Processingという開発環境で作ったソフトウェアだ).

人間エージェント

全方位測位システム(GPS)というものがある.これは自分が地球上どの場所にいても自分の所在地がわかるという便利なもので,カーナビやスマートフォンの地図アプリには欠かせないシステムとなった.

このGPSで受け取る位置情報を使用することで,アートを生み出すこともできる.平日大学に行き,夜に家に帰る.この動きを繰り返し記録し,地図上に線を引けばとても濃ゆく,太い線が描ける.しかし週末友人と遊びに行くとき,通学路とは違った道を移動することもあるかもしれない.この道筋を描けば,平日の決まった線分とはかけ離れたとてもおもしろい曲線を描き出すことができるだろう.

つまり,人間の動きがアートに繋がる複雑さである.

ジェネラティブアートの定義として,「システムが自律していて,外部からの操作がなく,導き手から自由であること」がある.

人間エージェントは定義に反しているじゃないか,と思うけれど,ある線を描こうとして移動するといった意図がなく,またシステムに無関心であれば問題はないとのこと.

今はSwarmやTwitterなど,位置情報をインターネットに残す人間が増えており,日々大量に蓄積されている.以前はこの位置情報のデータを,自律性を持った形で収集することが困難であったが今日ではとても簡単になった.SNSすごい.

(ただ,このデータを利用する際は個人情報保護やプライバシーの観点からとてもシビアな問題が生まれそう.)

とにかく,人間エージェントを用いる時に複雑性を生み出すためのデータなんて集めようと思えばだいたい集められるということだ.

もちろん人間やソフトウェアにこだわらなくともいいと思う.例えば気象庁などが出す降水確率や紫外線量なんか,毎日国民が閲覧できるようにわかりやすく記載されているし,データも蓄積されていると思う.国土交通省のデータは面白い使い方ができると思う.

次のChapter8は「フラクタル」. 恥ずかしながら高校では文系クラスに所属していたので,フラクタルやそれに準ずる数学などを学んだのは大学に入ってからだけど,難しいながらも描く図面はとても美しいと感じた.

次はそのフラクタルをProcessingで描きながら,フラクタルで何が出来るかを学んでいきたいと思う.