ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2010-02-22

ウェブガイア仮説 〜 コンピュータと生物の不思議な類似点 〜

Publickeyに「サーバは「単体」から「群体」へと進化中」という記事があったので、それに刺激されて筆をとってみた。本稿は、以前書いた「コンピュータ業界の展望と多様性」というエントリの続きである。今回は、コンピュータシステムの形態(トポロジ)とトレンド、そして今後の展望について、生物とコンピュータシステムの類似性および両者の比較を用いて様々な側面から自分の見解を論じてみたい。かなりの長文エントリなのでその点はご容赦を。

細胞とコンピュータ

コンピュータ(もしくはコンピュータシステム)と生物には、驚くほどたくさんの類似点がある。改めてその類似点を比較してみると、それが偶然の一致ではなく、そこには必然性があるように思えてならない。生物はご存じの通り細胞から成るが、細胞と一台のコンピュータが同じレベルのものであると過程すると、コンピュータと生物の間はかなり多くの共通点が見えてくる。「複雑な構造を持ったコンピュータがたかだか細胞一個分に相当するだって?!」と噴飯する方も居るかも知れない。しかし、それは細胞に対する知見の足りなさから来る誤解であり、事実として生物の細胞はコンピュータよりも遙かに複雑な仕組みを持っている。生命という神秘に満ちた活動の根幹を成す細胞は、まだ人間の理解が完全に出来ていない領域である。その構造が中学の教科書に載っているようなシンプルな(まるで袋の中にごちゃ混ぜに色んな組織がただ詰まっているだけの)ものではなく、非常に複雑で整然とした構造を持ったものであるということは現在の科学でも既に分かっている事実である。細胞の組織ひとつひとつ(核、ミトコンドリア、リボゾーム、ゴルジ体など)をそれぞれ建物に例えると、細胞はひとつの都市であると言える。各種物質(外界から取り入れられた養分、細胞内で生成されたたんぱく質、老廃物など)は組織の間を定められた通路に沿って移動し、それを必要とする組織へ整然と運搬される。それは「組織がただ詰まっているだけ」の雑多な状態ではなく、とても整然として秩序だった活動なのである。

細胞は我々の「生命」という神秘そのものであり、その構造は極めて複雑で、未だ謎に充ち満ちているが、細胞内部の活動について、我々が何も知らないわけではない。DNAは遺伝子であり、A、C、G、Tという4つの記号から成り立っていること、DNAを部分的に転写してRNAが生成されること、RNAのコードを使って20種類のアミノ酸を原料にしたたんぱく質が生成されること、生成されたたんぱく質が様々な活動を行うこと(栄養を取り入れたりエネルギーを作り出したり細胞分裂したり・・・仕事のすべて)などである。ヒトのDNAには30億以上もの遺伝子配列がある。DNAはA、C、G、Tという4つの記号から成り立っているので、その情報量は4^30億=2^9,000,000,000,000,000,000ビット以上であると言える。遺伝子という細胞内のごく小さな組織を取り出しただけでも、現在のコンピュータシステム一台の能力を遙かに超える情報量を保有しているのである。

ここで、コンピュータと生命活動には、一つ目の類似点がある。細胞内で実際の活動をするたんぱく質が合成される過程と、コンピュータ内で実際のお仕事をする「プロセス」が生成される過程が似ているのである。コンピュータシステムにとって、その活動の設計図、即ちDNAに相当するものはソースコードである。ソースコードはコンパイルされ、実行形式のバイナリが生成される。バイナリはメモリへロードされ、共有ライブラリとリンクされ、最終的にはプロセスとなって実際の処理を担当する。つまり、次の図のような対応関係があるように見える。
生物がRNAを生成する一因は、たんぱく質の生成をよりたくさん同時に行うためであると考えられている。生成されたRNAは細胞の隅々まで運搬され、その指示に従ってたんぱく質が合成されるのである。コンピュータシステムの場合、バイナリ形式のプログラムは一瞬でメモリへロードすることが出来る。つまり、「プロセスを素早く生成してよりたくさん同時に実行する」ことが出来るのである。RNAはよりたくさんのたんぱく質を合成するため、実行形式のバイナリはより高速にプロセスを実行するためのフォルムなのである。

これは偶然であろうか?否!私はこれが必然の産物であると考える。コンピュータシステムにとって最も最適な形態は、生命に近づくようにならざるを得ないのだと。この仮定を逆説的に考えると、生命の本質というものはコンピュータと基本的には変わらないのではないか?という仮説も成り立つ。生命はDNAの情報を根源にして全ての活動を行っているわけであり、細胞とはある種の情報処理機械であるという仮説である。すなわち生命とはコンピュータなのであると。

群体

生命系には群体という形態の生物が存在する。群体とは、集まって(群れなして)活動するタイプの単細胞生物である。日本人にとって最もなじみ深い群体は、理科の教科書に登場するボルボックスではないだろうか。群体では、それぞれの細胞同士は繋がってはいないが、多数の細胞が密集して生活することにより、役割分担をするケースもある。例えばボルボックスの場合、外側の細胞は光合成に従事し、内側の細胞は生殖活動に従事するといった具合だ。多細胞生物へ進化する一歩手前の状態であると言える。

Publickeyの記事では、サーバーは単体から群体へ進化中であると述べられているが、一台のコンピュータをひとつの細胞に例えると、既に群体への進化は完了している。N層型のアーキテクチャ(下図参照)がまさにそうである。フロントには多数のWebサーバー(静的コンテンツを提供)、中間にアプリケーションサーバー(動的コンテンツを提供)、バックエンドにデータベースというような構成で、それぞれのレイヤーにおいてスケールアウトのためにサーバーをズラリと並べるというのが普通である。それぞれのサーバーにはロードバランサなどで負荷が割り振られる。そのようなアーキテクチャはまさに群体そのものである。個体同士は密結合していないし、機能的には役割分担している。

