FreeLifeは生物シミュレーションの古典。緑の点が生物を表します。

ライフはシミュレーションの古典!


新しいプログラミング言語を覚えるとき、ガイドはちょっと変わったやり方をします。まず基本的な文法などをざっと頭の中に入れたら、いくつかの決まった小さなプログラムを作り始めるのです。このプログラムは別に特別なものではなくて、ちょっとした電卓プログラムであるとか、シンプルなゲームであるとか、そうしたごくありふれたものです。どんなプログラミング言語を作るときにも、まずこれらを作るのです。そうやって既に作った経験のあるプログラムを移植することによって、新しく覚える言語のクセやそれまで使っていたものとの違いなどを知ることができるのですね。

今回の「ライフ」というプログラムも、そうした「最初に作るサンプルプログラム」のひとつなのです。正直いって大昔のプログラムですし、地味で「なんだこれ?」という感じがするかもしれません。が、このプログラムには「二次元ゲームのゲーム盤の仕組み」「スレッドによる同時複数処理の実行」「多数のデータの演算」といった処理の基本がすべて詰まっています。これが作れれば、二次元の簡単なゲームなどはすぐに作れるようになるのですよ。

「ライフ」というのは、ケンブリッジ大学のジョン・H・コンウェイ教授によって考案された数学パズル(というより数学シミュレーション)です。ライフは、生物の繁殖と死滅をごく単純なルールに基づいてシミュレーションするもの。縦横にずらりとマス目が並ぶ二次元的な世界をイメージしてみてください。その中のいくつかのマス目に生物がいたとしたとき、それが次の世代ではどのように繁殖あるいは死滅するか、ということを、一定のルールのもとにシミュレーションするのです。

今回作成したプログラム「FreeLife」は、「Start」「Clear」の2つのボタンだけしかないシンプルなものです。ウインドウ内には真っ黒に塗りつぶされた領域がありますが、これがライフの生息するスペースです。ここをマウスでクリックすると、クリックした地点に緑色の点が表示されます。これが、ライフ世界の「生物」です。サイドクリックすると生物を消すことができます。

こうしてスペース内をクリックして適当に生物を配置し、「Start」ボタンをクリックすると、ライフ世界の時間が動き始めます。後は、その生物たちの繁殖を眺めているだけです。再度「Stop」ボタンを押せば時間は停止します。また「Clear」ボタンを押すと、すべての生物を取り除くことができます。

まずは、実際にプログラムを動かして、ライフの世界がどういうものか確かめてみましょう。一目見て「つまらない」と思う人もいるでしょうが、中には、このシンプルな世界に引き込まれてしまう人もいるかも知れませんよ?