2005年09月29日

30億文字のスパゲッティコード

スパゲッティコード
それはプログラマーにとっての悪夢。
しかし分子生物学者が格闘しているゲノムという怪物は、まさにこのスパゲッティコードなのだ。 
 
 
かつて分子生物学者は遺伝子の実体としてのDNAを見出し、
DNAがATGCという4進数で書かれたバイナリコードであることを知った。
さらにDNA配列の解読が可能になったとき、学者達はこれで遺伝子の機能解析が大きく進むと考えた。

程なくしてゲノムという未知の言語で書かれたプログラムの文法が徐々に解明されだし
いくつかのファンクションの解明が進んだことで人々はその確信を強めた。

さらにDNA解析の技術が発達し、ゲノム全体を読むことが可能になると、
これで生命機能の解明はなったようなものだという声すら聞かれた。

しかしその考えは甘すぎた。




ゲノムの森に分け入った分子生物学者は、
すぐに遺伝子と生化学的機能の関係が1対1であることは少なく
その多くが複数の遺伝子と遺伝子以外の因子が複雑に絡み合ったものであることに気が付いた。
そう、ちょうどスパゲッティコードのように。
IT用語辞典 e-Words : スパゲッティコードとは 【スパゲッティプログラム】より
別名 : spaghetti program, spaghetti code

 処理の流れや構造を把握しにくく、修正や機能の追加が困難なプログラム。

 むやみに制御を(GOTO文などで)他の部分に飛ばしたり、変数の有効範囲を必要以上に広げたりすると、後からプログラムのごく一部を修正したい場合でも、プログラム全体を読み直さないと構造が理解できないという事態に陥る。この様子を、麺が複雑に絡み合い、たった数本の麺を引っ張り出そうとしても全体がついてくる、スパゲッティに例えたのがこの言葉である。


それでも人間のゲノムの麺の本数(機能領域)は3万もないと判り、
頑張れば何とかなるかもと思っていたら、
今度はこれまで機能がないと思われていた部分が実は機能を持っていることが判明。
ncRNAというタンパク質に翻訳されないRNAが、さらに5万以上もあるとか。
こいつ等はどうやら関数実行の判定文的な役割を担っているようだ。

調べなきゃならない範囲は一気に増えたが、それでも研究者はめげずにやっている。
どうにかこうにか単機能関数をかなりいじれるようにはなったが
複数の関数が関わる機能についてはまだ当分お手上げだろう。


もしもインテリジェントデザイナーが存在するのだとしたらそいつはものすごく面倒くさがりで
新しい機能が必要になったときは適当にその辺の関数を書き換えたり、
あるいは他所からコピペで持ってきたり、
コードの保守性なんて全くお構いなしに、
動けばいいや程度の意識でDNAをいじくり回していたことは確実だ。

おかげでDNAはあちこちコピペやたらいまわしの痕跡が残っているし、
使われなくなった関数も消されないからあちこちに残っている。
派生系統が違えばコピペすら出来ず、同じ機能なのに生物種ごとに一から設計しなおすなど日常茶飯事だ。
きっと開発チームごとの連携がまったく取れていないのだろう。

コードの保守性が最悪だから、
かつて侵入したウイルスの断片すら消されずに残っている始末である。
全くもって無駄だらけだ。

しかしそのスパゲッティコード性ゆえに開発者達以外は迂闊にいじることも出来ない。


おまけにDNAのファイルシステムには欠陥があって、コピー時に時々エラーが生じる。
インテリジェントデザイナーもさすがにエラー補正システムにはそれなりに気を遣ったみたいだが
それでも全てのエラー回避には程遠い。

既に使われなくなった部分に起きたエラーならまだいいのだが
重要な関数に致命的なエラーが起こったらご愁傷様でしたということで、
その顧客との付き合いはそれっきり。
それでも日々新しい顧客が増えるので、今のところ客に困ることはないようだ。
もっとも環境の変化にコードの改修速度が追いつかず、
顧客が全滅して閉鎖の憂き目に会ったチームも少なからず存在するようだが。


もしもインテリジェントデザイナーが存在するなら、
そいつらはこんな存在なんだが、これってどうよ?
少なくとも私なら、自分のコード管理をこんな連中に任せるのは勘弁願いたい。

それに分子生物学にも少し首を突っ込んだことをやっている身としては、
どうしてもっと明瞭簡潔なコードを書いてくれなかったのかと声を大にして主張したい。
このソースコードはあまりにも…