従って、筆者の見解はPublickey(のさらに元記事)とは異なる。コンピュータの、特にサーバーサイドアーキテクチャの進化の過程としては、群体への進化というフェーズは既に完了しているのである。

クラウドとは何か?

「クラウド≠群体」であるが、クラウドを使って構築されたシステムは必然的に群体のような構造になることが多い。クラウドとは、好きなように群体のためのパーツをスケーラブルに構築するためのインフラである。

大規模なWebサービスを提供する企業、例えばGoogle、Facebook、Salesforce、ミクシィ、グリー、DeNA、楽天、ライブドア、はてな、Dwango等々においては、まさに「群体」のようなトポロジーをもってシステム(サービス)を構築している。そのようなWeb企業は、自分たちでサーバーを管理して必要に応じて追加するが、インフラを自分たちで構築するということは、必然的にエンジニアにサーバー管理のための高度なスキルが求められるということだ。従来、群体のようなトポロジーはそのようなスキルを持った企業だけに許される特権であり、それがWeb 2.0企業のアドバンテージであった。しかしながら、AmazonやGoogleに代表されるようなクラウドインフラを提供する企業が登場することによって、インフラを利用する敷居が格段に下がり、比較的容易に誰でも群体型のアプリケーションを構築出来るようになった。それがクラウドの真の姿である。

仮想化とは

コンピュータの仮想化を考えるとき、コンピュータにとっての個体(つまり一個の単位)を、ハードウェアである考えるか、その上で動作するホストであると考えるかで見方が変わってくる。

コンピュータにとっての個体がホスト(≒OS)だとすると、コンピュータシステムにとってハードウェアは本質的なものではないと考えることが出来る。仮想化によってホスト=コンピュータという存在はハードウェアから解き放たれ、その行動範囲を新たに広げたと捕らえることが出来るだろう。生命が海底深くに存在する火口周辺から海中の至るところへ、海水から淡水へ、水中から陸へ、空へと行動範囲を広げたのと同様、仮想化はコンピュータの行動範囲の広がりを予感させる。

一方で、物理的なマシンがひとつの個体であると仮定すると、一台のハードウェアに多数の仮想ホスト(つまりゲストOS)が収まっている形態は、トポロジ的には多細胞生物であるといえる。現時点では、仮想ホスト同士は完全に独立した状態なのが普通なので、ひとつのマシンを個体であると見なすのは多少無理があるように思える。(しかも各ホストは全く異なるサービスを提供していたりする。)しかし、仮想ホスト同士が協調して動作するような仕組み(例えば共有メモリによる高速な通信など)が発明されて普及し、仮想ホスト同士が密結合してひとつのシステムを形成するようになったりすると、それは個体として見なすことが出来るようになるかも知れない。

いずれにしても、仮想化技術はコンピュータにとってその在り方を変える、エポックメイキングな技術であることは間違いないと言える。

ウィルス

コンピュータウィルスとは誠に言い得て妙である。自然界のウィルスとコンピュータウィルスの、何と類似点が多いことか。

ウィルスが生物かどうか?ということについては、未だに議論が続いているテーマである。ウィルスは本体であるRNAと、それを取り巻くたんぱく質から構成されており、全て形が決まっている。(細胞のように大きさが違ったりすることはない。)一律の形をしているので、一定の条件下では結晶化することすら可能だ。そのような結晶化した物質は、その時点で生命活動を行っているわけではないので、生物であると見なすことは出来ないだろう。ウィルスは宿主となる生物があって初めて活動が可能になる。ウィルスは宿主である細胞に侵入し、そのリソースであるアミノ酸などを使って自らのRNAを複製・たんぱく質を合成するのである。ウィルスが活発に活動し過ぎると、時として宿主を殺してしまう。そして他の宿主へ侵入し、その複製を延々と増やし続けるのである。

これはまさにコンピュータウィルスと共通した性質であり、ここでもコンピュータと生命の間に類似点を見いだすことが出来る。コンピュータウィルス自身は単体では何の役にも立たないプログラムであるが、宿主となるターゲットへ侵入して自らのコピーを蔓延させたり(これはワームというが)データを盗んだり改竄したりといった悪事を働く。自然界のウィルスとコンピュータウィルスが異なるのは、後者が悪人の手によって産み出され、攻撃の手段として悪事に利用されているということだろう。

なお、余談であるが筆者はウィルスを生物と見なすべきではないと考えている。ウィルスはウィルスであってそれ以外の何者でもないからだ。生物と無生物という2つのカテゴリに押し込むのが、そもそも間違いであると言える。

コンピュータにとっての養分

生物は養分として外界から各種物質を取り入れる。それらはもちろん活動のためのエネルギーであると見なすことも出来るが、生物学的には「個体のエントロピーを保つために養分を取り入れる」という見方もある。例えば、福岡伸一氏の名著「生物と無生物のあいだ」では、次のように生物のエントロピーについて述べられている。
生きている生命は絶えずエントロピーを増大させつつある。つまり、死の状態を意味するエントロピー最大という危険な状態に近づいていく傾向がある。生物がこのような状態に陥らないようにする、すなわち生き続けていくための唯一の方法は、周囲の環境から負のエントロピー=秩序を取り入れることである。実際、生物は常に負のエントロピーを"食べる"ことによって生きている。(149ページから引用)
自らの内に負のエントロピーを取り込み、外界にはエントロピーが最大化した排泄物を送り出すのである。これによって生物のエントロピーが保たれるという。(外界のエントロピーを最大化させるのが生命の根源的な営みであれば、人類による環境破壊は実に自然な営みであると考えられ、自然破壊を止めるにはやはり人類が活動を停止しなければならないという帰結が導き出されるが、この点について深掘りしすぎると議論が散乱するので辞めておく。)

