アラン・チューリング(2)
ぁ話が逸れたようですが、私達が今どこにいるのか思い出せば悪くはないでしょう。ここで重要なのは、チューリングの議論を通じ、AIの現代でのあり方さえほぼ決定づけられていたということです。それは偶然ではなく、この道の研究者ならば誰でもチューリングのイミテーション・ゲームに
イミテーション・ゲーム――俗に言うチューリング・テストは、機械が人間のふりをして人間を騙せるかを問うものだった。
僕が戦慄するのは、それは戦前のチャットボットの大流行を予言したものであったと思えることだ。
その流行が過ぎて現れたThe Final Answerとは何者なのか。
僕らは最先端のAIの研究所――で、すっかり手持ち無沙汰になり、カフェテリアでサンドイッチを食べているわけだ。
無人調理とは思えないような焼き立て感のサンドイッチも、大分冷えて固くなりつつある。
「ふうん、それじゃあつまりコンピューターの父は、AIの父でもあるのかい。そいつは笑いが止まらんだろうな。儲かって儲かって」
秦さんは下品に唇を歪めて嗤う。
彼を交えて話すうち、その悪びれた態度にもどこか演技じみた大袈裟さを感じるようになっていた。
「ノイマンなどの成果もありますからコンピュータの父は彼だけではありませんが、まさにそうです。しかし――笑いが止まらないかは、違うでしょうね」
「ほう。恵まれねえ、不出世の天才って感じのヤツだったのかい」
茨さんはそこで言葉を選ぶように、しかしまずは言葉を選ばせることにしたようで「それを言うなら不世出だとは思いますが……そうですね――」。
「チューリングは軍にも重用され一目置かれていましたし、彼は彼なりに楽しく生きたように思います。ですが耐え難い苦悩もあったのでしょう。彼は若くして自殺してしまいました。AIという言葉の誕生を待たずして……」
「そりゃあまた」と秦さんは口を開きつつ、「何でっていうのも野暮か」とボヤいて押し黙った。
チューリングは、自殺していたのか。
そんなことは計算機科学の授業では習わなかった。
チューリングのような才気あふれる天才が、なぜ自殺を? 僕からすればそれ自体が大きな謎だ。
AIという言葉が生まれたのは、1956年のダートマス会議だったはず。彼が若くして活躍したのが第二次世界大戦期なのだから、彼はおそらく、せいぜい四十歳かそれくらいで亡くなったことになる。現代程ではないにしても、『若くして』――と言ってもいい年齢だったはずだ。
彼には才能があった。まだ将来もあった。
だからこそ、理解できない。
「毒リンゴを食べて死んだのだそうだそうです。理由は謎のまま。いくつか有力な理由はありますが、どれということはできないでしょう」
毒リンゴ? と僕は反復した。キリスト教ではリンゴは知恵の実、知恵の象徴とされる。
茨さんは、また薄っすらと悪い笑みを浮かべて「毒ニンジンはもう流行ってなかったのだと思う」と言うが。
「毒リンゴとなると含みがあるじゃないですか」
「そう思うね。しかし彼の哲学というか、死生観には元々尋常ならざるものがあったのだとすれば、自殺の手段はそれほど奇異でもないさ」
「死生観? 何かこう、特殊なものだったんですか?」
さっきもその話があった気がする。
チューリングがなぜ、他の教授と衝突しながらも独自の〝唯物論的〟なAI観を提唱したのかという
「少なくとも私はそう理解している。彼は、伝統的なキリスト教的を離れ、神を捨てた。人の知性についての神秘を否定こそしなかったが、だからこそ非情なまでに唯物論的アプローチで知性と向き合うことができたのではないか、とは話したね。それには彼の哲学が強く影響したのではないかと」
茨さんはやや遠くを見つめながらそう語った。
チューリングの――哲学?
計算機科学でも、暗号学でもなく?
言葉の結びであったように思う。少なくとも、彼女はそれ以上チューリングの死について語るつもりはなさそうだった。
このカフェテリアの隅に百年前の天才の姿を見ているのだろうか。
それとも、彼の残したいくつかの謎だろうか。後者のほうが探偵らしいと思えた。
やがて彼女は「話を戻しましょう」と口を開く。
「チューリングの偉業は、AIよりも〝万能チューリング・マシン〟のほうがよく知られているでしょう。これは無限に長いテープに書いた命令を、一つずつ読み取ってそれに従う、想像上の機械です」
話が急に理系に戻ってきた。
けれど僕らはまだチューリングの掌の上だ。話は数学や言語や計算機やAIや死や哲学――とにかく色々なところに飛びながらも、まだ一歩たりとも彼の世界から出てはいない。
「果たして、機械が単純な命令のみでどれほど複雑な問題を解けるか――そこです。それを知るために彼は、たった数種の簡単な、機械への命令を長いテープに書いておき、順番にこれを実行することでより複雑な問題も解けることを提唱しました。つまりプログラムですね。更には先輩・ヒルベルトの出した難問を証明してみせ、ゲーデルの不完全性定理を証明するのです。そしてこの機械が正しく停止するなら、機械はその問題を解ける――〝アルゴリズム〟と言います。これが今日のコンピュータの基礎です」
「それが基礎か。随分とややこしい基礎だな」
「結論だけを言うと、『資金と時間をこの機械に幾らでも投資してよい。その価値があるぞ』という根拠を突きつけたわけですよ。これは戦後世界の新しい兵器である、と」
ふむう、と秦さんは喉の奥で納得する音を立てる。
解りやすい人だな、と僕は思うが、この人は年相応に頑固なのだ。
「確かにそうだが。信じられんなぁ」と秦さんは片手で眉間を揉む。
無理もない。万能チューリング・マシンが何者なのか、僕だってちゃんとは解っていないのだし。
「もっと信じられないことを言いましょうか。チューリングがこんな
それ聞いて、秦さんは驚きを隠さなかった。
すぐに彼はもごもごと口を動かし始める。自分の言葉を信じられないかのように。
「――じゃ、じゃあ、何かい、コンピューターは人間だったのかい」
「混乱させてしまったらすみません。まとめましょう。コンピュータは機械で、人間を模し、話す言葉が数学なのです。秦さんは『コンピュータは数学だ』と仰いました。それは〝中国語の部屋〟の中に中国語話者がいると思ってしまうのと似ていますね。コンピュータは数学を話すけれど、数学そのものかというと、それは余人の想像する数学とは違うものでしょうね」
なるほど――と僕は思う。それで茨さんは、コンピュータの中身の話をしているわけだ。
コンピュータは機械であり、元は人間なのだと。
「機械なのか人間なのか、どっちかにしろい」
「秦さんは、昔コンピュータを使っていらしたのでしょう? なら中身を見たこともあるはずです。ご存知なのでは?」
「電気回路の詰まった、機械だよ」
「そうですね。よもや中に人間がいるなどとは思わなかったでしょう――ですが、いたのですよ。計算手が」
そう言って茨さんは笑った。
秦さんも、口を大きく開けて笑う。
「なんだ、そういうことだったのかい。おれはそいつと話して、中には数学があると思った。だが数学でなくて、数学者だったと」
〝コンピュータは数学である〟と秦さんは言った。全ては数学の問題であるとしつつ、コンピュータが数学そのものとは言い切れないのだと茨さんは言う。
コンピュータはまず、機械である。人間の模倣であり、AIを動かす脳――ハードウェアだ。そのひとつひとつを数学に還元することも、きっと茨さんなら簡単なのだろうけれど、そうしてしまえば全ては概念になって実質的な姿を失う。
今やコンピュータは消えてしまい、大学や企業のサーバールームや電算機室に隠れてしまった。誰もがその存在を知っているのに、見たことはない。いや、ディスプレイやキーボードがコンピュータなのだと思っている。
大多数は企業や大学や、クラウドの中に存在する。掌の中のスマホは100%純粋なコンピュータであるのに、そう考える人は少数だろう。この秦さんにしたって、コンピュータは好きだったらしいのに、スマホは持たない主義だと言っていた。
なぜ彼らはスマホをコンピュータとは思わないのに、ディスプレイやキーボードをパソコンだと思うのだろう。
たぶん彼らは、機械らしい姿を留めておきたいのだ。
きっと想像するだけでは難しく、手に余るから。
「……しっかしどうも騙されてる気が収まらんね。機械の中に数学者がいるとしたって、数学しか話さんのじゃ困るだろう? 難しいのに変わりねえし、おれはミサイルの弾道計算なんかしねえもの。おれは数学者よりお姉ちゃんと話してえし、グラフよりエロ動画が観てえ」
「そうでしょうね。でもまず最初にお話ししたように、コンピュータにとっての数学は、漠然と想像されるものよりもずっと単純で、高度な知識や複雑な計算は全く不要であることだけは解っていただきたいですね。既に話した通りコンピュータ自体が論理演算というスイッチのON/OFFの計算だけで動いているからです」
「そうだったな。『単純な命令の組み合わせ』――それでムツカシイ計算もできるって示したのがその、チューリングか」
チューリングの考案したチューリングマシンは、思考実験に登場する機械だ。無限の長さのテープを持ち、そこに書かれた命令の数には制限がないが、一度に読み取れる命令はひとつ。一つ一つの命令は、これも単純な論理回路の組み合わせで実現できるものだ。チューリングマシンはそこからひとつずつ命令を読み取って実行し、テープを送る。これを繰り返して難しい仕事をこなすとかそんな感じだ。
テープというのは、要するに順序があり、その順序通りに命令を実行することを意味している。
「まだ信じられんが、もし本当なら面白い話だ。だがおれの見たとこじゃ、どうせそのテープに書かれた『単純な命令』とやらがご立派な数式で、ちっとも単純じゃないんだろ」
「単純ですよ。命令というのはコンピュータへの命令なのですから、機械にできる計算だけでなければなりません。つまりコンピュータの仕組みがそのまま命令になっているとお考え下さい」
言われて見ればその通り、機械を使うということは、そのままその機械の構造を利用していることに違いないわけだ。
「仕組みっていうと、ふたつのスイッチによって電球をON/OFFする――ってことか?」
「はい。それらの論理演算と、それから今電球が点いているか調べる命令です。調べてもし点いていれば、テープを送ったり戻したり別のところから実行を再開する――あとは足し算と、せいぜい掛け算があれば便利というくらいです」
せっかくですから簡単な例も見てみましょうか、と茨さんはスマホで単純な数式を書く。
1+10+2×3+1……ここで1や10という数字は〝項〟だ。項は数に限らない。言語で言えば名詞など体言に相当するもの――だろうか。+や×などの記号は〝演算子〟だ。これは動詞など用言に相当する。
「……数式を左から読んで、もし数字などの項が現れたら覚える、演算子だったら覚えた数同士で計算し、結果で置き換えてゆく……とまぁ、これは計算手が、頭の中でやっていることの模倣であるわけです。これで複雑な計算ができるというのが、コンピュータの基本的なコンセプトだったわけですが――そもそも、不動君の質問に答えるには、条件分岐の話だけで十分だね」
そういえば僕も、『プログラムは数学じゃない』と秦さんとは真逆のことを言って茨さんを困らせる人間のひとりなのだ。
〝条件分岐〟な、と反応したのはまたしても秦さんだった。
電球が点いていればテープを送るか戻すかして実行する命令の場所を変える――ノイマン風に言うところの〝条件分岐〟命令のことだ。電球が点いているかどうかは、〝1ビット〟ぶんの記憶といえるだろう。
if文、といえば学校などで少しでもプログラムを齧った人間ならばおそらく見たことがあるように思う。それくらい有名な命令で、いかにもプログラムらしさを象徴するものだ。
これは電球が点いているかどうかによって、まるで違う動作をさせることができることを意味する。
逆に言えば――最も数学らしからぬ要素、とも言えるだろうか。
上級の(つまり人間に近い)言語で言い直すなら、〝もし〇〇が××なら、△△する〟――というアレだ。つい〝そうでなければ□□する〟と付け加えたくもなるけれど、そういうのは『単純な命令』には含まれない。ちょっと高度なのだ。
「条件分岐ならホームページ作るのに使ったぞ。if カッコなんたら~ってやつだろ。やったやった。来訪者のブラウザがコレだったらこっち~みたいに使うんだよな。ブラウザってのは、おれらの頃は何種類も、いっぱいあったんだよ。NI5とかネスケ4とかさ、モゲラとかパッチワークとかさ」
秦さんによれば、かつてはブラウザに種類があり、それごとに実装されている(つまり対応している)機能が違ったそうなのだ。そのためWebサイトでは、閲覧者のブラウザごとに処理を分けなければいけなかった。
「まさにそれが条件分岐の例です。条件分岐が出てきたので、話を少し抽象的な方へ進めましょう。スイッチのON/OFFは真と偽にも対応すると言いましたね。これらは論理で使う真偽値、trueとfalseという2つの値を意味します。先程からスイッチのことを論理演算と呼んできたのはこのためです」
「ONが真で、OFFが偽ですよね」と僕が挟んだけれど、反応はいまいちだった。
「どちらでもいいさ。デジタル信号の世界では明確なのだろうけれど、そもそも『スイッチがOFFの状態』というのも正確な言い方じゃないのだし」
多少工学も齧った僕からすれば、それはその通りだ。デジタル回路では、かかっている電圧がゼロとイチに対応する。『スイッチがOFF』というのを回路が繋がっていない状態を示すのであれば、細かいことだが、これをゼロとは呼べない。基準となるグラウンドに落としたときだけがゼロと呼べるのだ。
しかしここでは、例え話として『スイッチのONが真で、OFFは偽です』と決めてしまってもよいだろう。『スイッチがOFF』の回路を明確に定義したわけでもないのだし。
「真偽……? ああ、そういえばあったな。True, falseとか英語で書くんだっけか。スタイルシートってやつで使ったぞ」
秦さんがデジタルと仇名されたというのも、あながちいい加減な話でもないのかも知れないと思った。
「はい。真偽値はまさに真か偽か、trueかfalseかをはっきり示す値です。真か偽かどちらかになり、中間はありません。これは論理学の言葉ですが、ほとんどのプログラミング言語ではそのまま使えます」
論理学――となるとこれも数学だ。
コンピュータの中では、論理を鍵として物理と数学が結びついている。
「さて、そこで先程の条件分岐です。秦さんはおそらくJavaScriptで書いたのでしょうが、同じものがコンピュータのごく基本的な命令のひとつにも存在します。これは電球がついているか、真か偽によって〝実行する命令の場所〟を変えるような命令です。これはとても重要で、この命令があればチューリング・マシンと同じ能力があると言えます」
そういうのを〝チューリング完全〟と言うんだっけか。
「つまり真か偽か、それが常に重要です。秦さんは、ブラウザごとに処理を分けたかったから条件分岐を使ったわけですよね? つまり〝場合分け〟――不動君、これも証明のテクニックの一つだね?」
急に話が戻ってくるたび、僕はいささかどぎまぎして思考を中断する。でも、やはりここでも返答したのは秦さんだった。
「いやわからんよ。別に何かしたかったわけじゃない。本にそう書いてあったからその通り書いただけだって。おれは本当に、自分が何を書いてるのか解ってなかった。だが言われてみりゃ、そんな風な説明があったかもな」
「そうですか。ではもう少し思い出してください。if文は『if 条件』のように条件式を伴うものです。条件式とは、真偽がいずれか定まるような式です。つまり、『◯◯は◯◯である』とか、YES/NOで答えられるような式のこと。少し洒落た言い方では、このような式を〝命題〟と呼びますが――まぁそこまではいいでしょう」
「そうだなぁ。確かに『訪問者のWebブラウザがコレであるとき~』とか、具体的に場合分けして書いたんだっけ。それってのはつまり『訪問者のWebブラウザはNI5である』って質問の真偽を問うたわけか」
「話が早くて助かります。数学の真と偽は英語でtrue, false。電気的にはON/OFF。コンピュータはこれらを使って計算します。条件式は、調べてみれば真偽がいずれか確定するような式のことを言いました。さて、ここから急に数学らしい話になります」
そこで茨さんは、スマホに大きな円を二つ描き込む。
二つの円は少しだけずれ、大部分が重なっている。
どこかで見た――いや、さっき見たばかりの図と同じものだ。
「一つ円は、一つの条件を示します。円の交差する領域は、二つの条件が共に真になる空間――論理積ANDが真である空間です」
「ふむ、さっきので言うと条件っていうのは……『言語』『数式』ってことか」
「『言語である』且つ『数式である』、それがこの重なる部分ですね。条件分岐は、この論理演算と同じように論理を構成するものなのです」
論理演算と条件分岐。同じような概念が今も残り続けるのには、単に論理演算が基本だからという以上にもう少しテクニカルな理由があるように思う。
おそらくプログラムが数式か、言語か、その境界もそこにあるのかも知れないと僕は思うようになった。今それを言いだしたところで『数式にだって条件分岐はあるよ』と一蹴されてしまう気はするのだが。
「さて、秦さんがお作りになったホームページには条件分岐がありました。何らかの必要があって、場合分けを含むロジックを書かれたわけです。その分岐の正確な意味はわからないか、忘れてしまった。しかしそれが何のためであれ、条件式が書かれた以上、少なくとも秦さんのやりたかったことはその条件が真になる空間にあったことだけは間違いありません」
「真になる――空間? どうして空間がでてくるんだ?」
「空間がでてきたのではないですよ。空間は最初からあって、私達のほうがそこに現れたのです。数学とは、空間に関する学問です。空間を表すのに、式を使っているだけです」
「と、言われてもな」
「私たちは空間に存在し、空間でものを話し、空間で考えています。数学はこの空間を区切ったり意味付けする――その限りにおいて、私たちは誰も数学から逃れることはできないのです」
秦さんは、虚を突かれたような顔を見せた。
僕にしたところで同じような顔をしていたのだろう。
「不動君までそんなに驚くことはないよ。グラフで考えよう、とはいうけれど、本質はグラフにあるのさ。確かに数式のほうが表現としてコンパクトで、扱いやすい。しかし見た目に囚われてはいけない。グラフの前で数式はレトリックに過ぎない。詩的に言えば、美しい景色と出会って言葉が生まれるように、グラフが空間に意味を与えたとき数式が生まれるのさ。数式は言葉と同様、扱いやすくするために記号で表したものだね。プログラミングが論理思考と言われるのも、数学が大切なのも、数学で証明が重視されるのも、ミステリでロジックが好まれるのも、皆同じ理由からだ」
事実に出会って言葉が生まれる。
事実は空間に存在する。
ならば数式もいつか事実に出会うのだろうか。
「な……なるほどな? い、いや、そうなのか? そりゃあ、おれも探偵小説は嫌いじゃないが」
「はい。そして解はいきなり見つかるものではないのです。ミステリでもそうでしょう? 犯人が存在する空間を決める条件から、絞り込んでゆく。それが論理ですね。論理式は、この空間を区切る最もシンプルな方法です」
そして茨さんはスマホを向けて、2つの円を指差す。
「この図は、その空間を示しています。論理積ANDが真ということが意味するのは、解――つまり秦さんのやりたかったことが、2つの円の交差する中に存在する、ということです。他に、論理和ORの場合は二つ合わせた円の中に存在します。幸い、論理を進めて絞り込んでゆくステップもこれら単純な論理演算の組み合わせで示すことができます」
「円の交差する中か、それぞれの円の中、か。それ以外の場合は?」
僕はそこで、「NOTというのもありますよ」と口を挟んだ。
しかし茨さんはやや苦々しげに首を振る。
「まぁ――この図は論理積や論理和の説明だから、それでもよいね。論理否定NOT。これは条件が偽であることが真である空間――と言えます」
なんだかややこしいな、と秦さん。
「この丸を重ねた図は、その論理式ってやつが表す空間――なわけだよな? これが探偵小説の、探偵の推理でもある、と」
いえ、と茨さんはまた首を振る。
「これが論理を図式したものなのは、そうです。しかし、〝推理〟となるとこの丸を更につなげて、隣へ隣へと論理を
つまり、推理の演算子?
ほう? と秦さんは興味を示したように見える。
僕も思わず前のめりになった。
茨悠遠という探偵の仕事がもし、プライバシーの収集でも、AIでも統計でもプログラムの証明でもなく、その〝推理〟なるプロセスにあるというなら。
その論理演算こそが重要なのじゃないだろうか?
「真偽値の計算だけならORとNOTで同じ計算ができるのですが、式にこそ意味があるとこう申し上げたばかりですので、やめておきましょう。いずれにせよ、応用的な話ですよ」
なるほどなぁ、と秦さんは納得した……というよりほっとした様子だった。
「ともあれこうした論理式を使って、より複雑な問題についても絞り込んでゆける――これが論理の作法です。コンピュータにとって、数学の最も重要な点はこれだけですね」
そして彼女は再び僕に向かって、僕にだけわかるように囁く。
「秦さんが混乱するといけないから、不動君にだけこう言っておこう。この論理のプロセスは、『言葉とは、語とは何か』における型のことでもあるね。言葉は、経験的な知識や共通の認識を用いて型をつくる――数学さ」
せっかく僕にだけ囁いてくれたのに、僕には難しすぎたようだ。
でもそう、部分的には理解できた。知識、なるほど、知識か――と僕は一人頷く。
ある程度合点がいったのは、秦さんも同様のようだ。
「ふむ、なるほど、わからんがわかった。確かにコンピューターは数学だが、漠然とおれの思ってるような数学とは全然違いそうだ。ifやその真偽値なんてのも、どっちかというとそういう数学に近いんだな」
「はい。そこを解っていただければ話し甲斐があります。数学といっても、コンピュータに深く関わるのは難しいものではありません。難しい計算をする必要もない。こうしたものは、私達の誰にとってもずっと身近な数学です。コンピュータは人間を模倣して作られたのですからね」
「……だがやっぱり、難しいもんだな。この歳になって今更新しいことを覚えられるとも思わんし。昔はそれこそナントカ言語を勉強して月百万の副収入~なんて情報商材があったろ。マジに金になるなら、石に
そう笑う秦さんは、強欲な物言いとは裏腹に少し寂しそうにも見えた。
「直接的にお金になるかというと、難しいでしょうね。ですが、コンピュータを別にしても、数学は役に立ちますよ。私達が空間に存在する限り数学からは逃れられませんが、式を使って単純化したほうが暮らしやすいでしょう。計算が苦手でも問題ありません。代わりに記号を使えばよいのです。数の代わりに記号を使う数学を、代数学と呼びます。こうして得られた言葉が、形式的表現とも言えますね」
代数学――記号化。
数式を、数学の言語的な側面だとすれば、その、より記号的な表現ということになるだろうか。
僕らが言葉を用いて事実という空間を切り取ってゆくのと同じことでもある。
「代数の
茨さんは、秦さんの顔を真正面から見て、急に囁くような声になって、こう言った。
「全ては即ち数学の問題になるのです」
僕に対して、彼女は少し違うことを言ったように思う。
「茨さん、『全ては数学になる』んでしたね?」
「ああ、全ては数学。けれど、だとしても数学の問題を、純粋に数学だけで解く必要はないかもってことだよ。言葉で解いたって良い。証明問題には日本語で答えるものだろう? 言葉も数学さ。使えるものを使わないのは勿体ないだろう」
なるほど、秦さん向けにそう言い換えたわけだ。
「かく言う私も数学者ではありませんが」と彼女は笑う。
秦さんも今度は大声で、愉快そうに笑った。
「勿体ないときたか。そう言われちゃあ、今まで損してきたような気分になるね」
茨さんは次に僕のほうを向いた。
「まぁ、話が長くなったけれど、言語と数学はつながるわけさ。論理学の父、フレーゲによれば証明は、言葉で行うにしても形式的だ。ハスケル=カリー同型対応ではこれを……いや、こういう話は苦手なのだっけ。ひとまずここでは、プログラムを書いて問題を解決できるということ自体、問題が確かに数学的だと言っておこう。解法――アルゴリズムというやつさ。となると残された問題は、書かれたプログラムが正しいか、ということになる。プログラムが正しいとき、そのプログラムは確かに証明である、と」
不思議と、今度は〝プログラムが証明である〟ことをすんなりと受け入れることができた気がする。
「な、なるほど。確かにプログラムは、アルゴリズムがあるということの証明なわけですものね。ただしそれはバグっているかもしれなくて、バグがないことを別に証明する必要がある、と」
「プログラムに証明を与える、と言うね。証明付きプログラム、とも。どうやってそれをするか――場合分けの話だけは出た。理解するにはもう少し手間がかかるね。手間がかかるとしても証明されたプログラムや、プログラムの部分は、まさに定理のように扱える。するとそれを利用して別のプログラムも証明できるかも知れない。君になら、〝関数を証明する〟と言っても構わないね。証明された関数は、まさに定理だ」
ここでいう関数は、プログラムのうちの機能ごとに切り出したコード辺――部分のことだと思う。プログラムというやつは、関数の集まりとして設計される。これはまぁ、数学だ。
「なるほど、プログラムで使う関数全部が証明されていれば――確かに心強いですね。あ、プログラムが証明なのにそれを更に証明するのは、秦さんには妙な話に聞こえるかも知れませんが――」
「いいや、そんなことはねえよ。『証明できた』って論文が出ても、他の学者はそれが正しいか常に検証するもんだろ。そういうことだよな、先生」
……気を使ったつもりだったのに、全く要らぬお世話だったみたいだ。
「全く、勉強になったよ。ありがとうな。無料で講義が聞けるとは得した気分だ」
「講義など。雑談です」
「これが雑談とすりゃ新機軸だ。まぁ、楽しかったよ。このあとの説明会とやらも、ちっとは得な気分になれるといいんだが」
秦さんはいつの間にかきれいにサンドイッチを平らげており、片手でトレイを持ち上げて返却口へ歩き去った。
その後姿を見送り、茨さんはぽつりとつぶやく。
「……掴みどころのない人だね。何者なんだろう」
「茨さんだって――結局その知識が探偵にどう役立つのか、僕はまだ全然わかりませんよ。電気回路のことまでお詳しい」
そういうと、彼女は意地悪そうに笑う。
「いや実際役に立つよ。蛍光灯のちらつきやノイズは調査対象の情報をかなり多く与えてくれるし、盗聴器を仕掛けるのにも適している」
「冗談――ですよね?」
「どうかな。ご想像にお任せするよ。でも、ツールは多い方がいいからね。照明の回路もプログラムの証明も、どれもツールに過ぎない。けれどまぁ――私の趣味というか個人的なライフワークには大いに関係する」
ライフワーク。それはむしろ、探偵手法よりも気になった。
僕は身を乗り出す。
「そんなに前のめりになられると困るな。そうだねぇ、さっきも話したが、数学も文学もプログラムも、空間を切り取って示す言語に過ぎないとしよう。君は『プログラムは証明』という言葉に疑問を持ったようだが、もし『プログラムは数学であるから証明』と拘っているのなら、一旦忘れてしまったほうがいいと思う。まぁ、ヒントは充分に示したから、大学に戻って聞けばいいさ。前回とはまるで違って聞こえるかも知れないよ。君はまだ現役なんだから」
僕は一瞬、面食らう。
「え? 忘れてしまっていいんですか? プログラムが証明であることが、基礎なんですよね?」
基礎だからこそ学校で聞けということはわかる。けれど僕は、The Final Answerと出会ってから、大学に戻って真面目に勉強することがなんとなくリアルには感じられずにいる。
何なら、今まで学んできたことがすべて無駄になってしまうような――そんな恐れが半分。
――そうなってしまえとの期待が半分。
「まぁ、私達の研究を正しく理解するには、当然基礎が重要だよ。しかし私のライフワークを理解するだけなら、今まで泰さんにした説明で充分――つまり、プログラムを通じて、コンピュータの上では言葉と数式は完全に一致するということさ。数学だって、長い間自然言語で証明をやってきたんだ。絶対にどちらかを選ばなきゃいけないなんてことはなんてない。そして君の言う通り、プログラムは文学に近い側面を持っている。数式ほど形式的ではないことが多い――わかるね?」
形式的には、記号を用いる。文語的な要素や装飾的なものを削ぎ落とした、シンプルな見た目だ。
ならばそう――僕はまさに、そこを飲み込めなかった。僕らの書くプログラムは装飾的で文語的で、冗長だ。ひとつの機能を作るのにも書き方は千差万別で、正解はない。似たような意味の言葉が山程あって、どれを使うか知識なしには何ひとつ決められない。曖昧なことも、間違っていることもある。だから数学より作文に近いと思っていた。でもさっきの話を聞いて、プログラムというものを一番原始的な論理ゲートから組み立てていくと、そこには数学に近い姿しかないようにも思う。
秦さんは全く逆だったわけだ。秦さんの知っているプログラムは、本に載っているコードを書き写したもので、一字一句たりとも彼の自由にはならなかったのだ。だから秦さんにとって、コンピュータはまさに手に負えない数学だったのだろう。
「プログラムが数学か文学かによらず、『プログラムは証明である』が事実として成り立つ。すんなり納得するには、証明そのものを分解して形式化する論理学の助けが要るというだけのことさ。けれど、プログラムにバグがないことを自動で証明しようとすると、プログラムのほうも極めて形式的な表現に置き換える必要がでてくる。この置き換えの方法が、私のかつての研究テーマさ」
形式的でないコードを、形式的なコードに変換して――自動で証明する。
それができるならプログラムが何であるかは、実のところ問題でないのかも知れない。
「これを応用すればどうなると思う? プログラムも文章も数学も等しく式だ。特許、法律、音楽――あらゆる文語的な要素を持つものを形式的表現に置き換えられれば、全てを真と偽の論理で扱うことができる。数学的な証明のテクニックを使って、あらゆることの妥当性を検証できるわけだ。その曲が売れるか、売れるようにするにはどうしたらいいか、法律に矛盾はないか……等」
プログラムも、そうでないものも、証明されるべきもののひとつに過ぎないのか。
そして証明さえされたらそれは〝定理〟――決して疑う必要のない、鉄の礎だ。
「なんか――すごい野望ですね」
「私の思いつきじゃあないよ。音楽はすでに専用の言語があるし、ハードウェアのチップも言語がある。秦さんがホームページ作りに使ったのはHTMLのような言語だろう。これらは計算に使うプログラミング言語ではなく記述言語というのがより正確なのだろうけれど、まぁ、言語だよ。いずれ法律も自然言語を排して、記述言語で形式的な表現に置き換えられるかも知れない。言わば法律専用のプログラミング言語だ。そうなれば同じやり方で法律のバグを自動で見つけることができるだろう。法律なんかは特に旨味が多くて、長年研究されているしね」
すると、「いや――」と、茨さんはやや迷うように言葉を区切った。
そして、例の意地悪そうな笑みを浮かべて、信じられないことを言う。
「法律がプログラムにできるなら、犯罪もプログラムにできるのじゃないか」
え? と僕は返答に詰まった。
「ここからが私の思いつきだ。形式的表現を使って、事象のもつ概念を、論理的に論じることが容易になったとしよう。法律も然りだ。すると、犯罪も専用の記述言語で形式的に表現して、検証が可能になる――物証や証言の及ばない、隠された部分までね」
「ちょっと待ってください。犯罪をプログラムにして、検証できると?」
「法律が形式的に書けるんだ。犯罪だって書けなきゃおかしいだろう」
「いや、でも、犯罪のもつ概念って――なんです? そんなもの、衝動的で、ついカッとなってやることじゃないですか。それって、書けたとして論理的になるんですか?」
僕は腕を振り下ろす仕草しながら、犯罪を頭に思い浮かべる。それは、形式的かどうかよりもっと非言語的だ。
もっと言えば、衝動的であるはずだ。
確かに、と茨さんはコップの水を一口飲んだ。
「確かに君の言うように、犯罪は例外であり、分類不能なマグマの産んだエラーであるとして日常から分離する考えは、あるだろう。しかし事実として犯罪の類型化は捜査の役に立っているし、私の見てきた事件では、例え人殺しであっても、彼らの中には彼らのロジックがあったよ。動機、犯行方法、隠蔽――そうしたものの全てに。そして何より重要なのは、犯罪も人が作ったものには違いないんだ。音楽や、法律と同じにね。犯罪だけを特別視する根拠を、私は持っていない」
犯罪も人の作ったもの。確かにそれはそうなのだろう。
だとすれば、犯罪は茨悠遠の研究テーマとしてはごく自然なものに感じられる。果たして探偵のためにそれを研究したいのか、その研究のために探偵の道を選んだのか――どちらかわからないほどに。
「……ありがとうございます。納得ができました。研究を仕事の役に立てるのではなくて、なんというか、不可分なんですね」
プログラムを命令の列ではなく、『構造や概念の記述』と考えれば色々な可能性が生まれるものだ。
しかし茨さんがそういう理由で転身したのなら――増々、僕の就職の参考にはならない。
そのとき、少し遠くの席からこちらを覗っていた江口先輩が、「面白そうな話してますねえ」とやってきた。手にはおかわりのチーズドリア。立ち上がった席にはもう一つ同じパックが、既に平らげられて取り残されていた。
「お嬢さん、茨なんとかさんですね。いやね、どこかで見たことあるなぁ~って」
僕は「江口さんです」と紹介した。
「あ、はい。あ、僕、野木電機でプログラマをやってます。ヒヒッ」
ようやく先輩が自己紹介をした――と思ったら野木電機だって⁉ 信国大就職希望一位の大企業じゃないか。ATMからエンタメ、セキュリティシステムまで手掛ける超大手メーカー。「凄いじゃないですか」と僕は襟を正す。正す襟がなかったけれど。
「初めまして。茨と申します。東京で小さな会社をやっています」
「『初めまして』じゃないですよぉ。お名前はちょっと憶えてないですけど、何年か前、SCSGで発表見ました。その後、食事会でもご一緒して。ほら、大塚社長と菊田先生が大喧嘩になっちゃって。大変だったなぁ」
先輩の挨拶にはどこか品がないな。常に口元が緩いというか。
「で? プログラムの形式証明の自動化、みたいな話だよねぇ。いやぁ、でもちょっと空想的? 静的解析ってかああいう技術はさ、昔から手を替え品を替え売り込んでくるけど、ひとつだって実用になったモノはないんだから」
こいつ……。僕はどうやってこの失礼な男の口を塞ごうかと考える間にも、先輩は止まらない。次から次へと「役に立たない」「金の無駄」「コンサルが喜ぶだけ」と反論だか恨み節だかが出てくる。顔は笑っているが、あまりにもねちっこい言い方に、無関係な毒島さんまでもが椅子を蹴って去ってゆく。
時計を見れば、もういい時間だ。説明会が始まってしまう。
「……所詮プログラムなんてもんは、動けばいいんですよ、動けば。ね? ヒヒッ」
「先輩だって、さっきバスの中でPBUGのバグに文句言ってたじゃないですか」
「バグを使うのはテクニックのうち。裏技だよぉ。それにアップデートでいくらでも直せるんだもん。金かけて完璧な証明付きのプログラムを作る意味なんてないよ」
悪気があるのかないのか。彼の締りのないにやにや顔からは、その判別がつかなかった。
茨さんのほうも気にしているのかいないのか――。
「ご高説のような事情はわかります。しかし私のSCSGでの発表は、直ちに計算できないもの――マイクロプロセッサ等の記述言語を主に念頭においたものでしたので」
彼女は、鉄仮面のような冷たい笑顔で平然とそう述べた。
対する先輩は立ったまま、憮然と、
「……なんだ。組み込みか」
そう投げ出した。
「ハードウェアではありますが、違います。江口さんはメーカー勤務の方とのことですが、組み込みの経験がおありではない?」
ああいうのはもう懲りたよ、と先輩は皮肉な笑みを浮かべた。自分から振っておきながら、もうこの話はしたくないとでも言いたげだ。
この二人の間にも、プログラムの定義を巡る
組み込みプログラミングは、家電や業務機器など貧弱な機械向けの仕事だ。社会や生活の基盤に関わる大事な仕事であるが――難しく、実行のためのリソースが限られているので人気がない。おそらく彼の鼻につく返答は、その辺のことを見下したものだろう。
非常に
「学生さん? そろそろ説明会だよ~」
彼らはやけに気さくに、僕らに向かって手を挙げる。どうもさっき聞いた感じと違う。
「〝男の
――なんだか微妙にデレデレしている。
「そっちの人はテレビで見たなぁ。ちょっと聞こえたけど、SCSGで発表? すごいねえ」
茨さんも、すっかり朗らかな営業スマイルで会釈する。
研究者の片方、長い方が「アンバサダーの人たちか」というと、丸い方は警戒するでもなく破顔した。
「アンバサダー? ああ~、例の査察の人か。遠いところよくきてくれましたねえ。辺鄙なところですいませんが。聞きたい事あったら何でも答えるから」
僕は立ち上がって頭を下げる。
「ここの研究者の方ですよね? ご挨拶もなくカフェテリアに押しかけてすみませんでした。真鍋さんからは閉鎖中と伺っていたので」
「本社の真鍋さんね。うんうん、僕らはね、ここ住み込みだから。気にしなくていいよ」
二人はにこにこしながらラップトップを小脇に抱え、カフェテリアから出て行った。やはりテキサスのほうが似合うような後ろ姿だ。
彼らを見送ってから茨さんに視線を戻すと、彼女は何やら悪そうな含み笑いを湛えて、僕を見ていた。
「――なるほど、なるほど。彼らはただの女性には苦手意識があるが、君にならガードを下げると。思った通り、君は役に立ちそうだ」
気が付くと先にカフェテラスにいたはずの千束さんや阿部さんの姿もない。僕のサンドイッチはすっかり冷えきっていて、ポテトはお互いにくっついていた。
スマホの時計を見ると、そこそこの時間が経っている。
半日もここで話をしていた気がするけれど、実際にはまだ一時間ほど。しかし、研究者二人の言った通りもうすぐ説明会が始まる時刻だ。
江口先輩が居心地悪そうに小太りの体を揺する。軽く言い争いみたいになったのを気にしているのかも知れない。
僕が「先輩、さっきのは無礼ですよ」と言うと、茨さんが軽く手を振って制止する。
「私は気にしないよ。技術者はコミュニケーションとして、日頃から雑談のように極論を向かい合わせるものだからね」
「う――茨さんが仰るなら、じゃあそれはいいとしても、ですよ。でも――」
僕は江口先輩に向き合い、はっきりとこう主張した。
「ゲームのバグを利用するのはテクニックじゃないです。チートです」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます