The Fifth International Conference on Creating, Connecting and Collaborating through Computing C5 2007

Kristina Hooper Woolseyのキーノート。デジタルテクノロジーが社会、情報伝達の仕方、そして若い世代のenculturation(文化浸透とでも言うのだろうか)について。メディアの特性の分類の話はすっきりとまとまってはいたが、じゃあどうなのか、というパンチには欠けていたかも。彼女は過去にAppleAtariで、ニューメディアとしてのコンピュータの使い方についていろいろと考えてきた人である。昨日のパネルで僕が話した、OLPCやコンピュータによる分子シミュレーションの例を引用して、こちらのほうを見ながら話すのでどきどきした。

http://www.nmc.net(New Media Consortium)というものに力を入れているそうである。

ちょっと問題だったのは、発表の最後に「最近私が作った動画像です」ということで、コンピュータを大々的にカリキュラムに取り入れているアメリカの中学校2校をとったドキュメンタリー様のものを見せてくれたのだが(昔は、大勢のスタッフが手伝ってくれたものだけど、最近は自分でやらないといけないのよとか言っていた)、如何にもAlanが問題視しそうな、「子供がアプリの表層をなぞって楽しそうにしているのを見て、校長や先生が『子供がコンピュータを使っているんだよ!!今は、知識を覚えるよりは、如何に上手に検索するかの方が大事な時代になっているというのに。これはすごいことが起こっているのだ』と語ってみせる」という作りの物だった。Q&Aで、予想通りAlanが熱く批判することに。

Christine(ややこしいが、Squeakers DVDに出ている彼女)の発表は、靴下人形にセンサーをつけて、Croquet内のアバターを操作するというもの。デザイナーだけに凝った発表だ。手を動かしてから画面上のアバターが反応するまでのディレイはどのくらいか、と質問したのだが、「デザイナーだから計測なんてしないのよ。と言われてしまった。でも、遅れは無いということだったが。

高田先生のは3Dのタイル云々という話よりは、個人用スペースと共用スペースをCroquet内で作る一つのやり方をやってみたよ、という話だったのではないだろうか...(関係ないようなあるような話を混ぜる、という点においては、我々の論文のほうがひどいが)。

Sergeの発表はまずまず。同時刻にMarcの話をしていたのだが、やっぱりparallel sessionはいかんな。

BOFの司会。横川さんのデモが意外に面白かった。

晩御飯は、武田さんと横川さんとScottとSergeとひとつのテーブルについて。今回のC5の隠れた狙いは、もう少し来るはずだったフランス組、特にESUGで行った時に世話になった人をもてなす、というものだったのだが、残念ながらSergeしか来なかったのだよな。それでもこんばんは焼き鳥たくさん食べてよかったと思われる。

PowerPoint

Marc StieglerがPowerPointの批判をするときに引用していたのは、Edward Tufteの本だった。その一部はhttps://www.edwardtufte.com/tufte/powerpointからたどれるやつだな。

こちらの方に書かれているのは、実例を出して細かく批判しているが、この日記では僕も以前から思っていたおかしなスライドのについて一般化して書いてみよう。

  • 一枚のスライドに、入れ子の箇条書きが出てくる時点でおそらくは駄目スライド。2段までは場合によってはありうるが、3段ははっきり言ってありえない。
  • 「箇条書き」といいながらも、同じレベルのアイテムがひとつしかないならそれは箇条書きではない。気分で黒点を使っているだけなわけで、それは駄目スライド。
  • どうせ全部読ませるだけの言葉が書いてあって、発表時にそれを音読するくらいなら、紙で配って黙読してもらったほうが良い。読むことが全部書いてあるようなスライドは駄目スライド。
  • 意味のないクリップアートが入っている時点で駄目スライド。「疑問点」とかいうようなタイトルのスライドに、PowerPointの黒い人キャラがはてなマークを出している絵を入れているやつをみると「あほか?」と思う。
  • 背景色がシンプルでないのはすでに失敗のレシピである。某所では、背景色を黒にして、強調したい文字を彩度の低い赤や青にしている人がいたが、プロジェクターで表示したものを見ると、強調されているはずの単語がほとんど読めないくらいの勢いだった。背景色は白にしておけ。プロジェクターで表示しているときは、スクリーンの白が黒になるのだから。
  • グラフを二つ以上同じスライドに出すのはだいたい間違っていることが多い。
  • ページめくりの視覚効果、いったいなんの役に立つの?本論が退屈だから、せめて時折訪れるスライドめくりのときだけでも楽しませよう、ということか?