それではコンピュータシステムにとっての"食べる"という行為は何に当たるのであろうか?エントロピーという観点に立って考えると、コンピュータシステムにとっての入力は「データ」であると考えられる。コンピュータはデータを取り込んで、エントロピーが最大化した状態のデータ、即ち加工済みのデータを排出するのである。処理するべきデータがあるからソフトウェアが開発されるのだが、全てのデータを処理・加工し終えた状態は、もはや処理するべきデータが無いという意味でそのソフトウェアは用無しであり、エントロピーが最大化した状態=死であると言える。そのようなソフトウェアは起動されることもなく、過去の遺産として世の中から徐々に消えていくことだろう。逆に、処理するべきデータがある限り、コンピュータシステムは活動・改良する余地があり、生き続けるのである。

ハードウェアは度々「ソフトウェアがなければタダの箱」と揶揄されるが、ソフトウェアだって「データがなければタダの抜け殻」なのである。



データベースの存在意義

データがコンピュータにとっての養分だとすると、データを保管したり取り出したりする「データベース管理システム」は栄養の貯蔵庫に当たるだろう。より効率的に、多くのデータを蓄えられるシステム(ソフトウェアもしくはサービス)のほうがエントロピーが高く、従って寿命が長くなる可能性が高いと言える。データを保管することはコンピュータシステムにとって必須の技術要素であり、コンピュータシステムの進化に伴ってデータが増加するというトレンドは今後も変わることはないだろう。

データを上手に管理出来るのは「リレーショナル・データベース管理システム」だけではない。KVSのようなデータベース管理システムもあれば、ファイルシステムだって立派なデータ保管庫である。Drop Boxのようなオンラインストレージも重要な技術である。

データをどれだけ上手に保管、管理、検索するかという技術は、これからもコンピュータシステムにとって必須の主要技術であり続けるだろう。その結果、データストアの技術はもっともっと洗練され、多様化し、常に進化し続けるに違いない。今後どのようなデータストア技術が登場してくるかが非常に楽しみである。しかしながら、データストア技術の進化によって従来型の「リレーショナル・データベース管理システム」が不要になるということはないと予想している。多様化は爆発的に進むものの、それらは互いに棲み分けをし、その中心的な存在として「リレーショナル・データベース管理システム」は長らく鎮座し続けることになるだろう。

垂直統合と共生

真核生物の細胞内にあるミトコンドリアや葉緑体が、細胞内共生細菌が起源であるということは、広く知られている。それらは、元々共生していた生物を起源として、それら複数の種類の生物が融合して進化したものである。共生とは、異なる種の生物が共に作用し合って生きることであり、共生という現象そのもの、あるいは共生している生物が融合して一個の生物になるという現象は、生物界ではしばしば見かけられる。

Publickeyの別の記事によると、近ごろ色々なベンダーがコンピュータシステムの「垂直統合」を謳っているようだ。元々は独立したソフトウェアやハードウェアを組み合わせて、ひとつの大きなシステムに仕上げることは、まさにコンピュータシステムにおける「共生」である。共生であれば、個々のパーツが融合して独自に進化する道も考えられるだろう。例えば、そのような共生型=垂直統合型のシステムについての全体最適を考えるなら、個々のパーツに対して専用のチューニングや改良を施し、さらに完全に元のソフトウェアから独立(fork)するようなケースも想定される。それはまさに生物界で起こっている現象と同じであり、コンピュータシステムにおける「ミトコンドリア」の誕生であると言える。

ハッカーは神

もし、コンピュータによって構成される「電脳界」をひとつの世界に例えるなら、ハッカーはまさにその世界の創造主、つまり神であると言える。世界を創造することのなんと楽しいことか!ハッカーがコンピュータに惹かれ、プログラミングに没頭する理由はまさにこの点に尽きる。一度知ってしまったら辞められない世界である。ただし、ひとりのハッカーが全知全能の神になるということはない。無数に存在するハッカーの一人として名を連ねて、特定の部位について電脳界に新たな秩序を吹き込むだけに過ぎない。しかし、それだけだとしても創造とは面白くてたまらない行為なのである。

ところで、マスコミが使う「ハッカー」の意味をもって上記の文章を読まれた方は、「はぁ?ハッカーが創造主?悪者でしょ?何をワケわかんないこと言ってるの?」と思われるかも知れない。しかしそれは「ハッカー」という言葉の誤用である。「ハッカー」の本来の意味は「オールマイティに様々なコンピュータ技術に通じる人々の総称」であって悪意ある攻撃者のことではない。悪意ある攻撃者のことはクラッカーとして区別されるが、リテラシーの低いマスコミが率先して誤用をして攻撃者のことをハッカーと記載してしまっているため、誤用が世の中に浸透してしまっているのが現状である。そのような誤用はコンピュータエンジニアの地位を貶めるものであり、誤用をしてしまう記者は(干されて)居なくなれば良いと思う。詳細はウィキペディアの記事を参照のこと。

コンピュータシステムの進化

生物とコンピュータシステムの大きな違いのひとつとして、生物は個体が子孫を残す際に突然変異によって進化(あるいは退化、もしくは死亡)するが、大規模なコンピュータシステムでは同じ個体がその形を保ったままで、どんどんとソースコードが入れ替えられるのが普通である。(ハードウェアも入れ替えられるよね!)もちろん、メンテナンスなどでサービスが停止する場合もあるが、それでも復旧後には以前と本質的には変わらないサービスを提供する。同じサービスを提供しつつも、その遺伝子であるソースコードの中身が入れ替わっているのである。つまり、コンピュータシステムは一個の個体が進化し続けるのである。これは、生命にはない特徴である。

生物の進化に学べ!

