展示室の群れはどう動くか:Boidsとセル・オートマトンから探る自律の設計
ギャラリーで群れが動く映像の前に立つと、つい数分も動けなくなります。そこに生命を感じる理由を言葉にできず、自分で作ると「ただのランダム」になってしまう。この記事はそのもどかしさへの答えです。鑑賞では 個体のルール、環境との相互作用、破綻の余白 という三つの視点で構造を読み解きます。制作では、少数のパラメータに個体差と制限を入れる方法を試します。ICC や YCAM のような場で作品を見るときの手がかりにもなります。
展示空間で立ち止まる理由:規則と偶然のあいだに立ち現れる「生命らしさ」
暗い展示室で、光の粒が一斉に向きを変える場面を想像してください。誰も指揮していないのに、群れは一つの意志を持つように見えます。立ち止まってしまうのは、その動きが「予測できそうで、できない」からだと私は考えています。
完全なランダムは、数秒で退屈になります。次の一手が読めず、記憶に残る形もないからです。逆に、完全に決定的な周期運動は、機械の動きとして処理されます。生命らしさが立ち現れるのは、その中間の細い帯域です。規則は単純で、結果は複雑で、しかも毎回少し違う。
メディアインスタレーションでこの帯域が好まれるのは、鑑賞者の身体が入力として加わるからでもあります。作品が一方的に再生される映像ではなく、こちらの存在に応答する系になる。「見ている」という行為が、系の一部に変わります。
鑑賞の解像度を上げる三つの視点:個体のルール、環境との相互作用、破綻の余白
一つ目は個体のルールです。群れの全体像ではなく、まず一匹に目を凝らします。何を知覚し、どこまで見えているのか。近すぎる仲間から離れるのか、速度を合わせるのか。全員が同じ動きをしているなら、個体差がなく設計が均質なのだと読めます。
二つ目は環境との相互作用です。壁や障害物、鑑賞者の動き、音や光のセンサー入力に対して、群れがどう変形するか。ここを見ると、作家が系をどこまで開いているかが分かります。入力に対して即座に反応するだけなら反射の装置です。反応が遅れて戻ってきたり、一度ためらったりするなら、内部状態が設計されている可能性があります。
三つ目は破綻の余白です。うまく動いている瞬間より、秩序が崩れて再編される瞬間のほうが作家の設計思想を映します。 群れが分裂し、迷い、また合流するまでの数十秒に、パラメータの境界が透けて見えます。破綻を隠さず作品の呼吸として残しているかどうかは、個人的にかなり大きな評価軸です。
ただし、この三つの読み方は万能ではありません。展示によっては、内部のアルゴリズムより素材や空間演出が主役のこともあります。構造の読解は鑑賞の入口であり、感想の代わりではないと思います。
Boidsからセル・オートマトンまで:自律分散アルゴリズムの基礎と変遷
Boids は、Craig Reynolds が 1986 年に開発し、1987 年の SIGGRAPH で発表した群れのシミュレーションです。ルールは三つだけです。近すぎる仲間から離れる(分離)、近くの仲間と向きを揃える(整列)、群れの中心へ寄る(結合)。各個体が見るのは周囲の局所情報だけで、全体を統括する司令塔はありません。これが群知能と自律分散システムの古典的な例です。
セル・オートマトンは系譜が別です。フォン・ノイマンとウラムによる 1940 年代の研究に遡り、一般に知られるのは John Conway の「ライフゲーム」(1970 年、Martin Gardner のコラムで広まりました)です。格子状のセルが、隣接セルの状態だけで生死を決めます。グライダーのように動く構造が自然に現れるため、「ルールに書かれていない存在」が生まれる例としてよく引かれます。
Wolfram の初等セル・オートマトンの Rule 110 は、後に計算万能性が示されたことでも知られます(Matthew Cook による証明、2004 年発表)。三つの隣接セルだけを参照する一次元の規則から、汎用計算が可能な系が生まれる事実には、いつ聞いても静かな驚きがあります。
実装の面では、p5.js で数百個体を動かす Boids は手軽です。数千から数万個体を扱うなら、Three.js の GPU 計算の例(公式サンプルに GPGPU で鳥の群れを動かす例があります)や、TouchDesigner の GLSL による処理が選択肢に入ります。どの道具でも、鍵になるのは描画速度より、ルールの質です。
画面の内外をつなぐ:ICCやYCAMの先駆的展示に見る空間への拡張手法
ICC は 1997 年に東京オペラシティで開館し、YCAM は 2003 年に山口で開館しました。どちらも、センサーや音響、映像を空間全体の構成要素として扱う展示を長く手がけています。たとえば YCAM では、人工生命研究者の池上高志さんが関わった「Mind Time Machine」(2010 年)のように、生命的な振る舞いを空間規模で扱う試みがありました。この秋の各館の展示内容は、公式サイトで最新の情報を確認してください。
画面の外へ拡張する手法は、大きく二通りに整理できます。一つは、入力の拡張です。カメラや距離センサー、マイクで鑑賞者の位置や動きを拾い、系に外力として与えます。もう一つは、出力の拡張です。複数のプロジェクターやスピーカー、物理的な装置に分散して出力し、群れの動きが空間をまたいで移動するように見せます。
ここで気になるのは、拡張するほど「系の自律性」が見えにくくなることです。センサー入力に強く依存する作品は、鑑賞者が動くたびに反応するため、アルゴリズム自体の振る舞いを観察しにくくなります。反応の気持ちよさと、系の独立した生命感は、トレードオフになりがちです。好みが分かれる部分だと思いますが、私は鑑賞者が何もしない時間にも系が呼吸している作品に、より強く惹かれます。
小さな実験から始める:最小限のパラメータ変化で生体感を宿す実装アプローチ
制作で最初に手を入れる場所は、アルゴリズムの追加ではなく、個体差と制限です。全個体に同じ速度、同じ知覚半径、同じ操舵力を与えると、群れは一枚の布のように動きます。少しだけばらつきを与えると、群れが「個体の集まり」に見えてきます。
class Boid {
constructor() {
this.pos = createVector(random(width), random(height));
this.vel = p5.Vector.random2D().mult(random(1, 2));
this.acc = createVector();
this.maxSpeed = random(2.5, 3.5); // 個体ごとの速度差
this.maxForce = random(0.03, 0.06); // 方向転換の鈍さ
this.view = random(40, 70); // 知覚半径
}
}
操舵力の上限(maxForce)を小さくすると、急な方向転換ができなくなり、旋回に慣性が生まれます。生き物は急には曲がれません。この「曲がれなさ」が、ランダムとは違う生命感の正体の一つだと考えています。分離、整列、結合の重みも固定せず、時間でゆっくり揺らしてみてください。数十秒のスケールで群れが集まったり散ったりします。
注意点は、パラメータを同時に動かしすぎないことです。一度に一つだけ変えて、動きの印象がどう変わるかを記録します。そのうえで、展示で見た作品の動きを思い出し、何が違うのかを比べてみます。ジェネラティブデザインの上達は、結局この往復の回数で決まる気がします。
手元のスケッチの maxForce だけを半分にして、動きを三分間眺めてみるだけでも、その変化を十分に観察できます。


