みなさん、こんにちは。64歳のプログラマーです。
前回は、すべての細胞が同じAdmin権限(すべてのDNA)を持ちながら、なぜバグらないのかというアクセス制御のお話をしました。
今回は同じ第8章から、生命が環境の変化に応じてコードの実行スイッチを切り替える、見事な「条件分岐(If-Else構文)」の仕組みをデバッグします。
舞台は、私たちの腸内にいる「大腸菌」のシステムです。
1. 生命も「リソースの無駄遣い」を嫌う
大腸菌は、大好物の「グルコース(ブドウ糖)」があれば、それをエネルギーにして生きています。
しかし、グルコースがなくなると、代わりに「ラクトース(乳糖)」を分解してエネルギーにし始めます。
プログラマー的に言えば、以下のような優先度制御(If-Else)が、細胞内で常に動いているわけです。
c
if (glucose == true) {
// グルコースを消費(デフォルト処理)
} else if (lactose == true) {
// ラクトース分解酵素のコードを実行
} else {
// スリープモード(増殖停止)
}
コードは注意してご使用ください。
ラクトースを分解する酵素を作るのは、サーバーのリソース(アミノ酸やエネルギー)を激しく消費します。
そのため、「ラクトースがない時は、そのコードを決して実行(転写)しない」という徹底したエコ仕様になっています。
2. 分子で組まれた「論理ゲート」の美しさ
驚くべきは、大腸菌はパソコンのようなCPUを持っていないのに、物理的な「タンパク質の結合」だけでこの論理演算を実現している点です。
教科書に登場する「ラクトース・オペロン」の仕様書を、プログラマの言葉でコンパイルしてみました。
① NOTゲート(リプレッサー)
ラクトースがない時は、「リプレッサー」という遮断用タンパク質が、ソースコード(DNA)の上に居座ります。
これは、コードを強制的にコメントアウトする「物理的なNOTゲート」です。ラクトースがやってくるとこの遮断器が外れます。
② ANDゲート(CAPタンパク質)
グルコースが枯渇すると、細胞内でアラート(cAMP)が鳴り響き、「CAP」という活性化プラグインがDNAに結合します。
これが「燃料不足だから、代替コードを実行せよ!」というGOサインになります。
つまり、「遮断器が外れ(NOTの解除)」かつ「GOサインが出る(AND)」という2つの条件が揃ったときだけ、ラクトース分解コードの「実行ボタン」が押されます。
デバッグ完了:数億年前から動く「完璧なコード」
CPUもメモリもない1つの細胞が、タンパク質の立体構造だけで、これほど正確な条件分岐(If-Else)を処理している。
40年コードを書いてきた身として、この無駄のないアーキテクチャにはただただ脱帽するしかありません。
私たちの書くプログラムは、時に条件分岐が複雑にスパゲティ化してバグを生みます。
しかし、生命OSは数億年ものデバッグ(進化)を経て、これ以上ないほどシンプルで美しいロジックを完成させています。
9月のNAIST受験に向けた私の勉強ロードマップも、「if (体力 == 残存)」の条件分岐を仕込みながら、リソースを最適化して突っ走ります!
次回のデバッグもお楽しみに!