生物は40億年もかけて進化を続けてきた。よって今ある生物の姿は素晴らしく洗練されたものである。コンピュータと生物が似通った性質のものであるとすれば、我々は生物から多くのことを学び、模倣することで、コンピュータが今後どのような進化を遂げるかということについて占うことが出来るし、それによりコンピュータの進化を加速させることが出来るだろう。従って、ハッカーたるもの生物について(主にその構造について)勉強しなければいけないのである。

生物の多様性については、岩槻 邦男著「生命系―生物多様性の新しい考え」が分かり易い。



ハードウェアはソフトウェアと共に進化する

これまで、ソフトウェアについてばかり述べてきたが、ハードウェアもコンピュータシステムにとって重要な要素技術であることは疑いがない。コンピュータシステムにとって、ハードウェアとは活動の舞台と成る「環境」のようなものである。生物が地球環境と共に進化し、時には生物が地球環境からの不可避な影響(例えば地殻変動など)によって死滅し、時には生物が地球環境へ与えてきた(光合成による酸素濃度の劇的な向上とそれによる鉄分の酸化など)のと同じく、ハードウェアとソフトウェアは共に進化してきた。ハードウェアが進化すれば、それを設計するソフトウェアも進化する。ソフトウェアが進化すれば、より効率的に高度なハードウェアが設計できるようになる。高度なハードウェアなくして高度なソフトウェアが存在することはあり得ない。高速なCPUコア、大容量のメモリ、低レイテンシのI/Oなど、豊富なコンピューティングリソースは、ソフトウェアがより複雑に進化するため、そしてより複雑なロジックを実行するための必須の要素となるだろう。

生命と地球が共に歩んできた歴史的考察については、丸山茂徳氏、磯崎行雄氏著「生命と地球の歴史」(岩波新書)が面白いので是非ご一読を。



イノベーションは常にコンシューマ市場で起きる

またもやPublickeyを引用して恐縮であるが、「コーポレートコンピューティングの終焉、エンタープライズ2.0の夜明け」という記事では、次のようなことが述べられている。
「The End of Corporate Computing」が書かれた3年後の2008年には、日本における「The End of Corporate Computing」とでもいうべき中田敦記者による記事「さよならエンタープライズ」がITproの記事として公開されました。この記事では、もはやイノベーションの多くが企業向けではなくコンシューマ向けの市場で起きていることをはっきりと指摘した記事でした。
イノベーションがコンシューマ市場でしか起きないというのは、生物において起こっていることを考えれば驚くべきことではない。あの本川達雄氏の名著「ゾウの時間ネズミの時間」(中公新書)では、次のように述べられている。
なぜサイズの小さいものが系統の祖先になりやすいのだろうか。その理由は、小さいものほど変異が起こりやすいことにある。小さいものは一世代の時間が短く、個体数も多いから、短期間に新しいものが突然変異で産まれる確率が高い。(15ページより引用)
一般に、企業向けシステムはソフトウェアの規模という観点からすると、巨大規模になりがちである。大規模なソフトウェアは必然的にライフサイクルが長くなってしまう。個体のサイズが大きくなると進化が鈍ってしまうのは、生物でもソフトウェアでも同じというわけなのである。



分散バージョン管理システム

分散バージョン管理システムの登場は、ソースコードの進化が加速する新時代の幕開けを予感させる。特にオープンソースソフトウェアと共に用いられると、その効能は計り知れない可能性を秘めていることだろう。

生物界では、突然変異によってある種が別の種に枝分かれすることや、枝分かれした種や全く異なる種の間での遺伝子の交換が頻繁に行われている。(もちろん遺伝子の交換は突然変異の一因である。)これらの事象は、ソフトウェア開発におけるforkやmerge、もしくはソースコードの引用(拝借)に当たると考えられる。分散バージョン管理システムは、forkやmergeを格段に容易にしてくれるソフトウェアであり、ソフトウェアの進化は分散バージョン管理システムによって初めて、生物が取ってきた自然な進化の戦略を模倣することが出来るようになったと言える。分散バージョン管理システムは間違いなくソフトウェアの進化を加速させるだろう。そのような操作が出来る前提として、ソースコードが公開されていること、即ちオープンソースソフトウェアでなければならない。オープンソースソフトウェア万歳!である。

ここでひとつ問題になるのは、ソフトウェアのライセンスが何であるか?ということである。自由にforkしたりmergeしたり、あるいは他のソフトウェアからソースコードを引用したり複数のソフトウェアを組み合わせたり・・・といった操作は、どのようなライセンスのソフトウェアにも等しく認められているわけではない。数あるオープンソースライセンスの中で、このような操作に対して完全に自由が担保されているものといえば、やはりGPLを置いて他にない。GPLによるソフトウェア圏、即ちGPLエコシステムは、分散バージョン管理システムと非常に相性が良いのである。GPLエコシステムによって、ソフトウェアは飛躍的に進化を遂げることだろう。逆に、プロプラエタリソフトウェアは進化の袋小路に陥ることが予想される。エンジニア諸君!刮目せよ!!今こそGPLに目覚めるときだ!!!と、声を大にして言いたい。

ソフトウェア特許による種の絶滅

オープンソースソフトウェア開発にとって一番の驚異となるのがソフトウェア特許の存在である。ある有益な技術があり、その技術を使ったソフトウェアが開発され、そして様々に進化した様子を想像して欲しい。そのソフトウェアが様々にforkして、色んな場面で活用されている様子を。

しかしある日突然、どこかの企業がその技術について特許を主張したらどうなるだろう?その技術を使っているソフトウェアは(たとえ様々に進化している状態であったとしても)全て公開を停止しなければいけなくなるだろう。即ち、それはソフトウェア種にとっての絶滅を意味する。進化の系統樹は、そこでぷっつりと道を断ち切られてしまうことになる。
特許によって妨害されたソフトウェアが次に公開出来るようになるのは、特許の有効期限が切れてからである。開発を再開することができるだけマシだと言えるが、コンピュータの進化が特許によって大きく遅れてしまうことになるのは間違いない。

