パーネルの法則を見直す
コンピューティングの初期の時代には、あらゆることがバッチで行われた。中央計算機室などと呼ばれる部署があって、そこが大きなメインフレームマシンをものものしく管理していた。コンピューター処理が必要な人は、プログラマーのところに問題を持って行き、プログラマーがFORTRANその他のプログラムを作ってこれをすべてキーパンチさせた。IBMカードの入った箱を受け取り、それを中央計算機室に持って行く。たいていは2段式のドアになっていて、そこで専門家に箱を渡す。忙しさの度合いによって、そのまま待っているか、翌朝もう一度行って、結果のプリントアウトと一緒に箱を返してもらう。運よくプログラムがコンパイルされて、きちんと走れば、相関係数行列といった必要なものが手に入る。このやり方はまたたくまに旧式になった。
その後、John McCarthyがタイムシェアリングソフトウエアを書き、ユーザーは優遇されている立場にあれば、端末にアクセスできて、自分でプログラムを実行したり、この方が多かったのだが、誰かそれを代わりにやってくれる人を見つけたりするようになった。それは古いバッチシステムよりずっとよかったし、ずっと速かった。しかし、それでもまだ遅かった。
マイクロコンピューターがそれをすべて一変させた。ユーザーは自分のマシンを持つようになった。80年代の初めには、数人の開発者がタイムシェアリングソフトウエアを書き始めたため、1台のパソコンを複数ユーザーが使えるようになった。私は、これは分散形計算方式とは正反対であり、コンピューター革命の法則に反することだと思った。そして私はパーネルの法則の1つを考え出した。「1人のユーザーに1台のコンピューターを」。私は後にそれをこう改訂した。「1人のユーザーに少なくとも1台のコンピューターを」。さらに後には、「1人のユーザーに、少なくとも1個のCPUを」。私は、他人と常にコンピューターを共有したい人など絶対にいないと指摘した。
Azureはその原理に反しているのだろうか?Azureの場合、確かに誰か他人に頼ることになる。クラウドサーバーファームがダウンしたり、インターネットへのアクセスが妨害されたりしたら、どうにもならない。クラウドは「あなたのデータはすべて我々が所有している」と言うのだから、そういうことになる。アプリケーションにも同じことがいえる。マシンが単一点障害の原因となることはなくても、インターネットアクセスは間違いなく単一点障害になる。
このうちのいくつかは適切なアーキテクチャーによって克服することができる。ストレージのコストは低く、さらに下がっている。クラウドにコピーを持つと同時に、データとアプリケーションのローカルのコピーをクラウドの中以外にも持つようにするのは、どうしようもなく複雑というわけではない。それは無視できない問題だ。例として、Azureを使ってエッセイを書くことについて考えてみる。ローカルのキーボードで書いているが、キーストロークはクラウドに送られる。さらに、エッセイはユーザーのスクリーンにも送られる。これを初期の時代には半二重といった。あるいは、エッセイはクラウドまで行き、クラウドが受け取ったと考えるものを送り返す。そしてそれがユーザーのスクリーンに表示される。これは、その昔「全二重」と呼ばれた。また、300ボーのモデム接続の時代に、それは手間がかかった。メッセージをタイプしても、それが自分のスクリーンに表示されるまでしばらく時間がかかった。私が「しばらく」というのは、数分の1秒から数秒ということだ。私はそうやって本を書いた人を知っているが、多くはない。今日の接続はもっと速い。しかし、衛星経由の接続では、どうしても遅延が生じる。それでも、非常に速いハードウエアがあり、技術的な対応策がある。
ほぼ同様のことがセキュリティに関しても言える。つまり、現代のハードウエアはあらゆることを暗号化して行う。それはどれも目に見えない。
クラウドコンピューティングが好まれない理由がほかにもたくさんある。だが、ほぼどんな場合にも、技術的な修正方法がある。私は性格的に自分のデータが空中を伝わっていくことに抵抗がある。だが、私がそれを毛嫌いするのは不合理だというのは認めざるを得ない。文明が崩壊することなどないと仮定しての話だが、もしそうなったら、もっと重大な問題が起こるだろう。私はローカルのコピーを持てるという保証がない限り、クラウドコンピューティングを使わないだろう。しかし、そのことはすでに保証されている。