黒い水槽に、オレンジ色の個体群と紫色の個体群が中央で混じって泳ぎ、左には餌の緑の点がまばらに散る。捕食者と被食者の型が色で見分けられる、Gene Poolの進化シミュレーションの画面

Jeffrey Ventrella の Gene Pool(Swimbots)という進化シミュレータがある。2次元の水槽に「Swimbot」という生き物が泳いでいて、256個の遺伝子が体の形と行動を決め、餌を食べてエネルギーを稼ぎ、近くの個体と交配して子孫を残す。淘汰も交配相手選びも全部その場の物理で決まる、眺めているだけのアクアリウム。

これは完全な自作ではなく、公開されているソースを自分用に Rust/wasm へフォーク・移植したもの。遺伝子発現をON/OFFで切り替えられるようにし、設定を変えながら何百回もバッチで回せる実験台にした。原作のソースが公開されていたから、長年やってみたかったことをAIと一緒にようやく試せた、という形。元は「綺麗だな」で終わる水槽だったのが、問いを立てて答えを測れる装置になった。それで一つ気になることが出てきた。捕食者と被食者には分かれるのに、それが別の種にならない。 その理由を詰めていったら、思っていたより根の深いところに行き着いたので記録しておく。進化生物学の専門家ではないので、用語や解釈の粗さは割り引いてほしい。

まず、生態的な型は普通に分かれる

肉食性(carnivory)という遺伝子がある。値が高いほど他のSwimbotを襲って食べ、その代わり植物性の餌を消化できなくなる。最初これをONにしても肉食はほとんど進化せず(平均0.16くらいまで下がる)、ニッチとして成立しなかった。捕食のうまみが安すぎたのだ。

そこで捕食効率を設定で変えられるようにして掃いてみると、ちょうど効率2.5あたりに窓があって、そこでは捕食者と被食者が二つの型として安定共存する。集団の肉食性の分布がはっきり二峰になる。しかも体つきまで別物に進化していて、捕食者と被食者では体プランをコードする遺伝子の差が、中立な領域の差の約2倍あった。捕食は体サイズで決まる(小さい相手しか襲えない)ので、当然と言えば当然だ。

つまり「生態的なニッチ」「分化した型」までは、価格さえ正せばあっさり出る。問題はその先だった。

「型が違う」と「別種になった」は別物

二つの型が出ても、それが別の種かどうかは別の話だ。判定には中立なDNAを使う。

Gene Poolの遺伝子は前半(スロット0〜117)が体や行動を作るコード領域、後半(118〜255)は何の役にも立たない中立領域だ。この中立領域が試金石になる。理由はこうだ。コード遺伝子は淘汰を受けるので、二つの型でコード遺伝子が違っても、それが「交配が止まったから」なのか「淘汰が中間個体を毎世代殺して差を維持しているだけ」なのか区別がつかない。ところが中立DNAには淘汰が効かない。だから中立DNAが型と一緒に分かれていたら、それは遺伝子の行き来が実際に減った=生殖隔離した証拠にしかなりえない。交配し続けていれば中立DNAは毎世代かき混ぜられて型をまたいで均される。

この中立隔離の指標を測ると、共存している二型では少しだけ上がる。生態だけでも「隔離の気配」は出る(かき混ざっている値1.1に対して、平均2前後)。けれどその信号は弱く、世代をまたいで持続せず、別種の完成には届かない。型は分かれても、遺伝子プールは結局一つのまま。

犬で言えば、チワワとグレートデーンは体が全く違うけれど同じ種で、自由に交雑する。あの体格差は育種=淘汰が維持しているだけで、生殖隔離ではない。Gene Poolが作るのはこの「犬種」であって、「別種」ではなかったということ。

象徴的なのは、肉食型が周期的に滅んではまた草食型から生まれ直すこと。捕食者が増えすぎて餌を獲り尽くす→飢えて滅ぶ→草食が回復→変異でまた肉食型が湧く、を繰り返す。草食の親から肉食の子が生まれる、それ自体が「遺伝子プールは一つ」の何よりの証拠。

隔離を作ろうとして、片っ端から失敗した

