From Darwin to Derrida その102

 

第10章 同じと違い その11

 
ヘイグによる「相同」の考察.相同を遺伝子のコピーから理解する道を示したのち,形態的相同を復権させようとするワグナー本の書評に入り,その観念的な議論を批判した.

ここからヘイグはいったんワグナーの本から離れ,遺伝システムについてのモジュール性と進化容易性を扱う.遺伝システムにモジュール性のような構造があるのであれば,それは保存されやすさや進化しやすさ,そして進化的制約に関連するはずだ.そしてそれはどう説明されるべきかが問題意識ということだろう.

 

モジュール性(Modularity)と進化容易性(Evolvability) その1

 

  • ゲノムの塩基配列はロボットの制御システムのソフトウェアにたとえることができる.とりわけ重要な役割は自分自身の組み立てを制御することだ.このような生命体をロボットに,塩基配列をソフトウェアにたとえるメタファーは,しばしば生命体の自律性を軽視しているとか,環境に対して遺伝子を優越させすぎているという観点からバカにされる.しかしこの批判は言い過ぎだ.有用なロボット制御には自律的な決定過程があるし,行動を環境からのインプットに従って調整する.この生命体とロボットの比較には,その類似点と相違点の理解には意味があるのだ.

 
生命体をハードウエアとソフトウエアから考えようという考察は多い.世の中には「すべて遺伝子で説明できる」のような説明を特に嫌う人々がいるので,この手の考察は否定されがちだということだろう.しかしこのアナロジーは進化や適応を考えるときにとても有用だというのがヘイグの考えのようだ.ヘイグはまずとるべき行動を環境に応じて自律的に決定しながら動くロボットのソフトを構築すべきソフトウエアエンジニアの立場から考察する.
  

  • ソフトウェアエンジニアリングには現在のゴール(役に立つソフトを今書く)と将来のゴール(将来に修正が容易なソフトを書く)の両方が含まれる.将来の修正を考えると,ソフトウェアは頑健(書き換えても既往の機能を損なわない)でかつオープンエンド(最小の修正で新しい機能を付加できる)であるべきだ.
  • ソフトは通常,独自のインターフェイスを持つ独立したパーツ(モジュールとして呼び出される)に分割した形で開発される.このモジュール性は現在のゴールにも役立ち(開発を分業化でき,プログラムの理解がモジュール単位で行えるので容易になる),将来のゴールにも役立つ(あるモジュールの修正は別のモジュールには影響しにくい(多面発現性の低下),独立したモジュールは使い回ししやすい).

 
開発に分業メリットがあったり(現在のゴール),将来的にソフトを修正,改善する可能性があるなら(将来のゴール),ソフトは互いにある程度独立した一連のモジュール的な構成をとる方がよいということになる.エンジニアは,効率的な開発をするべき動機があるし,修正や改善が必要になる将来が予見できるので,このようなモジュール的な構成を構築するだろう.しかし自然淘汰は分業を行わないし,将来も見通せない.その場合どう考えるべきかが問題になる.
 

  • このモジュールの将来のゴール的なメリットは遺伝的進化にも翻訳できるだろう.しかし現在のゴール的なメリットは翻訳できないだろう.ソフト開発においてはモジュールごとにテストとデバッグが行われる.うまく機能しない場合には問題をモジュールで切り分けて解決を探れる.しかし自然淘汰は分業でなされるわけではなく,コードを理解するわけでもなく,パーツごとに分けて問題解決を図るわけでもない.(塩基配列コードに)モジュールがあるとしても全体でテストするしかないのだ.すでにあるコードを維持するように働くネガティブ淘汰はコストが高い.うまくいかなかった生命体は子孫を残せず死ぬしかない.このコストは同じコードを複数の機能に向けて使い回すことにメリットをもたらす.なぜならある機能において問題が発見され淘汰されたら,すべての機能において問題が解決されるからだ.

 
ヘイグはまず現在のゴールを議論する.遺伝コードにかかる自然淘汰は分業でもないし,テストも全体でしか行えないのでこの議論は当てはまらないだろうというのがヘイグの見解だ.では将来のゴールはどうなるのだろうか.ここからが本節の中心的な議論になる.