そのようなソフトウェア特許に対抗する手段は、自分が作成したソフトウェアをGPLv3で公開することである。特許の保有者は恐らくプロプラエタリなライセンスでソフトウェアを公開したいと考えているだろう。プロプラエタリなライセンスがなくなれば特許による弊害もなくなると考えられるが、それを可能にするのがGPL(特にバージョン3)なのである。大多数の人がGPLでソフトウェアを公開すれば、否が応でも特許の保有者はそのソフトウェアを利用しなければならなくなるだろう。そうすれば、特許保有者は(自分がソフトウェアを公開する際に)、特許技術が使われたソフトウェアにGPLを適用しなければならず、実質的に特許を無効化出来るのである。

ソフトウェア特許の危険性については、リチャード・ストールマン著「フリーソフトウェアと自由な社会」を参照のこと。



これからの著作権の在り方

データを"食べる"コンピュータにとっての驚異は著作権である。処理するべきデータがあって初めてコンピュータシステム(ないしはソフトウェア)はエントロピーを低く保つことが出来るのは、先に述べた通りである。しかし、加工するべきデータに対して誰かが著作権を主張していると、そのデータを加工し、再配布することは出来ない。データにとって、再配布のチャンスがないというのは不幸である。そのデータは誰の元にも届かずに埋もれてしまい、死んだ状態になってしまうだろう。

人々がTwitterやニコニコ動画、Ustreamのような「垂れ流し型」のサービスに熱中するのは、データが次々に変化するからである。即ち、そのようなサービスではデータが生きている。例えばTwitterのデータはRTやまとめ、統計情報の取得などによって新たに形を変えて、さらに多くの人の元に届くことになる。生きているデータとは伝搬力が非常に強力なのである。

一方、DRMでガチガチに守られた有料の配信サービスなどのデータは、そのように加工されて再流通するチャンスはない。世界を流れるデータを川の流れに例えると、DRMで守られたデータは淀みである。淀んだデータは文字通り時代の「流れ」に乗らない。有料配信サービスが成功しにくい理由が分かるだろう。

さて、長々とコンピュータシステムと生物について語っている本エントリであるが、ここからオチに向かってもう少し続く。以降はかなり筆者の想像力を膨らませて書いたものであるという点についてはご容赦頂きたい。(ここまでもかなり電波が入っているのは自分でも認識している。)

Web APIによるコミュニケーション

多くのWebアプリケーションにとって、Web APIを利用してマッシュアップ的な開発をすること、逆にWeb APIを公開してデータを提供することは、当たり前になってきた。Web APIは、コンピュータシステム同士のコミュニケーションであるが、それはインターネット上に流れるデータのダイナミズムを加速させる。

人間は、データのダイナミズムが大切であるということを直感的に知っている。刻々とデータが変化するものの代表格と言えば、やはり音楽である。極端な例であるが、単一の音色を同じリズムで刻む曲を想像して欲しい。それが如何に美しい音色であったとしても、人は1分も立たないうちに飽きてしまうだろう。(つまり、それを聞いていた人の脳は、その単調な音色に対してエントロピーが最大化した状態であると言える。)かといって、音色が激しく変化すればそれでいいのか?というと、そうも言い切れない。音が無闇矢鱈に変化する状態を、人は「ノイズ」と呼ぶ。つまり、人が心地よいと感じる音色は、単調すぎても変化しすぎてもダメなのである。複雑なメロディを奏でつつも、次の展開がある程度予測でき、なおかつ希に予想が裏切られる。そんな音楽が、聴き手にとって最良の音楽であると言えるだろう。(予想出来るという観点からすると、楽曲にとって「どこかで聴いたことがある曲である」という属性は重要なのであり、人は流行の曲を好んで聴くのだろう。逆説的に考えると、新感覚過ぎる曲は流行らないのである。)

インターネットを介して得られる情報にとって、最良のダイナミズムとは如何なるものであろうか。刻々と変化すると言っても、データがまったくランダムに出現するのであれば、それは単なるノイズである。ある程度人が予測でき、つまり情報の受け手が知っている情報に関連した情報で、なおかつ予想外の要素を含んでいるものでなければならない。そういう意味では、クローラーで関連する情報を拾ってきたりしたデータや、既存のデータを統計的にまとめ直したデータ、もしくはタイムラインによる過去と関連性のあるデータというのは、情報の受け手にとって心地よいデータになり得るのである。

Web APIは、このようなダイナミズムを利用して、人にとって心地よいデータを産み出すための、最も効果的な手段なのである。Web APIが発達すると、Webサービス同士がデータを補い合い、関係性が複雑に絡み合うようになるだろう。深く依存し合うサービス同士は、やがてそれぞれ単独のサービスではなく、それぞれデータを提供しあう事によってデータの「閉ループ」を構成する。データが相互に流れるようになると、一方が欠けた場合に成り立たないシステム、つまりそれ自身がひとつの仮想的なサービスとしてアイデンティティを確立するような状況になるかも知れない。そのようなトポロジーは「共生」であると考えられる。垂直統合による共生をミクロなものだとすると、Web API同士の共生は、よりマクロな視点に立ったものである。生物圏で例えれば、「垂直統合=細胞内の共生」「Web APIによる相互依存=器官の誕生」と対比することが出来るだろう。

Web APIが刻む心地よいビートが、コンピュータシステムが多細胞生物へと進化するための道であるように思えて成らない。

Web APIとOSI参照モデル