別種にするには、型のあいだの遺伝子の行き来を実際に止めればいい。手は一通りある。一つずつ試した。結果は全部、形は違えど同じ壁だった。

  • 似た者どうしだけ交配させる(中立DNAで)。 集団が均質化するだけだった。「似たのとだけ交配」は中立な単峰の分布には純化の力としてしか効かず、分けるどころか一点に寄せる。
  • 肉食性で交配相手を厳しく絞る(ハードゲート)。 隔離はする。が、近くに似た相手がいないと繁殖できず、12回中4回で集団が絶滅した。
  • 肉食性で交配相手を緩く好む(選好)。 絶滅はしない。が、緩いので結局は型をまたいで交配が起き、中立DNAは漏れ続けて隔離されない。
  • 体のコード遺伝子全体で緩く好む。 コード領域の分化は強烈に彫れた(中立の2倍どころか最大9倍まで行った)。けれど中立DNAはついてこない。組換えがコード領域と中立領域を独立にかき混ぜるので、コードで選り好みしても中立はすり抜ける。しかもその彫り込みは選好が維持しているだけで、緩むと元に戻る。これも結局「犬種」だった。
  • 空間で隔てる(プールを壁で二分)。 これは効いて、初めて中立DNAが場所ごとに分かれた。本物の隔離だ。ただし壁が生息域を半分にするので、分かれたデメ(小集団)が次々絶滅した。
  • 壁ではなく分散を絞る(局所交配)。 距離による隔離は出かけた。が、隔離できるほど絞ると局所デメが小さくなって絶滅し、絶滅しない程度に緩めると漏れて分化しない。非致死かつ隔離する、という設定が無かった。
  • 組換え率を下げて、中立DNAを肉食性遺伝子に連鎖させる。 連鎖で中立DNAが淘汰に引きずられる(ヒッチハイク)のを狙ったが真逆だった。組換えを下げると集団がクローン的に均質化して、肝心の二峰の多型そのものが潰れる。引きずられるべき型が消えてしまう。

トリレンマ

並べてみると答えが見えた。同所的に(地理的に隔てずに)種分化を完成させるには三つが同時に要る。

  • (a) 二つの型(多型)が維持されていること
  • (b) 型のあいだの遺伝子の行き来が切れていること
  • (c) 小集団が生き残れること

そしてどの手も、二つを取ると三つ目を必ず手放す。

取れる二つ手放す一つ
中立DNAゲート/組換え低下(b)(c)(a) 多型が潰れる
緩い交配選好(a)(c)(b) 漏れて切れない
ハードゲート/壁/分散制限(a)(b)(c) 小集団が絶滅する

型を保ちながら、その遺伝子の行き来を切って、なお集団を生かしておく。これが同時に成り立たない。同所的種分化が完成しないのは、ノブの設定の問題ではなくて、この構造そのものだった。

そして調べてみると、これは現実の進化生物学でも同じで、遺伝子が行き来する状況での種分化(sympatric speciation)は実際に難しく、議論も多い。普通の種分化は地理的隔離(allopatric)で起きる。Gene Poolでも、完全に隔てた壁のときだけは本物の隔離が出た。再現として正しい挙動だった、ということになる。シミュレータが「簡単には新種を作れない」のは、雑なのではなく、むしろ本物に近いからだった。

ここまでの地図

Gene Poolは、生態的なニッチも分化した型(犬種)も、価格さえ合わせれば普通に作る。本物の別種は、地理で完全に隔てるか、淘汰だけで偶然そこに転がり込むか(24回に3回くらい)のどちらかでしか出ない。トリレンマがその境目にある。

トリレンマの分析が名指しした二つの仮定、「中立マーカーを肉食性遺伝子に溶接する」と「小集団を多数養う生息地」は、実際に作れる。作った。

溶接と生息地

溶接は、中立マーカーを肉食性遺伝子に連結して、淘汰が肉食性を引っぱるときマーカーも引きずられるようにする手だ。効かなかった。理由はさっきの周期にある。肉食型は毎回、草食型から変異で生まれ直す。だから肉食型のマーカーは毎回「生まれたばかりの草食のマーカー」で、連結する相手の系統が続いていない。保つべき差が最初から無い。

生息地は、壁で二分する代わりに、餌をパッチ状に置いて小集団を多数養う手。壁よりは多くのデメが生き残った。けれど隔離できるほどパッチを小さくすると、小集団の中で型(多型)が漂って一つに潰れる。脚(c)を救うと脚(a)が抜ける。トリレンマのままだった。

腐肉食と性選択

設計の改造とは別に、新しい力も足した。

死骸を食う腐肉食。死んだSwimbotが死骸を落とし、肉食個体がそれも食べる。死骸は死亡率で湧く餌で、食べても供給は減らない(捕食と違って自分で獲り尽くせない)から、捕食者ニッチが安定する。「狩る」と「腐肉を食う」を別の遺伝子に分けると、草食・狩人・腐肉食の三つの行動が画面で見分けられる。ただ腐肉食はずっと少数派。死骸は生きた獲物より小さい資源で、それで食える数に上限がある。現実のハゲワシが希少な特殊者なのと、たぶん同じ理由。

コストのかかる装飾と、それを好む選好。装飾は派手なほどモテるが、エネルギーを食う。選好の強い個体ほど派手な相手を選ぶ。装飾と選好が連鎖して暴走し、集団全体が派手になる(性選択のいわゆる runaway)。これも一方向に暴走するだけで、二つの型には割れない。

どちらも新しい型を作って、新しい種は作らない。(genepool.toming.app でそのまま動く。死骸に群がる腐肉食も、金色に暴走する装飾も、画面で見られる。)

遺伝子のオンオフと捕食価格の総当たりも掃いた。128通り×価格×各8回。どの組み合わせでも種分化は完成しない。千回に一回くらい偶然起きるだけ。肉食と性選択を同時に入れると、コストが重なって世界が半分死んだ。

生態・同類交配・溶接の三段がけ

