分散コンピューティングで人工生命を演算する

こんにちは!SpeeeでiOS/Swiftエンジニアをしている id:Mitsuyoshi です。

私は趣味で人工生命をつくっていて、先日開催したSpeeeKaigiでもその発表をしたのでここで紹介します。

tech.speee.jp

f:id:Mitsuyoshi:20170907145713g:plain

人工生命とは

人工生命とは、生命のいち側面をシミュレートすることで、我々の知る生命の理解と、ありえたかもしれない生命の探求を行なう分野です。

アプローチにはさまざまな手法がありますが、以下のような研究が有名です。

コンウェイのライフゲーム
実装の容易さと表現の多彩さで様々な研究が行われています。
ライフゲーム - Wikipedia

阪大 四方先生の進化する人工生命
自己複製するRNAを使用した化学的手法の人工生命です。
“生命”を人工的につくる - RNA複製能力の向上と膜たんぱく質の進化に成功

なぜやるか

人工生命を創ろうとしている理由は、自分が影響を与えることができるけれども、完全にコントロールできないものが好きだからです。 私は趣味で、プレイヤーが操作しないタイプの箱庭ゲームや、動植物の飼育、あるいはロボットの制作などを行ってきましたが、それらは全て、「自分がセットアップするけれども、見たことのないふるまいを見せてくれる」という面白さがありました。 生命の進化というのはその最たるもので、環境を変化させ進化を促すことはできるけれども、それがどのような結果をもたらすかはやってみないとわからず、そこに発見と観察の楽しさがあります。

f:id:Mitsuyoshi:20171003193039g:plain

どうやるか

人工生命のアプローチには大きく分けてソフトウェア、ハードウェア、ウェットウェアの3つがあり、そのうち、最も手間のかからないソフトウェアでのアプローチを行なっています。 ただし、ソフトウェアはウェットウェアと比べて計算能力が圧倒的に低いという欠点があるので、今回のはその欠点を補うコードを書きました。

f:id:Mitsuyoshi:20171012150548g:plain

今回の試行

今回はSwarmChemistryという人工化学のモデルをSwiftで実装し、それを分散コンピューティングに載せて実行できるようにしました。

github.com

スクリーンセーバーのダウンロード

参考文献

おわりに

今回はスクリーンセーバーとして実装したのですがこれが思いのほか良く、面白いパターンが生まれた時にはずっと眺めていられます。
また、毎日使うので改良案なども定期的に思いついてモチベーションの維持にもつながりました。
真に"生命"と呼べるようなパターンは出てきていませんが、続けていって少しずつ改良していくつもりです。