Web APIはインターネット上で「情報」を交換するための手段であるが、インターネット上で行われる通信と言えば、OSI参照モデルと絡めて考察しなければならないだろう。OSI参照モデルといえば、次のような図としてよく知られている。(詳しく知らない人は、Wikipediaのページでも見て頂きたい。)
OSI参照モデルでは、「情報」の抽象度が上がれば上がるほどレイヤーが上になり、Web、すなわちHTTPは最も上位の層に位置づけられている。ならばWeb APIはどこのレイヤーに位置づけられるのだろうか?という疑問がわき上がるだろうが、Web APIはHTTPを用いてより抽象的な「情報」を扱うものであるため、OSI参照モデルが表現する域を超えた存在であると言える。即ち、Web APIは第8層と言うべきものなのだ!

Web APIなんて単にHTTPを使って情報を交換するだけのツマラナイものでしょ!!とバッサリ切り捨ててはいけない理由がここにある。仕掛けは確かに難しくない。しかしWeb APIをうまく取り入れたWebサービスは成功している事例が数多い。Web APIを活用したサービスが成功する理由は、Web APIが「非常に抽象度の高い情報を扱うプロトコルである」という点に尽きると思う。つまり、交換する情報の純度が高いのである。

日本語がコンピュータを表現する際にもっとも不便なことのひとつに、英語で言うところの「データ」と「インフォメーション」の差を区別出来ない点、つまり両者をひっくるめて「情報」と表現することが挙げられる。「データ」と「インフォメーション」は決定的に違う。データは端的に言えば0/1や数字の羅列であり、その羅列自身には何ら意味を含んでいない。一方、インフォメーションは「意味のある情報」であり、データを解読して(デコードして)得られるものであると言える。OSI参照モデルをこの軸で見直すと、下の層は「データ」寄りで、上に向かえば向かうほど「インフォメーション」寄りの層になっている事に気付くだろう。さらにOSI参照モデルを超越し、「インフォメーション」としての密度を高めた層のひとつがWeb APIなのである。

ウェブガイア仮説

生物学の(異端的な?)学説のひとつに、地球をひとつの生命体と見なすという「ガイア仮説」というものがある。(ジェームズ・ラブロックによって1960年代に提唱された仮説である。)地球規模で見ると、生物圏は自己調節機能を持っており、地殻変動など地球の影響によってダメージを受けた場合でも、自動的に回復して活動を継続することが出来る。また逆に、光合成によって酸素濃度が劇的に向上したりオゾン層が出来たりしたように、生物も地球環境へ影響を与えている。そういった性質の側面だけを捕らえると、あたかも地球が一個の生命体のように定義出来るわけである。

「ネットワークはコンピュータである。」というモットーを掲げていたIT企業がかつて存在した。そのモットーはガイア仮説と照らし合わせて見ると非常に的を射ているのだが、ガイア仮説と同じくある程度リテラシーの高い人が相手でないと意味が通じない可能性がある。(地球は地球だろ?!ネットワークはネットワークだろ?!的な。)しかしユーザーの視点から見ると、インターネットが、いや、より限定的に言うとウェブがひとつの大きなサービスであるかのような錯覚をもたらすのもまた事実である。ハイパーリンク(死語)を辿る行為はシームレスであり、ウェブページ間に(それがどのサイトであろうが)明確な境界はない。Web APIがさらに発達すると、そのウェブサイトが表示しているデータがどのページを起源とするものかということもぼやけてしまうだろう。

インターネットは一個の巨大なコンピュータなのである。

いや、現時点ではそうなりつつあるというべきだろうか。今後はWeb APIがより一層普及し、Webサービス同士が高度に依存し合うことが予想される。そうすると、Aというサイトのデータを使ってBというサイトがサービスを提供し、Bというサイトのサービスを使ってCというサイトが・・・(中略)Zというサイトのサービスを使ってAというサイトがサービスを提供するというような閉ループが形成されることだろう。そのようなループは幾重にも形成され、データがより一層ダイナミックに流れ出すだろう。そうすると、局所的にどこかのウェブサービスが停止したとしても、インターネット全体で見るとそのダメージを吸収出来るようになるかも知れない。Web APIが発達することにより、インターネットはガイア仮説が提唱する自己回復機能を獲得するに至るのである。

つまり、インターネットはWebによってガイアに近づきつつあるのだ!

コンピュータ圏の拡大

生物圏は地球上の至る所に広がっているが、生物が存在しうる層は地表近くに限られている。(マグマに達するような地中には生物は存在しないし、成層圏に達するような上空にも存在しない。)生物圏とて地球の全てに分布しているわけではないのである。それでも、はるか古代から比べると、生物圏は徐々に広がりを見せている。生物は約27億年前に地球に磁場が作られたことにより有害な宇宙線がカットされ、浅瀬まで進出して光合成を身につけた。酸素によってオゾン層を形成して紫外線が届かなくなったことで水面にまで近づき、さらに乾燥に耐えうる身体を持つことで水中から出ることも出来るようになった。人類においては、限定的ではあるものの、有人飛行によって宇宙へまでその活動範囲が広がっている。そうやって生物は徐々にその活動範囲を広げて来ているのである。

ジェームズ・ラブロックのガイア仮説は、「地球は全体的に見ると生物のような特徴がある」という主張であるが、生物同士の繋がりは疎であり、地球の裏側で起きたことが反対側まで到達するのはかなり時間が掛かってしまう。従って、この点において、我々の常識では地球を一個の生命体として見なすのは多少無理があるように思う。地球全体が一個の生命体のようになるには、その内部で起きていること、即ち「情報」より素早く伝達するための「神経」が必要なのだ。

ウェブガイア(=インターネット)は「コンピュータ圏」と言うべきものであり、あらゆるコンピュータデバイスが「棲息する」領域である。現時点では、地球という巨大な惑星に比べると、インターネットは閉じられた狭い世界である。しかし、インターネットに接続されるデバイスは年々増え続け、ついにはIPv4アドレスは枯渇しそうなまでにその規模は拡大している。さらに興味深いのは、最近爆発的に増えつつあるモバイルデバイスが種々のセンシングデバイスを備えていることである。例えばカメラ、GPS、コンパス、マイクなどなど。センシングデバイスはまさに、ウェブガイアにとっての感覚(=センス)となって、地球上のどこで何が行われているかという情報が一気にインターネットに流れ込むことになる。それは今後ますます進化し、インターネットにとっての「感覚神経」となるだろう。