道具が三つ揃っていた。トリレンマの三脚を、それぞれ別の道具が一本ずつ埋める。

  • 生態(捕食価格2.5)が、二つの型を維持する。脚(a)。
  • 似た肉食性どうしで交配させると、型が系統として続く。草食から肉食が湧き直す周期が止まって、溶接が連結する相手の系統ができる。
  • その上で溶接が、中立マーカーを型に結ぶ。脚(b)。

三つとも単独では一度も種分化を完成させていない。三つを同時にかけると、16回中2回で中立DNAが型と一緒に分かれた。一つの汎交配プールの中に、生殖隔離した二つの栄養モーフ。中立隔離の指標は4.57、かき混ざっている値(1.1)の四倍。草食の親から肉食の子が生まれる周期が、その回では止まっていた。

完成は少数派のまま。長く回すと大半の回は型が一つに潰れるか、集団が死ぬ(20万ステップで16回中3回絶滅)。三脚を全部押さえても、押さえきれた回だけが完成する。トリレンマが消えたのではなくて、三つのコストを一度に払って、たまたま全部成り立った回だけが残った。

「揃う回」は増やせるか

三脚を押さえても完成は16回中1〜2回。残った問いは一つだった。この「揃う回」を増やせるか。 足りないのが計算量や規模なら、押せば増えるはず(大きな言語モデルが計算とデータを増やすほど良くなるように)。押せる軸を片っ端から押してみた。

時間。 同じ設定をただ長く回す。中立隔離の指標の平均は、2.5万ステップの1.0から10万で1.46まで伸びて、そこで止まる。20万→40万は1.57→1.59、計算を倍にして壁時計を5.5倍払って、ほぼ動かない。一方コストは止まらない。絶滅は0→0.25、二峰の多型(脚a)は崩れて肉食性のばらつきが0.28→0.06。指標は伸びず、損害だけが積み上がる。増やすほど良くなる、の逆だった。

次元。 軸を一本増やす。Gene Pool の休眠していた「食物タイプ」の仕組みを起こして、植物の餌をK種類に分け、各個体が一種類しか消化できないようにした。肉食性とは独立した、もう一本の資源特化軸だ。価格を合わせると、3資源で2〜3の食性モーフが絶滅ゼロで共存し、個体数はむしろ増える。脚(a)も脚(c)も次元で買える。ところが中立DNAは分かれない(指標1.3前後)。食性で交配を選り好みする仕組みが無いので、モーフは自由に交雑する。生態的な次元をいくら足しても、また「犬種」が増えるだけで、脚(b)には一切効かなかった。

軸を変える。 ならその食性軸に、三段がけ(生態+同類交配+溶接)をまるごと載せ替える。動いた。食性軸の合成は20万ステップで中立隔離1.73、肉食性軸の1.77とほぼ同じ。完成率も同じくらい稀だった。しかも食性軸の方が絶滅ゼロで集団も大きい。種分化は肉食性に固有の現象ではなく、三段がけの仕組みそのものが生むもので、別の生態軸でそっくり再現できる。けれど天井は同じだった。

二本同時。 肉食性軸と食性軸の両方に合成をかける。中立DNAの片半分を肉食性に、もう半分を食性に溶接して、各軸が自分専用のマーカーを持つようにした。結果は予想を超えて、むしろ悪化。完成は0/16(一軸の1/16すら下回る)、絶滅は0.44に上昇、隔離の平均も最大も下がった。溶接を二分するとマーカーの解像度が半分になり、集団が組合せモーフに断片化して、各モーフが小さすぎて中立信号がまとまらない。「固定された容量を割ると飢える」が、今度は生殖モーフのレベルで起きた。第2軸を assort だけにすると隔離の高さは記録更新(最大4.64)するが、それでも完成率は動かない。

並べてみると、時間軸の飽和と同じだった。完成率 ~1/16 は、計算でも次元でも軸でも二重溶接でも動かない。押せば運の良い回の隔離は深くなるが、揃う頻度は上がらず、無理に積むと断片化で下がる。トリレンマは見えただけでなく、容量や軸を変えても効いていた、ということになる。

結論

同じプールの中でも、新種は作れた。ただし三つの条件を全部同時に満たして、しかも稀に、絶滅と多型喪失と引き換えに。現実で、遺伝子が行き来する状況の種分化が難しくて議論も多いのも、たぶん同じ構造だからだと思う。

ここまでが、Swimbotの水槽で新種を一匹(正確には二つの型)作るのにかかった全部。確実に毎回出す設定は無い。そして「三つが揃う回」を増やせるかも、計算量でも次元でも軸でも押せなかった。足りないのは規模ではなく、三脚が同時に成り立つ確率そのものらしい。そこを動かす手は、まだ思いついていない。

この種分化は、一連の実験で予測が次々に外れた中の一つだった。腐肉食がなぜ希少なままか、休む個体がなぜ集団を縮ませるか、といった別の外れ方も含めて、「当てに行って外れる」体験そのものは別稿「進化シミュレータを作ったら、自分の予測が片っ端から外れた」に書いた。