蛍光ペンの交差点[別館]

"どの点に関心をもつべきか ―をわれわれが学びとるのは,もっぱら仮説からだけである"

運命の実装

理系に進んでから出会った考え方の中で、輝いているものは山ほどある。

現象に潜む問題を見つける上で、これ以上ないほど役立つ考え方たちが。

 

その中で今日は「実装」の話を書いてみたいと思う。

 

なお、最初は「実装」で書いていたのだが、考えてみたら「製造法」のほうが読んで分かりやすいと思ったので、最初の定義やイディオム表現以外は全て「製造」か「製造法」に置き換えた。

 

「実装(じっそう、implementation)」とは、コンピュータ科学という分野において頻繁に用いられる業界用語だ。「実行すれば目的の動作を行うことができるプログラムの文字列」を実際に書くことを表す。

 

1つの設計に対しては、自然数n個だけの製造法が理論的には存在する。どう製造されるかに興味がない場合(誰だってa = 1とa = 0 + 0 + 1の違いに興味がないときはあるだろう)、人は設計にだけ集中する。設計者は、「可能な製造法が少なくとも1つは(たとえ今はなくても将来的には)存在する」、という仮定さえ満たせばどんな設計をしてもいい(「実装上の制約」と呼ばれる)。

 

だが真に面白いのは、設計は何を製造できるかを決めるという点である。

 

いま自分は卒業論文を書いているが、そのテーマはコンピュータのかなり根本的なとある「ソフトウェア部品」の設計について、遠回しに「その設計ではまずもって★★★(現代に求められている機能)の製造が不可能だ」と主張している。

 

自分は、そのソフトウェア部品と2年くらい関わってきながら、実際に現象について人に分かるように丁寧に書いて見なおしてみるまで、ついぞ★★★が不可能に気が付かなかった(★★★を求めている人がいることすら知らなかったこともあるが…)。

 

なんせ、僕がこれまで2年間読んできたどの文章においても、そのソフトウェア部品の設計が(★★★をするには)不十分である、と主張しているものはなかった。言われてみれば、この設計は確かに不十分だ。この設計が可能にするn通りの製造法について、たとえnが1億通りだろうと1垓通りだろうと、どの製造法も★★★を実現しない。

 

設計が決まった時点で、それの製造法が存在しない。

そして設計が決まると、ほとんど誰も★★★を話題にしなかった。

 

以前、「問題解決をやると、運命から人生を取り戻すことができます」という文章表現を見たことがあった。

 

その意味が、どこかしっくりこなかった。研究者は自分の研究テーマを説明する際にパッと10通りは文章表現が浮かぶという。それだけ現象を深く理解しているからだ。そのことと比べたとき、僕は「運命から人生を取り戻す」とは一体どういうことなのかがいまいち分からなかった。

 

これは僕の言葉で言い換えれば「(誰かに、もしくは自分が無意識に設計した)運命について、(n通りの)何をしようとも、実現される結末は変わらない、という現状を変えるために、運命の設計自体をもう一度書き直す・拡張する・あるいは削ることで、全く別物の人生(製造された運命)を歩む」ということなのだろう。問題解決とは即ち、n通り(という非常に多い場合の数)だけあってもそれに含まれない、全く別のアプローチを指す。

 

 

ところで、結構な数のプログラミング言語には、evalという関数が用意されている。こいつは非常に面白い関数で、プログラムの中で呼び出されると、プログラムはもう既に動き出しているにも関わらず、最初に書かれていたはずの実行結果(運命)には全く含まれていなかった動作(問題解決)を行い始める。

 

一般には、プログラマAさんが作ったプログラムを、プログラマBさんが使うときに、めっちゃ自然体で書けるようにするための関数である。なるほど、問題解決だ。

 

また、プログラマBさんが善人でなく、攻撃者であった場合には、最悪なことにセキュリティ・ホールの根本原因となる。なんせevalは任意のプログラムを実行できるのだ。仮にsh言語を動かせた場合、evalに"rm -rf /"(remove recursively and forcely, 再帰的に全てのファイルを問答無用で削除させる) というコマンドを渡せば、そのパソコンはOS含めた全てのデータを削除し、つまりは死んでしまう。これは悪いことだが、でも恐らくプログラマBさん本人にとっては、なるほど自分が直面した問題の解決だろう。

 

もう一つ小話がある。インターネットを支えるTCP/IPと呼ばれる設計は、僕が読んだ限りの教科書の記述では、製造されたあとに設計されたものらしい。だから設計と製造物がピタリと一致するとか。ああ、本末転倒だ。でも、そんな頭を抱えたくなるくらいアドホックなものに、僕らの生活は支えられている。

 

問題解決を実現させるための行動は、ヘタしたらアドホックで考えなしの軽率な行動のように思えるかもしれない。資格試験の受験なり、起業とか、団体の立ち上げとか、インタビューとか、出会って数ヶ月で結婚(※恩師)とか、留学とか、だいたいどれも「どうしてそれをやったの?」が、中々それまでのその人の生活と連続していない場合が多い。

 

本人が意識しているかは分からない。ただそれは本人が最終的に製造する人生を変え、それは運命という設計に挑戦したことになるのだろう。そのとき、本人は何を見ているのだろうか?n通りの製造法全てを見ている可能性はまずない。設計像も漠然としていそうだ。