働きアリが巣を作って餌を集め、その巣の中心には働きアリを産んでいる女王アリが鎮座している……ということは小学校の理科で習うことですし、皆さんも子供のころにアリの巣を観察したりしてよくご存じかと思います。
いまでもアリの巣を観察してみると非常に巧妙で感心します。所々、うろうろ戸惑っているアリもいますが、たいていのアリはおおよそ秩序だった仕事をしています。餌を見つけてその餌をみんなで一列になって運んだり、巣穴が手狭になったら拡張したり、塞がれたりしたらそれを器用に修正します。アリの種類によっては、肥料になる葉っぱを集めてキノコを栽培したり、アブラムシを飼育したりするものもいたりするので驚いてしまいます。
長い間、このような行動は王アリによる中央コントロール(プロジェクト管理!)のたまものであると考えられてきました。しかし実情は全く異なります。女王アリは働きアリとなる雌のアリをただひたすら産んでいくのみです。『今度は巣穴のメンテナンス要員が足りないので15匹産もう』とか、『あなたたち、キノコ栽培用の葉っぱを3日分採ってきなさい』などの指令は一切出していません。もちろん、働きアリが頭をひねって管理方針を立案しているわけでもありません。
解明した結論は非常にシンプルなものでした。働きアリは、いくつかのインターフェイスを持っています。遺伝子で規定された挙動、触角、視覚、とりわけフェロモンの濃淡をインプットとしてかぎ分けます。もちろん自分もフェロモンをアウトプットとして放出できます。
これだけシンプルなin/outのインターフェイスを持った、半ばロボットのような存在が、ある一定の規模を超えた途端、全体として複雑な社会的行動を始めます。
このシンプルなインターフェイス群、とりわけコミュニケーションの中心となるフェロモンは、自己組織化のために大きな役割を果たします。
例えば、餌を採りに行く場合、最初に餌を見つけた働きアリが、餌の一部を持ち帰るとともにフェロモンを放出します。近くにいるアリはそのフェロモンに気付き、フェロモンを追って餌場にありつきます。そのアリもまたフェロモンを放出することによって、餌場への方向のフェロモンが強化されます。餌が大量であればあるほど、こうやってフェロモンの蓄積はフィードバックされ、加速度的に増えていきます。こうしてアリの行列が出来上がります。
同じような仕組みで、
などなど、とてもシンプルなインターフェイスの積み上げで起こったものとは思えないことを自己組織化してやってのけるのです。
もちろんアリだけではなく、同様な現象はほかにも森羅万象に見られます。
参考
粘菌が迷路を最短ルートで解く能力があることを世界で初めて発見 (理化学研究所・北海道大学、2000/9/26)
粘菌とは、アメーバ状の単細胞生物で、普段はバラバラの単細胞として生きていますが、環境条件が変わると、途端に凝集して、スライムのような塊になり、栄養を求め動き回ります。
この粘菌の不思議な挙動も、『どこかにリーダー細胞があってそれが変形の号令を掛けているはず』という考え方が以前は主流でした。
しかし、実際には『リーダー細胞』なるものは存在せず、cAMPという化学物質をあたかもアリのフェロモンのように放出し、また放出されたcAMPに反応するということを繰り返すことで、あたかも全体に号令を掛けて変形しているかのような全体的な動きをすることが分かりました。
あまりにシンプルなルールによる全体での挙動なので、コンピュータ内で簡単に動きをシミュレートすることができます。
このシンプルなルールが、いかに驚くような挙動に自己組織化するのかという分かりやすい例が、上のリンクにある『粘菌による迷路シミュレーション』です。
迷路の入り口に粘菌の塊を置き、迷路の出口に餌を置くと、
このように、『迷路の最短ルートを解く』という複雑な作業を、cAMPフェロモンを出すシンプルな単細胞生物の集まりがやってのけるのです。
ほかにも、同様の現象は枚挙にいとまがありません。生物の例を挙げましたが、もちろん生物だけではなく、地震や、山火事、金融市場の乱降下といった現象でさえ、この自己組織化現象の一面として見ることが可能だと考えられています。
ここで、これらの現象の共通項を考えてみましょう。
(a) 『粒』が大量に集まっている
どの例も、同じような『粒』が大量に集まっている状態です。働きアリの大群や、単細胞生物の集まりとしての粘菌でも、数え切れないほどの似たような粒が集まっていて始めて自己組織化が起こることが分かるでしょう。
決してアリ1匹のみから、自己組織化した現象は起こりません。アリ1匹をいくら眺めても、巣全体としての現象は決して分かりません。『多いということは“違う”ということ』なのです。
(b) 『粒』はシンプルなin/outのインターフェイスを持つ
アリのインターフェイスや粘菌のインターフェイスは、非常にシンプルなアルゴリズムで実装可能です。従って、シミュレーションソフトなどでその動きをかなりリアルに再現できます。面白い応用例は、渡り鳥の群れのシミュレーションというものがあります。Java Appletで作成されたこのシミュレーションは気味が悪いほど渡り鳥の群れの動きに似ています。
しかし、この群れの『粒』である鳥プログラムには、
という非常にシンプルなインターフェイスしか実装されていません。
(c) 『粒』はランダムにほかの『粒』のアウトプットの影響を受ける
『粒』であるアリ1匹1匹に、行動プロセスが組み込まれているわけではありません。それぞれの『粒』がランダムに動き、出合うことのみで、『餌を集める行列を作る』といった自己組織化現象を起こします。決して初めから秩序だったプロセスが用意されているわけではない、というのがミソです。
いかがでしょうか?
前回の最後で、大火事プロジェクトに対して取った方針を思い出してみてください。
この3カ条と非常に似ていることが分かると思います。
「(1)大きさのそろった『粒』をできるだけ増やすこと」というのは、ずばり、「(a) 『粒』が大量に集まっている」という状態を実現するための方針です。ただし、ばらばらの大きさの粒が集まっているのでは、ただの無秩序状態=カオスになってしまいます。『大きさをそろえる』というのがポイントです。
「(2)『粒』と『粒』との連携は可能な限りシンプルにすること」というのは、「(b) 『粒』はシンプルなin/outのインターフェイスを持つ」という状態に保つための方針です。この『シンプルさ』というのは、非常に奥が深く、いろいろな方面、階層に対して、『これはシンプルなのかどうか?』という疑問を投げかけていく必要があります。
「(3)『粒』と『粒』との連携方法に例外をなくすこと」というのは、少し難しいですが「(c)『粒』はランダムにほかの『粒』のアウトプットの影響を受ける」という状態に対応します。そもそも、連携方法に例外がある、というのはどういうことでしょうか? 例えば、障害起票、仕様変更起票の方法に、いくつものプロセスが存在し、そのプロセスを起票内容によって使い分けるということに等しくなります。これは、アリ1匹1匹にラベルを付けて、特別プロセスの行動を取らせようとしているようなものです。
自己組織化のルールでは、特別プロセスを何通りも用意するのではなく、1つの箱にすべてまとめて入れてしまう=ランダムな出合いという1つのルールだけに従うということにつながります。
ここで紹介した例に興味を持たれた方は、ぜひ専門の本を読んでみてください。今回はかいつまんだ事例しか載せませんが、より不思議な自己組織化の本質を知ることができてお勧めです。
Copyright © ITmedia, Inc. All Rights Reserved.