2017年9月19日火曜日

病理の話(122) 生命のプログラム

人体を守る仕組みのひとつに、

「リンパ球がばいきんを攻撃する」

というシステムがある。

言葉で書くと簡単だ。

たとえ話をするならば、リンパ球は警察官で、ばいきんは犯罪者である。



けれど、リンパ球には「脳がない」。

細胞1個だ。脳も手足もない。単なる「まるいつぶ」である。

そんなつぶが、どうやって犯罪者を認識して、どうやって倒すというのか?

そもそも、まるいつぶにそんな警察官みたいな役割が果たし得るのか?



もともと受精卵という1個の細胞が、分裂を繰り返して、何兆という細胞にばけて、今のぼくらの体ができている。

その一部を、わざわざ「まるいつぶにして」、「警察官の役割を担わせて」、「犯罪者の顔を見分ける能力をあたえて」、「犯罪者を逮捕したり、直接罰したりする能力を与える」。

こんな複雑な命令、いったいどうやって与えているのだろう。



人体の細胞がどのように働くかを、適材適所、適切なタイミングで命令しているのは、ざっくりと言うならば、

「DNA」

によって記載されたプログラムであるという。

気が遠くなる。

いったいどれだけ精巧なプログラムを書いたら、こんな複雑な仕事ができるのだろう?




……と、このような記事を書いて、ブログにアップしているぼくは、ふと気づく。

このブログ作成ページだって、プログラムで書かれているわけだよね。




コンピュータプログラムはご存知の通り2進法だ。

0(電気を通さない)と1(電気を通す)の2通りを組み合わせて、無数の言葉を生み出す。

0と1だけで、日本語を自由に表示させたり、行を変えたり、ブログのデザインを決めたり、リンクを飛ばしたり、なんでもやってしまう。

さて、プログラマーは、実際に「0と1」を使ってプログラムを書いているのだろうかというと、確か、そうじゃなかったはずだ。

ぼくはあまり詳しくないけれど。

「言語」を使っているんじゃなかったか。

0と1だけでプログラムを記載するわけじゃなくて、もう少しだけ人が使いやすい言葉に置き直して、プログラムを書いているんじゃなかったかな。

C言語がどうとか、ジャバがどうとか、あったよ、確か。




では、人間の体をコードするプログラムはどうやって書かれているか。

4進法で書かれているのだ。

A(アデニン)、G(グアニン)、C(シトシン)、T(チミン)。

0と1の2進法よりも、組み合わせが多い分、複雑なプログラムが書ける。

けれど、このATGCだけを使ってすべてのプログラムが書かれているわけではない。

プログラマーが、キーボードで010010110111010と入力してプログラムを書いたりしないように。

「生命をプログラムしたプログラマー」も、ATGCだけでプログラムを書くのはやばいと思ったのだろう。

ATGCを3つずつ組み合わせ、「言語」を用意した。

「AGC」のセットを、「セリン」という物質に対応させる。
「GAA」のセットを、「グルタミン酸」という物質に対応させる。

ATGCの4進法でそのままプログラムを書くのではなくて、ATGCから3つずつの組み合わせをつくり、これらを20種類の「アミノ酸」という物質に対応させた。



いきなり4種類の文字だけですべてを書こうとするのではなく、4種類の文字の「組み合わせ」(コドン)を言語として設定。

コドンAGCがプログラムに出てきたら、それはつまり「セリンという部品をここにおいてくれ」というサイン。

コドンGAAがプログラムに書かれていたら、「今度はグルタミン酸をここにおいてくれ」というサイン。

つまり、AGCGAA と書かれていたならば、セリンとグルタミン酸を隣同士においてくっつければいい。




4進法のプログラムを3文字ずつ読みながら、20種類のアミノ酸を次々と並べていく。

アミノ酸がつながっていく。

つながってできたものを、「タンパク質」と呼ぶ。聞いたことがあるだろう。タンパク質。



細胞というのは結局のところ、すべてこの「アミノ酸を連ねてできたタンパク質」によって作られていると考えてよい。

アミノ酸は20種類のレゴブロック。

20種類あれば、たいていの形をつくることができるだろう。レゴで作った建物とか乗り物がタンパク質に相当する。





この仕組みを細かく研究した人が、ある日、思った。「生命すげぇな、4進法でなんでもやっちゃってるよ」。

そして、こんなことを考えた。

「パソコン上の仮想空間に、4進法で記載される『単純な法則』を用意する。1秒あたりに1回、その『法則』が作用して、『ある図形』の形が変わるようにプログラムする。パソコン上で何十億年という時間を再現したら、その図形は”生きつづける”だろうか?」

生きつづける、というのはたとえ話だ。

「ごはんをたべて、周りに影響をあたえながら、ときに敵と戦い、繁殖をして、個体が死んでも種族としては生き続ける」。

コンピュータ上の図形を、あたかもそのように「みなす」。

コンピュータ上で放っておいてもうにょうにょ動き続け、形を変え続け、存在しつづけるかどうか。ほんとの生命ではない。遊びみたいなものだ。

「ライフゲーム」と呼ばれる。




DNAが4進法なのだから。

ゲームとはいえ、「4進法」はライフを生み出す可能性がある。

コンピュータ上で膨大な時間を再現すれば、単純な「ライフ的なもの」は作れるのではないか?




このライフゲームはあまりうまくいかなかった。

4進法だけだと、何度仮想空間を設定し直しても、途中で生命としての「複雑さ」が現れてこず、バリエーションに限界が生じて、結果、不測の事態に対応できずに、「ほろびて」しまう。

足りなかったので、ためしに5進法にしてみた。

文字を増やせばバリエーションが多くなるだろう、という発想。しかし、今度は、「複雑すぎて」、図形が途中でうまく変化しなくなってしまった。



机上の空論とは便利なことばである。

本来、「○進法」という概念には、小数点はそぐわない。

0と1での2進法というのはわかる。ATGCの4進法というのはわかる。

けれど、「4.2進法」と言われたって、想像がつかないだろう。

けれど、このライフゲームにはまっていた学者は、思った。

「4進法だと複雑さがたりない。5進法だとカオスに陥ってしまう。だったら、4.2進法くらいがちょうどいいんだけどなあ……。」

4.2文字で記載するというのは意味がわからないのだが、ためしに、やってみた。




すると、うまくいってしまった。図形はいつまでも、うにゃうにょと変化し続けて、それはまるで新種のアメーバかなにかを見ているかのようだった。

「え……? どういうこと……?」




生命の複雑さを記載するには、どうも、単なる4進法では複雑さが足りないらしい。

人間って、ATGCの4進法でプログラムされているはずなんだけどなあ……あっ!




学者は思いついた。

DNAはATGCの4文字だけど。

RNAになると、AUGCの4文字にかわるんだよな。確か。

T(チミン)が、なぜかU(ウラシル)と対応するんだ。

これ、文字を「ちょっとだけ増やしている」のかもしれない。



それに、DNAにはほかに「修飾」とよばれるシステムもある。

メチル化とか、アセチル化とか。文字にかざりが付くのだ。

これも、文字を「ちょっとだけ増やしている」のかもしれないな。




生命って、4進法じゃなくて「4.○進法」くらいなのかもしれない……。




(一部ぼくが適当にいじっているのでフィクション化してますが、そのような仮説が提唱されたことは実際にあるそうです。)