「感覚神経」によって受け取った情報は一瞬のうちに世界中のどこへでも転送することが出来る。その情報を受け取った「ヒト」が能動的に活動し、地球に対して物理的なフィードバックを行うことになるだろう。つまり、ヒトが地球にとっての「運動神経」とでも言うべきものになると考えられる。そう、つまり地球はインターネットという「神経」を着実に成長しつつあるのだ!ウェブガイアによって、「ガイア」そのものの姿も変貌することになるだろう。

地球にとって新たなフェーズの誕生である。

バイオコンピュータ

コンピュータについてマクロな視点で議論が進み、「ウェブガイア仮説」まで到達したところで、今度はいったんミクロな視点に話を戻そう。

本稿を書いている途中で、「粘菌の知性」を解明:記憶や予測も可能なネットワークというニュースが報道された。モジホコリという真性粘菌が知性を持っているというのだ。確かに現在の常識からするとこれは驚くべき発見かも知れないが、「細胞≒情報処理機械=コンピュータ」という仮説に立ってみると、別に驚くべきことではない。コンピュータなのだから情報を知性的に処理する機構があって当然なのだ。モジホコリの例は、目に見える反応をするから分かり易いのであって、実際には様々な微生物において知的活動が行われていることだろう。

ただし、そのような知的活動を工業的に利用出来るか?つまり、バイオコンピュータというものが実現出来るか?というと甚だ疑問を感じる。そもそも、生物とコンピュータ回路を物理的に接続するのは困難を極めるだろう。細胞は小さいし、絶えず動き回っている。半導体をシリコンウエハーにプリントするのとはワケが違う。また、たとえ何らかの方法で細胞と回路を結合したとしても、生物を「回路の一部」に固定し続けるのは不可能である。生命活動とは、動的な変化そのものなのだから。さらに福岡伸一氏著「生物と無生物のあいだ」を引用させて頂く。
生物が生きているかぎり、栄養学的要求とは無関係に、生体高分子も低分子代謝物質もともに変化して止まない。生命とは代謝の持続的変化であり、この変化こそが生命の真の姿である。(164ページより引用)
常に代謝し、変化し、自己複製を行う性質の物体に回路を埋め込み、それをどのように固定すればいいと言うのだろうか。もし生命を何らかの方法で固定してしまえば、それはもはや生命にとっては「死」の状態であり、何ら有益な情報を産み出すことはないだろう。

かくしてバイオコンピュータの実現は困難であると考えられるのである。

コンピュータの自律は起こりえるか?

今度は逆の可能性について考えて見よう。生物をコンピュータに応用するのは「バイオコンピュータ」であるが、今度は逆にコンピュータさらに生物に近づけるか?という話である。

生物にあってコンピュータシステムにない決定的な特徴は、生物が自律したシステムであるということ、即ち自己複製を行う能力である。コンピュータにとっての自己複製とは、ソフトウェア自身がソフトウェアを開発する能力である。現時点では、そのような「コンピュータシステムの自律」といった途方もない仕組みは想像すら出来ないが、もし仮にそれが実現したとすると、コンピュータシステムは「意志」を持ち、自律的な活動を開始することだろう。

現時点では実現の可能性は限りなくゼロに等しいが、もし仮に「ソフトウェア自身がソフトウェアを開発する」ことが出来るとしたら、その仕組みを実現するには何が必要だろうか?その要素のひとつとして、間違いなく「圧倒的なコンピューティングリソース」が挙げられるだろう。ソフトウェア自身がソフトウェアを開発する過程は途方もなく複雑なプロセスになると予想されるため、必要なデータや計算量は並大抵ではないはずだ。圧倒的に大規模なメモリ、超高速なCPUが無ければ、決して完了することのない計算が必要になるだろう。個々のコンピュータの性能が向上することも大事であるが、クラウドとして利用出来るコンピュータのノード数の増加も大事である。コンピュータリソースが、現在のものよりも1億倍ぐらい豊富になれば、その可能性の片鱗が少し見えてくるのではないだろうか。

ただし、いくらコンピュータリソースが豊富でも、それだけでコンピュータの自律が可能なわけではない。生物に例えると、いくらたくさんのたんぱく質があったところで、それが「生きている」わけではないのと同じである。40億年前に起きた生命誕生の瞬間と同じように、誰かが「誕生の瞬間」のスイッチを押さなければコンピュータは自律して活動することはないだろう。果たしてそのようなスイッチが押される日は来るのであろうか?現時点では途方もない想像であるが、いずれ遠い遠い未来、巨大になったコンピュータリソースと天才ハッカーの出現によってそのようなことが起きても不思議ではない。

種としてのコンピュータ

もし仮に、コンピュータシステムが自律を始めると、その進化を制御することは出来ない。生物が自分の進化を決定出来ないのと同じように、自律する主体は、自分の進化をコントロールすることは出来ないのである。そのような状況下においては、ハッカーは創造主の座から引きずり下ろされ、単なる傍観者となるだろう。我々人間はソフトウェアを開発するのではなく、自動的に生成されたコンピュータプログラムを観察し、それぞれの種に名前をつけたり性質を調べたりという事に勤しむようになるだろう。そう、まさに今我々が生物に対して行っているのと同じように。

量子コンピュータ