Alanの昨日の講演では、もっとコンピュータとは何かという話から、本来もっと強力なものであるはずのコンピュータでできることの説明を、より弱い機能しかないPowerPointに落としてから見せることは無いだろうという話があったが、そうでなくてもMicrosoftが箇条書きだけで説明できるような単純な話をする人向けに作っているソフトの機能を疑うことなく使うのは再考の余地があるだろうね。

The Fifth International Conference on Creating, Connecting and Collaborating through Computing C5 2007

というわけで、C5。まずはMarc Stieglerの招待講演。彼はSF作家でもあり、HP Labsでセキュリティの研究もしているという変わった人である。

集合知を意思決定に生かすために、多様性があり、独立していて、分散した意見を持った人々が集まる場を作り、先物市場のように意見が異なることを理解しつつ行動する人々が集まる場を作ると、かなり正しい予測ができるという話である。僕は「集合地を利用した意思決定が応用できる話もいろいろあるのはわかるが、例えばビンの中のjellybeansの個数など、数えられるものは数えるべきだし、マーケットによる失敗例もたくさんあるはずだし、掛け金が高い場合は、賭けている人はそれを成就すべく行動するので、『予測』とだけいってはいられないだろうか」と思うわけではある。チャレンジャー打ち上げの失敗原因がどこにあったかをマーケットが24時間ほどで(結果的に)当てていた話など、出てきた例題は面白かったけど。MarcはEarthWebという小説の中でOLPCを予測していたと言っていたが、どんな話だったのか知らん。彼とはOLPCの話やあるいはPowerPointを批判する話をなぜPowerPointを使ってしたのか、ということなどについてその後大分話した。

一般の研究発表は残念ながらしょぼいものが多いのだが、山宮さんによるTinLizzeとWikiPhoneの発表が(贔屓目ではなく)一番受けていた(あれ、俺も共著者だったけど)。Rickがlow latencyのTCP/IPについてなにやら言っていたな。

午後のセッションはどちらかとは言わないが、ほとんど話の通じない人が順番に出てきていたりして良くわからず。

その後は、パネルセッション。パネルほどあほらしいものはないと公言しつつ時々しているのだが、今回のははっきり言ってなかなか良かったと思う。パネリストの1人Bernard Krisherさんは、ただものではなかった。カンボジアを援助する活動を何十年もやっているのだが、病院を建て、学校を建て、インターネットのインフラを作り、ということを地道にかつMedia Labとも協力してやっていきているし、話もしっかりしているのである。もう1人のパネリスト森さんも以前からPangaeaをやっていて、Kenyaでの経験などについて話していた。その後実は僕がパネリストとしてOLPCについて話したのだが、なにしろOLPCはまだ実地テストが行われていないので、やや肩身が狭い。もしかしたら長々話してしまったかもしれないが、そこそこ伝わった、のだろうか。コンテンツが大事ということをもう一言くらい強調したかった気もするが。

近い将来にほしいものが何かといえば、Squeakで作って発表した中身をはてなダイアリーにアップロードできるようにしてもらうことだな。

質問にぱりっと答えることができず、私がOLPCに従事しているといっても、知らないディテールがたくさんあることだなと思った日でもあった。

東大での講演

(ちょっとだけ追記しました。その他1/25のあたりも見てみてください。)
"Can programming be reinvented?"というタイトルでの発表。東工大と東大で似たような発表をしたのだが、ストーリーラインが比較的新しいため、先にやった東工大での発表には反省点がいろいろあり、それが東大での発表に生かされた形になったのは否めない、かもしれない。以下は、かなり再現性の低いメモ。詳細はさらに聞いてください。「私」はもちろんAlan Kayを指します。

