2006/11/22

Allegro Common Lisp 2006 November Seminar (Japanese)。忘れないうちに3日間の印象を殴り書き。

Lispそのものに興味がある人たちと、むしろSemantic Technologyに興味がある人たちがいて、双方にとって有益なセミナーだったと思う。Franz Inc.と数理システムの皆さんには本当に感謝いたします。

いちばん興味深かったのは、Fritz(Franzの創業者)がGoogleに代表されるSyntacticな検索を明確に否定していたこと。非常に慎重な人なので、Googleのビジネスに対して不快感をあらわにしているのが意外だった。

そしてやっぱりAllegroGraphのすごさが印象的。というか、それを開発しているJansのパワーがすごい(懇親会では手羽餃子の油を背広に跳ね飛ばしてしまった。あらためてごめんなさい)。いくら理念的にSemantic Technologiesに利があるといっても、やっぱりRDFトリプルとして記述されたメタデータに対する操作を大規模なアプリケーションにまでスケールさせるのは困難なわけで、そのへんが軽量なスクリプト言語とXMLベースのWeb 2.0が成長した理由のひとつだろう。そういう事情をひっくり返してSemantic TechnologiesをWeb 3.0(そんなものがあるとして)の支柱にする鍵のひとつになりうるのかもしれない。まあ、そんな大仰なことを言わなくても、ふつうにRDBMSよりグラフのほうが直感的なデータベースは多いような気がする。実際、いままさに頭を悩ませている問題として、出版した書籍と著者や訳者とを管理できるようなデータベースがほしい。そんな出版社向けの汎用データベースをAllegroGraphで作るという夢を見た(著者と書籍の間に単純ではない関係があったりするので、ふつうの住所録を作るよりいくぶんたいへん)。

もうひとつの鍵はプレイヤーの数だと思うんだけど、これはちょっと悲観的にならざるをえない。Web 2.0でやっているのはSyntacticなデータから豊饒なWebアプリケーションを大人数でマッシュアップ(これって音楽業界のマーケティング用語じゃなかったの?)すること。Lispベースの技術でそれだけのジャンクなマンパワーを集められるかっていったら、たぶんできない。Lisp以外で同じことが実現できるようになるかっていたら、たぶんすぐにはできない。

でも、それでいいのかも。Fritzの不快感は「なんでもGoogle」という外野の風潮に対するものであって、それで満足する人はそれでいいけど不足があるならぜひ相談してくれ、という話だったんだと思う(かなりバイアスぎみ)。すでにSyntacticなキーワード検索というアプローチの限界が露呈している分野(バイオとIntelligence Agencies)はSemantic Technologiesに目を向けているし、ある程度大規模な組織の内部に閉じたアプリケーションなんかもSemantic Technologiesに目を向ける潜在的な市場になるとふんでいるらしい。まさに昨年のセミナーでは「Lispでなければ解決困難なほど複雑な問題も世の中にはたくさんある」と強調していたけど、その方法論をSemantic Technologiesに絞ってきたんだなあ、という印象だった。

なによりもFranz社は、Lispをビジネスとして成立させることに興味があって頼もしい。Fritzは2日目のパネルディスカッションで、Franz社が最後のLisp企業だと強く自覚しているように見えたけど、それにはすべての聴衆が素朴に好感を持ったと思う。Semantic! Semantic! っていっても、それはやっぱりビジネスマンとしての売り文句で、純粋に美しいテクノロジーが好きなんだろうなあ。

以下はどうでもいい話。

やっぱり懇親会ではSchemerの肩身が狭い。自分のようなTiny Schemerだとなおさら。でも楽しいのはなんでだろう。

いいかげんな英語でもいいから、話をしないとダメだ。

CLOSを勉強しないとダメだ。小出先生の発表で、「CLOS/MOPがメタ-メタ-…-オブジェクトを云々するのはラッセルのパラドクスにつながるから論理屋には絶対に理解できない」みたいな軽口があったけど、あれはどういう話だったんだろう? それって単純に巨大基数に対応してるんと違う?

2006/11/15

『Binary Hacks』のサンプルPDFでは川合史朗さんによる巻頭言が読めて、プロのプログラマにとって抽象化の壁に無自覚でいるのは致命的だ、と主張されている。もちろんこれはBinary Hacksの巻頭言なので、抽象化が下に有界であることを忘れないようにしないといけないよ、という警鐘と受け止めていいんだと思う。ぶっちゃけていえば、土台を固めろ。もしくは、土台を意識できるようになれ。

その手の抽象化の漏れを自覚することの大切さっていうのは、誰かが抽象化したものを使うときの落し穴を自覚することの大切さだといえる。川合さんの文章にある「箱庭の製作者のアイディアを抜ける」ことは、いわば誰かが手がけた抽象化の漏れを自分でふさぐことを指しているんだろう(勝手な解釈だけど)。

一方で現実の問題を解くうえでは、誰かが抽象化したものをてなずけるだけでなく、自分自身で何かしら抽象化っぽいことをしたい。そのときに求められる自覚は、当たり前だけど、『Binary Hacks』の巻頭言で示唆されている自覚とは別ものだ。もちろん、よりエグいレベルからの抽象化を自分でするなら、まさにBinary Hacksが必要になるんだろう。ただし、たとえばぼくにとっては『Binary Hacks』で扱っているような題材はとうてい自分の力だけでゼロから抽象化できるしろものじゃない。