量子コンピュータは、現在のコンピュータが用いる0、1の2値からなる「ビット」を用いる代わりに、0〜1の間の任意の値を確率的に取る「量子ビット」という素子を用いて構築される、まったくアーキテクチャが異なるコンピュータである。現在のコンピュータが膨大なステップを要する問題、例えば素因数分解などを、遙かに少ないステップ数で計算することが出来るとされている。(「されている」と記載したのは、まだ量子コンピュータが実用化されていないからである。)そのような量子コンピュータの特性は、コンピュータシステムにとっては理論のジャンプであると言える。つまり、既存のコンピュータ上のアルゴリズムが「帰納法的」であるとすると、量子コンピュータ上のアルゴリズムは「演繹的」なのである。

そのような思考のジャンプは、ソフトウェア開発にとって無くてはならないものだろう。現時点では、量子コンピュータを応用してどのようなアルゴリズムを実現することが出来るかということについて、まだ明確にはなっていない。従って、量子コンピュータが「ソフトウェア開発に必要な思考ジャンプ」を実装出来るかどうかは不明ではあるものの、「ソフトウェアを開発するソフトウェア」を実現するのに不可欠な構成要素となる可能性はゼロではないだろう。

現時点では、量子コンピュータはまだ実験段階にあるシロモノであり、それが工学的に利用出来るかどうか、つまり実用的な量子コンピュータを実現出来るかどうかは分からない。しかし、量子コンピュータには生物のような能動的な活動は見られないので、バイオコンピュータよりはハードルが低いのではないだろうか。

マトリックスの世界

ウェブガイア(=インターネット)は地球の神経となり得るが、相補的な性質は多少あるものの、「自律」という生命に必須の性質を持っているわけではない。しかし、自律したソフトウェアがウェブガイアに棲息するようになるとワケが違う。ウェブガイアは自律的な活動を開始し、世界をガラリと変えてしまうかも知れない。そう、まるで映画「マトリックス」の世界のように。

ロボットを操るには高度なソフトウェアが必要であるが、ソフトウェアが自ら進化する世界では、ソフトウェアにとってロボットを操ることは至って容易なことであると予想される。ロボットを思うように操り、さらには自分で必要なロボットを作成し、自律したソフトウェアは猛烈な勢いでその活動範囲を広げることになるであろう。そうなれば、ウェブガイアにとって人間は不要である。人間が産み出したコンピュータは、やがて人間を凌駕して、人間を支配するようになるだろう。はたまた人間を滅ぼそうとするかも知れない。まさに映画「マトリックス」の世界である。ただし、「マトリックス」とは違ってヒトは超能力を持っていないので、ヒトが「自律したコンピュータ」に対抗する手段はないだろう。



新天地を求めて

もし仮に、「自律したコンピュータ」という新たな種が出現し、地球を支配したとしても、マトリックスのように「支配者が地球に鎮座している」というような構図には成らないだろう。地球上をコンピュータが覆い尽くしてしまったら、それは地球上のエントロピーが最大化されたことを意味する。エントロピーの最大化は、即ち「死」である。地球上を覆い尽くしてしまったコンピュータに残された選択肢は、「死」か、あるいは新たな「負のエントロピー」を求めた宇宙への旅立ちしかない。コンピュータやロボットは、生物よりも耐久性が高く、長期に渡って活動を停止することも可能であるから、長距離の宇宙飛行にも耐え得るだろう。他の「太陽系」のような天体まで到達したら、そこで新たに活動を開始して、発展することが出来るかも知れない。地球上の生命、つまり我々の「魂」をより遠くまで運んで生き存えさせるのは、皮肉にも、無機質なコンピュータかも知れないのである。

宇宙へ飛び立ったのはお前の脳ミソだッ!!!というツッコミを頂いたところで、今日は筆を置くことにする。

1 コメント:

岡田一矢 さんのコメント...

読ませて頂きました・・・感激です!もうなんと言っていいのやら・・・。

6年前の記事にコメントというのも滑稽かもしれませんが、あえてさせていただきます。
 
 私は脳死について考えていました。人の死とは?何を以て死とするのか?とパソコンを前に考えていたところ
ふと思ったのが、脳死状態である人と電源を付けているだけのパソコンは同じ状態ではないか?ということです。
パソコンは人で言う自律神経をもってある一定の操作を除き自動処理を行いますが、その操作する人間という「脳」がなくなれば、充電器によって電源が保たれているだけのただの機械ではないかと考えました。また、同じように脳死した人も生命維持装置といった外部の電源によって保たれている状態です。
仮にこの考えが理にかなっているのであれば、パソコン=中枢神経の脳を除いた臓器と他ならないのではないかと考えました。
(因みに中枢神経とは脳と脊髄のことを示します。)
脳死状態にある人を機械と同じだとは断言はできませんが・・・。
そこで考えて頂きたいのですが、機械で造った生物を見たことは御座いますか?
蛋白質、カルシウム、リン脂質でもなく全て金属になりますが、たとえば犬です。
犬の骨格系に忠実に造り上げた犬の形をした犬ではない犬です。
当然それは人間によって組み込まれたプログラムによって動くものであり、AIですら人間が造り上げたものです。
つまりは、機械にとって人間はある意味絶対者であり、神のようなモノであり、脳のようなモノでもある。
投稿者様が文中で述べられていた「ハッカーは神である」というものも何か類似したものが在る気がします。
 それにしても機械とは何か?パソコンは機械なのか?について本格的に議論する必要が出てくる気がしてきました。

まぁ、お恥ずかしながらこれらのことを考えていた理由は、脳死の概念や賛否が個人の宗教観や価値観によって大きく分かれるということに興味をもち、私自身で脳死を定義してみたくなってしまったためです。

投稿者様の仮説を読ませていただいた後の心持としては、本当にマトリョーシカの中にいる気分です。
もう神秘体験です。カタルシス状態です。
 
なんたってコレが生物学者でもないアラン・ケイやスティーブ・ジョブスによって創られたのかと思うと・・・。
人間は既に臓器となるものを形態的に造ってしまっているのかもしれないですね。



ライフハックができればなぁ・・・

コメントを投稿