近所の人から、「なんで新しいコンピュータのほうがWindowsの起動やMS Wordの起動が遅いの?」、「大きいディスクがついているはずなのに、なぜ使える容量が少なくなるの?」、「アップデートをしたら、何で再起動しなくてはいけないの?」という質問をされる。なかなか良い質問である。

私自身も、コンピュータに関する疑問がある。「なぜ、コンピュータの外側にあるインターネットは異機種接続されたノードが本物のメッセージを送りあって動いているのに、ある一台のコンピュータの中はそのように動かないのか」、「Shannonの定理によれば、ノイズの上限がわかってさえいれば、どんなにノイズの乗った回線であっても、信頼性のある通信が可能である。なのに、なぜソフトウェアがクラッシュすることがあるのか」、「なぜ、今のソフトウェアは必要であると思われるよりも100倍も1000倍も多くのコードで書かれているのか」、「子供が"agents of change"であるなら、なぜ本当の子供用コンピュータが無いのか」、というものである。

Encyclopedia Britannicaは11200冊からなる百科事典で、各分冊は1000ページほどでありそれぞれ1.5インチ(?)ほどの厚さである。積み重ねると、だいたいエンパイヤ・ステートビルディングくらいの高さになる。(1/25追記:
1.5インチで1000ページというのは第14版のやつで(だから相当に薄い)、それは全35巻くらいだったそうですが、11200冊と言うのは「もしエンパイヤステートビルディングと同じ高さまでそれを積み重ねることにしたら何冊いるか」という話でした。だからこそ、Windowsが如何に大きなコードであるかということになるわけですね。)

Windows XPは一億行のソースコードからなり、Windows Officeはアプリは1.2億行くらいである。これを印刷して積み重ねると、大体エンパイヤステートの半分くらいの高さになる。アドビのものなどを足すとだいたい同じくらいの高さになるだろう。だが、本当にそれだけの意味がWindowsにあるだろうか。

人体は60兆個位の細胞からなり、各細胞は6千億くらいの分子から成り立っている。各細胞はいろいろな物質のパターンマッチングをし、お互いにメッセージを送りあって協調して動作している。が、ワトソンとクリックの発見というのはそれを記述しているのが1000バイト程度のDNAであるということだった。 (1/25追記:
1000バイトというのは小さめのバクテリアでした。塩基対ひとつは2ビットで、バクテリアはあまりjunk DNAがなくて5000対とかあるということですね。)

マクスウェル方程式は4行だけで、(相対論はその時には理解できなかったが)高校生のときに理解して魅せられた。ひとつの国の中には、しばしばお互いに敵対しているような何億もの要素(つまり人間)がいるが、米国の独立宣言というのは、そのような組織の基本ルールを定めたカーネルであるといえる。だが、弁護士というのは今のプログラマのようなもので、個々の事例ごとに判例を作ってしまう。その判例は3立方マイルにもなるが、原告と被告が矛盾する判例をもとに物事を主張し、判事が良くわからないままに判決を出す、というようなことが行われている。

システムのデザインというのは、いかにして小さなものが大きなものと相互作用していくかを考えてそれを記述しなくてはならない。
このデモに使っているのはSqueakというソフトで、Xerox PARCで作っていたものの子孫である。当時はオーバーラッピングウィンドウも発明したが、複数のデスクトップを持つシステムも作っていた。新しい作業をするときは、新しいデスクトップを作り、それらが永続化されて、いったりきたりできる。(Project Sorterを見せて)ここにあるのはそういうシステムだが、それぞれのデスクトップはウェブページのようにサーバーにおいてアクセスすることもできる。Power Pointをプレゼンテーションに使うというのは本来ばかげている。人々が作っているものは、Power Pointよりも強力なもの(powerful)のはずなのに、Power Pointというより弱いものに載せために、もともと持っていたパワーを捨ててしまわないといけない。なぜ、自分が作っているそのものを見せるようにしないのだろうか。