もっとかわいらしい抽象化のためのHacksも欲しい。「箱庭の箱庭の箱庭を別の屋敷の箱庭にコピーして、さらにその中に自分で箱庭を作るときに抽象化を漏らしにくくするHacks」みたいなの。ちゃちな問題であっても抽象化っていうのはやっぱり強力なので、その無自覚に享受しがちなパワーに目がくらんで掘りがちな落とし穴は何か。そもそも落とし穴を作らないためのHacksは?

たぶん、それは数学なんだと思う。ふだん僕らは、直観的に確からしいと思ってあるアイデアをコーディングし、期待する答えが得られた時点で問題を解いたものとみなしている。問題を解くアプローチや道具を手に入れたところで満足しちゃっている。そのアプローチや道具が本当に適切なのかどうかを確かめるには数学しかない。

ありがちな例はハノイの塔だろう。ハノイの塔の解法を説明した記事は、数学っぽいおはなしでもよく目にする。「一番下の1枚だけ残して隣の棒に移動し、一番下の1枚をあまっている棒に移動して、移動しておいた残りをその上に移動しなきゃいけない」という説明。そんなふうな説明から「n 枚のディスクを移動するのにかかる工数を H(n) とすると、 H(n) = H(n-1) + 1 + H(n-1) 」という関係を導いてくる。1枚ずつディスクを移動するって操作を抽象化して考えることで問題の構造が見えてくるよね、みたいな。でもそれだけだと、どんなに工数がかかったとしてもそれくらいには抑えられるってことしかわかりませんから。もっと少ない方法があるかもしれない。

もちろん実際にはない。ただし、それは数学的帰納法で証明して、はじめて「ない」と断言できる。そして道具や解法の抽象化は、どこまでいっても具体的な事物が対象だからではなく、たぶんこういうところからのほうが漏れやすい。たぶん。

こういう抽象化を漏らさないための数学について、楽しい教科書がないものかなあと思う。ちょうど、深いところに抽象化された部分について『Binary Hacks』が果たすであろう役割に相当するような本が。数学の楽しいところや神秘的に見えちゃうところを取り上げて『Math Hacks』とかっていう方向もあるだろうけど、それは答えじゃないと思っている。むしろ、普通の数学と同等の内容を持つ教科書をプログラマ向けに企画することが直接の答えのひとつだと思っていたし、いまでも思っている。

あるいは、ここ1〜2年くらいだけど、 "SICP" や "Concrete Mathematics" こそがそういう本に違いないという確信も持つようになった(上のハノイの塔の落とし穴も"Concrete Mathematics"の冒頭で取り上げられている例がそのまんま)。つまり、抽象化することのパワーを解説や練習問題をとおして読者に伝えるような本で、しかも直観だけでなく数学的に証明可能な抽象化の道を示しているような本(証明が書き下されている必要はない。分かっていて省略するのと結果的に省略されちゃってるのは別)。しかも、"SICP" や "Concrete Mathematics" よりもっとミニマルな内容におさえたとっつきやすい本にできるはず。←いまこのへん

まあ、本があるだけじゃだめで、手を動かして訓練しないスキルは決して身につかないんですがね。数学に限らず。

2006/11/08

部分から全体を推測することが統計の本質というより、全体がいい具合に推測できるように適切な部分を取り出したいというのが統計の本質なんだと思っていた。その際、全体については「何らかの確率分布にしたがう」という仮定を設定するので、その仮定が妥当である限り、おれカネゴンさんのような心配は不要なはず。もちろん、これは統計というものの全体についていえる話ではなくて、統計的推測といわれているものについての話です。

なんかよく分からないけど取ってきちゃった部分から全体を推測しようとする統計もある。その傾向が強くなるほど、数学とは離れたものになっていくような気がする。そういう需要もあるのでそういう分野もあり、やはり統計と名乗っているので、統計の教科書にのっているから数学により正しいことが保障されるといった妄想は妄想です。全体の傾向を分析するひとつの手段としてはありえると思うので批判したりするつもりはありません。

なんか、ちっとも確からしさのない脊髄反射的な文章になってしまい申し訳ありません。

2006/11/07

0.999...は1かっていうのは、ゆっくり慎重に考えれば解けるクイズのような問題ではないし、定義でもないと思う。もちろん哲学でもない。とはいえ、哲学っていうのがいちばんしっくりくる表現なのかもしれないやね。「哲学が何か」なんて知る由もありませんが、雰囲気として。だって、ようするにそれを納得するかどうかだけがポイントだと思うから。定義なんだから納得しろっていう話じゃないよ。それなりに数学を勉強して経験していくと、そのうち、そう考えざるを得なくなるってこと。

虚数の概念とかもそう。虚(imaginary)という字面や、一方で「実」数という概念があったりするから混乱を引き起こしやすいと思うんだけど、別に虚数は空想上のモノでもなんでもない。虚数のimaginaryっぷりは、実数のimaginaryといい勝負だと思う。逆に言うと(逆だよね)、実数とかいっても名前ほどにはrealじゃなくて、たとえばπの実在っぷりを2次元アイドルの実在っぷり以上に強烈に感じられる人はすごいと思う。もういっかい逆に言うと、いろいろな場面で必然的に虚数が現れるのを目の当たりにすれば、そのうち必要に応じた虚数のrealさを納得できるようになるのではあるまいかと。

確かに、いつまでたっても納得できない人はいる。でもそれって、頭の良し悪しとかじゃなくって、単に納得したくないだけなんじゃないだろうか。あとは、訓練が足りないか。ある概念について納得するっていうのは、その概念を提示している記号の字面と日常的な正しさの感覚だけで到達できるような態度じゃないから、ある程度の努力とか歩み寄りは必要だと思う。