<2007/02/24 改訂>
◆関連記事
インテリジェント・デザイン論(ID論)関連記事を振り返る

◆関連書籍
反・進化論講座―空飛ぶスパゲッティ・モンスターの福音書 (単行本)
posted by 黒影 at 05:49 | Comment(10) | TrackBack(2) | サイエンストピックス | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
  1. 以上の事実から「インテリジェントデザイナー=スパゲティモンスター」ということが厳密に実証された!
    『スパゲティモンスターの創造した人間』という非科学的な神話は人間をより高貴なものへと発展させる自覚と責任をわれわれに与えるので、スパゲティモンスターが日本人を作ったというロマンを教えるべきだ。

    初めてお邪魔するのにこれです・・・もうしませんゆるしてください
    Posted by と at 2005年09月29日 17:27
  2. 分子生物学に片足を突っ込みつつある身としては、スパゲティモンスターに良くぞコレだけ難解なコードを残してくれた!!
    と、声を大にして感謝したい。
    ここ最近、だからこそ僕みたいのに食い込む隙が残ってるのかな、などと。
    Posted by まる at 2005年09月30日 01:57
  3. ご存じとは思いますが
    http://www.geocities.co.jp/Technopolis/8931/index10.html#・火星人のプログラミングスキルを推定せよ−人間の遺伝子プログラムの似非科学
    http://www.geocities.co.jp/Technopolis/8931/index12.html#・土星人のプログラミングスキルは?-遺伝子コンパイラの似非科学
    私は何となくこの火星人と土星人が好きです。
    Posted by kamo at 2005年10月10日 00:09
  4. ソースコードを綺麗に書くのは他人が読めるようにという配慮なのです。インテリジェントデザイナーがスパゲッティーコードを書くのは彼が唯一のデザイナーであり他のデザイナーがコードを読むことを考える必要がなかったことを示唆します。

    ところで聖書によると神は(ry
    Posted by rna at 2005年10月11日 07:54
  5. >ソースコードを綺麗に書くのは他人が読めるようにという配慮なのです。
    無限の記憶能力と思考能力を持っている存在なら、そう言い切れるのですが、実際にはソースコードを綺麗に書くのは、未来に自分で見たときに理解できるようにするためでもあります。特にメンテナンスを続けていくようなプログラムの場合は、そうですね。
    やはり、神は納期に追われt……うわなにをするやめr
    Posted by at 2005年12月25日 15:23
  6.  納期が一週間じゃこんなもんですよ。
    え?詳細設計書?ドキュメント費用は別枠ですよ。
    …しょうがないなぁ概要設計書(聖書)だけ残しとくから後はなんとかしてね。

    かくして引継ぎ担当は十字架にかけられましたとさ。
    Posted by 聖夜 at 2006年12月24日 15:35
  7. 何十億年も継ぎ足しで保守作業をさせられて、さらに生物ごとにどんどん別途対応をさせられている訳ですから、神様もご愁傷様とも思ってしまいますね。
    ひょっとしてだんだんぐちゃんぐちゃんになってしまって、投げ出しちゃったんじゃないかと思うと、ちょっと神に見放されたみたいでさびしいですね。
    Posted by 終始 at 2006年12月24日 23:44
  8. 神は言った
    「納期を厳守せよ」と。

    かくして人はコードを持った。
    Posted by つまりこんなかんじ? at 2006年12月26日 01:05
  9. 4進数なのだからbinaryではなくquaternaryとするべきでは?
    Posted by 雨 at 2008年04月16日 23:24
  10. >バイナリコード

    バイナリ - Wikipedia
    http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA
    >バイナリ (binary) とは2進数のことであるが、コンピュータが処理・記憶するために2進化されたファイル(バイナリファイル)
    >またはその内部表現の形式(バイナリデータ、バイナリ形式)のことを指して用いられることが多い。

    Posted by att460 at 2008年04月17日 22:37
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/7465794
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック

ソースコードにしてハードウエア
Excerpt: ncRNAの発見で生物学のゴールは一気に遠のいたか?  という不安がある一方で「おおっ、これで一生喰いっぱぐれないぞ!」という研究者の快哉が聞こえないでもない今日この頃。RNA大陸の発見は、研究者には...
Weblog: Dog Year's blues
Tracked: 2005-09-29 23:24

前任者のプログラム
Excerpt: 大学の研究のように引継ぎが多い環境だとよく問題になるのが前任者のプログラム・・・・・・・・・イミフwwwwwwwという状態です。
Weblog: Traditional on Ice
Tracked: 2007-01-02 23:24