Altoは2.5MBのディスクを持っていたが、その時代のSmalltalkは10,000行くらいのコードで、印刷すると185ページくらいだった。今使っているのはその子孫のシステムだが、任意のオブジェクトを埋め込んでテキストのまわりこみができるDTPもあるし、子供向けのプログラミングシステムもあるし、動画のようなメディアも操作できるし、パーティクルシステムもある。

これはダイナミックなシステムなので、いろいろなことをシステム自身に問い合わせることができる。すべての実行コードサイズの和は3.5M程度、メソッド数は60000程度なので、1メソッドあたり平均で59バイトである。全体の行数は23万行程度だが、どの数字も必要よりは多くて、同じことが2万行程度でできるはずである。2万行であれば一冊の本に印刷することができるし、数冊の説明をつければ1人の人間がすべてを理解することができるはずである。我々がNSFからの資金を受けてこれからやろうとしているのは、2万行でOS、グラフィックスシステム、ネットワークシステムからエンドユーザーシステムまですべてを書いたようなシステムを作ることである。

アーキテクチャについて。ピラミッドは、ひたすら大量のごみを何十年もかけて積み重ねて、表面を大理石で覆ったようなものだった。まるで今のソフトウェアのようである。エンパイヤ・ステート・ビルディングは、3000人以下の人が11ヶ月(前に建っていたビルを破壊するところも含めて)で建てたもので、非常によく計画されていたので、ピッツバーグの製鉄所から運ばれてきた鉄がまだ暖かいうちに使われていたくらいだった。これこそが"engineering"というものであろう。engineeringという言葉を聴くと、吊り橋やジェットエンジンのことを思い浮かべるが、ソフトウェア作りはまだそこまで達していないと思う。1968年にソフトウェアエンジニアリングという言葉が作られたとき、作った人々はまだソフトウェアはまだエンジニアリングと呼べるまでに達していないということは理解していて、「そちらを目指すべきだ」という意図を持っていた。が、問題なのは、今の人は「ソフトウェアエンジニアリング」というものがちゃんと存在していると思ってしまっていることである。

ソフトウェアが達成できているのは、建築で言えばゴシック建築のようなもので、アーチの発明によって百万分の一くらいの材料によってピラミッドと同じ高さのものが作れるようになったというくらいである。いくつか良いアーキテクチャアブストラクションはある。が、アセンブラに対するFortranやAlgol、Algolに対するSimula、LispSmalltalkのように、その前にあったものに対して質的に違う抽象化を提供するというアーチのような新しいものは30年ほど出てきていない。

我々のプロジェクトで目指していることのひとつは、Mooreの法則のソフトウェア版である。インターネットは最初からscalabilityを念頭において設計されたので、14桁15桁以上の拡張をし、いろいろな機械やいろいろな言語で書かれたものが混じっていても、一度もシステムをリブートすることなく動かし続けることができた。ソフトウェアも、そのような拡張性を念頭において設計できないだろうか。インターネットは、実際にメッセージを送りあって動作している唯一のものだが、ひとつのノード上では、境界を越えた最適化が行われてしまっているために拡張性が失われてしまっている。最適化というのはほとんど定義からして境界を破ってしまうことになる。

Don Knuthのせりふとして、「このコードにバグが無いことは証明したけど、まだ試していない」というものがある。数学が取り扱うのは、本当に小さなカーネルなので証明ができる。が、コンピュータが取り扱おうとしているのは、数学が扱うよりも何百万倍も大きなものであるために、証明できる規模を超えてしまっていて実際に試さないといけないものであるように思う。プログラムの仕様検証や証明をする際に、私が思う良いアプローチは、仕様とプログラムを分けて2度書くのではなく仕様自体を最適化を徹底的に排除した形で意図が完全にわかるようにして実行可能なものとして書くことである。

