こんにちは!SpeeeでiOS/Swiftエンジニアをしている id:Mitsuyoshi です。
私は趣味で人工生命をつくっていて、先日開催したSpeeeKaigiでもその発表をしたのでここで紹介します。
人工生命とは
人工生命とは、生命のいち側面をシミュレートすることで、我々の知る生命の理解と、ありえたかもしれない生命の探求を行なう分野です。
アプローチにはさまざまな手法がありますが、以下のような研究が有名です。
コンウェイのライフゲーム
実装の容易さと表現の多彩さで様々な研究が行われています。
ライフゲーム - Wikipedia
阪大 四方先生の進化する人工生命
自己複製するRNAを使用した化学的手法の人工生命です。
“生命”を人工的につくる - RNA複製能力の向上と膜たんぱく質の進化に成功
なぜやるか
人工生命を創ろうとしている理由は、自分が影響を与えることができるけれども、完全にコントロールできないものが好きだからです。 私は趣味で、プレイヤーが操作しないタイプの箱庭ゲームや、動植物の飼育、あるいはロボットの制作などを行ってきましたが、それらは全て、「自分がセットアップするけれども、見たことのないふるまいを見せてくれる」という面白さがありました。 生命の進化というのはその最たるもので、環境を変化させ進化を促すことはできるけれども、それがどのような結果をもたらすかはやってみないとわからず、そこに発見と観察の楽しさがあります。
どうやるか
人工生命のアプローチには大きく分けてソフトウェア、ハードウェア、ウェットウェアの3つがあり、そのうち、最も手間のかからないソフトウェアでのアプローチを行なっています。 ただし、ソフトウェアはウェットウェアと比べて計算能力が圧倒的に低いという欠点があるので、今回のはその欠点を補うコードを書きました。
今回の試行
今回はSwarmChemistryという人工化学のモデルをSwiftで実装し、それを分散コンピューティングに載せて実行できるようにしました。
参考文献
- SwarmChemistry
おわりに
今回はスクリーンセーバーとして実装したのですがこれが思いのほか良く、面白いパターンが生まれた時にはずっと眺めていられます。
また、毎日使うので改良案なども定期的に思いついてモチベーションの維持にもつながりました。
真に"生命"と呼べるようなパターンは出てきていませんが、続けていって少しずつ改良していくつもりです。