この漫画は、黒板の前に二人の科学者がいて相談しているところで、左のほうにはいろいろな基礎的知識が書かれており、右のほうにはそこから導かれる興味深いものが書かれている。それらの間には、"and miracle happens"と書いてある。

Energy QM Atoms Molecules Large M cells multi cells orgs intelligent civilization

という軸を考えると、400年前は物理的現象そのものが、物理学が無かったという意味で奇跡だった。なぜいろいろな現象が起こるのかということが判っていなかった。その後化学も発達した。私が生まれたころは、生物学も奇跡だったが、1953にDNAのらせん構造が解明されて、奇跡ではなくなってきた。多細胞生物、知的な多細胞生物、そしてその集合である行動学や、文明というがなぜ今のようになっているのか、ということはまだまだわかっていないことがある。

ソフトウェアでは

Power, Logic gates, Ops, Memory, OS, networking, graphics, word processing, Viewing

というような階層があって、電源や論理ゲート、命令やメモリというものはだいたい判っている。また、エンドユーザのコンピュータのビューがどうあるべきかということには少し経験があるのだが、OSがどうあるべきか、ワードプロセッサがどうあるべきか、言語が同あるべきかということはまだ判っていないと思う。これらのことはNSFの提案書を読んでもらった方が良い。その中には、13の原理が書いてあって、1から4までと、9から13まではどうあるべきかということはかなり判っていると思うのだが、5から8までのところはまだどうやればよいか判っていない。

デモはわかっていてもう作ったものしかできないので、まずエンドユーザのビューについて見せようと思う。

そのためにModel-Tについて話したい。Model-Tははじめて大量生産された車でだが、1940年代の田舎ではまだ使われていた。一番の理由は、本当に破壊してしまうのが難しかったからである。350個程度の部品からなっていて、10代の子供が週末に完全にばらしてまた組み立てることができたし、町の鍛冶屋が壊れた部品を作り直すことができた。スパークプラグの透き間は、10セントコインの暑さを使って測るようにできていた。Henry Fordにそれはなぜかを聞いたら、「みんなゲージはなくしちゃうだろうけど、ダイムはだいたいもっているからね」と言った。ソフトウェアでも、そういうものを作りたいと思っている。

車を書いて動かせるし、すべてのオブジェクトは同じタイプのものなので、スクリプタ用のスクリプトもかけるし、ビューワの中の部品も回せたりする。フィードバックを使って、道に沿って走る車が同じプログラミング環境で作れる。似た形で、鮭がふるさとの川の匂いをたどるシミュレーションも書けるし、それを数百、数万並列に拡張して、蟻がえさを仲間に教えるシミュレーションも書ける。

テキストのレイアウトも、同じように文字をパーティクルとみた並列プログラムとしても書ける。各要素は自分の前のやつについていくことだけを考えるが、単語の途中で切れたら、単語の先頭に次の行に行くように伝える。パラグラフエディターは10個ほどの短いスクリプトで書ける。

あとはincrease byをさまざまなメディアに使う例がいくつか。大事なのは、これらは別に新しい話ではないということだが、ただ動画もシンセサイザーもモデルの部分だけを捉えるようにすれば、どれも「数行のスクリプト+ディテイル」であるということである。

、エンドユーザー向けのプログラミング環境はそういう話であった。もうひとつは、下回りのほうで我々が判っていると思っていることの紹介である。まずは、Ian とAlexのGolen Box。このGolden Boxは、入力として150行程度のBNF的なものを食わせると、その言語からネイティブコードを生成して実行するシステムを作り出すことができる。さらに、1500行程度のそのGolden Boxのプログラムを入力として入れると、同じ働きをするGolden Boxを作り出すことができる。これによって、1700行程度でコンパイラ自身も含めてプログラミング言語の処理系を作ることができる。20000行のシステムを作ると言い出した背景には、Ianによるこのシステムが存在していたことが大きい。

もうひとつは、時間のモデルを持ったオブジェクトシステムである。ロックを使った同期はいろいろなやり方が提案されているが、もうひとつ別のやり方は、仮想時刻もモデル化して、微小時間ごとにトランザクションを繰り返すようなモデルである。これはDavid ReedのNETOSで提案されたものだが、David SmithとAndreas RaabのHedgeHogなどで実装されつつある。

googleで"wiring mess"をイメージ検索するといろいろな絵が出てくるが、抽象的なレベルでは、一本のイーサーがあって、すべてのノードがそこからぶら下がっているだけである。これも、モデルとその最適化を分けて考えると良いだろう。

シアトル近郊のTacoma Narrow Bridgeは、風速が100mile per hourを越えると共振するということを計算した教授がいたそのくらいの風が吹いたときに、その教授はカメラ屋に走ってその場で橋が落ちるところを録画した。ここから学ぶべき教訓は、late-bindingということである。Butlerが言ったのは、システム作りをするための学習曲線があるが、いろいろな問題点に当たってそれを解決して経験を得て、じゃあもう一度その経験を生かして新しいシステムをもう一度作り直そうと思ったときには、Mooreの法則が学んでいたパラメータをすべて変えてしまうので、結局新しいシステムを作っても良いものにはならない、ということである。late-bindingであれば、最初からすべてのことを知らなくてもシステムを作り出すことができて、新しい経験を得たときに最初から作り直すのではなく、そのシステムそのものを書き換えて、その経験を最初からしていたかのようなシステムに変えていくことができる。

Altoは当時の金額で、$20,000、今日の価値ならおそらくは$80,000程度である。同世代のコンピュータと比べて、Mooreの法則3回分位速かったので、最適化をしなくてもいろいろな実験ができたし、最適化をすれば、10年くらい先のソフトウェアを作ることができた。75年のBravoは、88年のMS Wordと同じようなものだった。今の人は車には$20,000払うが、コンピュータには$2,000以上は使わない。コンピュータに価値を見出してない。研究者なら自分で速いコンピュータを作るべきである。Altoを作ったChuck Thackerは、David Pattersonと共に2 cubic feetの最速コンピュータを作ろうとしている。これは筐体内の2/3くらいはFPGAである。LindaをFPGAで作ったりすることを考えると、メッセージングの処理などの性能ががらっとかわり、ソフトウェアの作り方が変わる可能性がある。

大事なのは、Squeakも含めて今のソフトウェアは駄目だということである。特に東工大のほうでの講演はやや話し方にあいまいさが合ったともいえるが、Squeakはすでに大きすぎるし、中身もIanのやつのように柔軟性が無いのであまりよろしくない。Squeakを卒業して、もっと良いものを作るのがこれからの目標である。Susan Sontagが言うように、理解というのは現状をそのまま受け入れるのをやめることから始まる。

タクシー

東京のタクシーに乗ることなどは昔からめったに無いのだが、今日は二回ほど乗った。が、運ちゃんが道をまったく知らないことに驚く。新宿の某有名ホテルなど、タクシー業をしていれば一ヶ月に一度や二度は行くのではないかとも思うのだが、入り口がどこにあるかもわからずぐるぐる回ったりしていたし。東工大に行くときのタクシーのほうはもっと頼りなくて、大岡山がどこか知らないし(駅なのに!)、結局最後はほとんど道に迷っていたし。どちらもナビを使っていたが、ナビに頼りすぎっぽい感じもあった。だいたい、工事現場で交通整理の人が止めていたところなのに、ナビに気を取られたか整理の人にぶつかりそうになって、ボンネットを「ばしっ」と叩かれたしていたし。これはいったいどういうことなのか。

(いや、もちろん「規制緩和でうんぬん」という文藝春秋に書いてある程度のことは知っているが、駅を言ってそれがどこにあるのかわからないというのはマジありえん。

東工大での講演

僕の指導教官をしていただいた佐々先生のホストで、Alan東工大で講演した。学生さんが多かったな。

内容はメモを取ったが、まだまとめて書く元気が無い。明日ある東大のものとあわせて書くだろうか。

ただ、今日講演を聴いた人で質問がある人はどんどんお寄せください。