素歩人徒然 スパゲッティ プログラムの変更
素歩人徒然
(15)

スパゲッティ


── プログラムの変更

 ここにスパゲッティがあるとする。
 私は、殊のほかスパゲッティが好きなのだが、以前イタリア旅行の最中にあるレストランで食したスパゲッティほど私を驚かせ、私の記憶に焼き付いて離れないものはない。何しろ、それは恐ろしく固ゆでのスパゲッティだったからである。そういえば本場のスパゲッティは日本のように柔らかくはなく、固くゆでるという話をどこかで聞いた記憶がある。そうか、これが本場のスパゲッティなのか。私はそう自らを納得させつつ、そのスパゲッティを味わい食したのであった。

 しかしそれにしても、‥‥と私はなおも食べながら考えた。この固さは尋常ではないぞ。固い“芯”が残っていると言ってもいいくらいの代物なのだ。もしかしたら、これはコックがゆでる時間を間違えたのではあるまいか。そんな疑問を抱きたくなるくらい、そのスパゲッティは芯があって固かったのである。

 私はこの素朴な疑問をそのままにしてレストランを後にしたら、生涯この疑問を持ち続けたまま生きていくことになるのではないかと懸念した。その結果、どうしてもこの疑問を放置できなくなってしまったのである。そこで、勇を鼓してレストランの人に聞いてみた。すると、この固さこそが本物のスパゲッティなのだという。彼らイタリア人にとっては柔らかいフニャフニャしたスパゲッティなど断じて“スパゲッティ”と呼べるものではない!というのだ。髪の毛一本の太さの芯が残るようにゆで上げる(これをアルデンテというらしい)のがコツなのだと。本物のスパゲッティとは、どうもそういうものであるらしい。

 以来私は、日本に帰ってからも、スパゲッティといえば固ゆでにしないと気がすまなくなってしまった(断っておくが、私は別に自分で料理をしているわけではない)。そして遂に、その固ゆでのスパゲッティの方が格段にうまいことに自ら気が付いたのである。

 イタリアでは、また別のレストランで、いかすみのスパゲッティを注文したことがあった。出てきたものは、日本でよく見かけるあの真っ黒なスパゲッティではなく、薄ずみ色の上品な色合いのスパゲッティだった。もちろん味も絶品である。日本でいかすみのスパゲッティを注文しようものなら、口の中が真っ黒になるほどの黒さで二度と食べたいと思わないような代物が出てくるが、本場のものはそれとは全く違っていた。

 もちろん私は、異国の地で一度や二度スパゲッティを食したからといって、それをもって本場のスパゲッティはこうだと断ずるほど愚かではない積もりだ。しかし、それにしても彼我の差は歴然としたものがあった。何事につけ、本場のものを経験してみることは重要なことなのだと私は認識を新たにしたのであった。

 さて、ここにプログラムがあるとする。
 コンピュータで使われるプログラムというのは、正しく動作しさえすればそれでよいという程単純なものではなかろう。正しく動作するのはもちろんのことで、更にそのプログラムの記述が、将来改造しやすいように制御の流れが分かりやすく明確な構造になっていなければならないのだ。

 ソフトウェアの世界で「スパゲッティプログラム」といえば、それはプログラムとしての美しさを欠いた、ひどい、みにくいプログラムの代名詞となっている。これは、構造化プログラミングの重要性が叫ばれた折、goto 文などを多用して制御の流れが複雑に錯綜したひどい構造のプログラムを弾劾する過程で比喩的に表現されたものである。制御の流れが、まるでスパゲッティの細くて長いパスタが互いにもつれ合うようになったプログラムは、解読が難しく保守や改造がしにくいのでプログラマ泣かせになっている。この表現が使われて以来、コンピュータの世界では“スパゲッティ”は悪者になってしまったのである。

 しかし、スパゲッティを好物の一つとしている私にとって、この“スパゲッティプログラム”という言葉が意味するところのものは、甚だもって我が意にそわない表現であると言わねばならない。スパゲッティというのは本来美しいものなのだ。正しいマナーで食すれば、スパゲッティのパスタが互いにもつれ合うなどということは有り得ないと私は主張したい。無闇にパスタをこねくり回したりするからいけないのである。

 スパゲッティを食べるには(これが正式のマナーであるかどうかは知らぬ)フォークの先端に適当な量のスパゲッティをからめ、それをスプーンの腹に当てて回転させて巻き取るようにするとよい。こうすると極めてスマートに食べることができるものなのだ(決して皿の上で回転させないのがコツである)。この方法を私に教えてくれたのはアメリカの友人であった。

 私が初めてアメリカに行ったときのこと、その友人が私を家に招いてくれてスパゲッティをごちそうしてくれたことがあった。そのスパゲッティを食べながら、彼はこのマナーを私に教えてくれたのである。腹一杯食べた後、彼は型通り私にもう少し食べるかと勧めてくれた。まだ英語力が弱かった私は(注)、感謝の気持ちとスパゲッティがうまかったことをどう表現してよいものか迷っていたところだったので、「もう結構です」という意味で“No thank you”と答えるのは、どう考えてもその場の雰囲気にそぐわないと感じたのである。そして、他に適当な感謝の言葉が浮かんでこなかったこともあり、私はつい“Yes”と答えてしまった。
【注】なぜか、過去形であることに注意。このように表現することによって、その後英語力がついたかのような印象をそれとなく与えることができる。あからさまに「英語力がついた」とは言っていないので、ウソをついている訳ではない。年を重ねると、こういった巧妙な表現が平気で書けるようになるものなのだ。

 彼もびっくりしたことであろう。しかしそこは彼も紳士である。にこやかに立って行って、私のために自ら調理してくれたのであった。私はそれを、さもおいしそうに全部平らげたのである。今思い出しても、‥‥おい、あれは苦しかったぞ。

 どんなプログラムも、プロが作ったものなら最初は明確な構造で分かりやすい記述になっていたはずなのだ(私はそう信じたい)。それを、後から改造したり虫取りをしているうちに、制御の流れがもつれ、がんじがらめの構造になってしまっただけのことなのである。それが、理解しにくい“スパゲッティ状”のプログラムを生んだ本当の原因なのではなかろうか。弾劾されるべきはスパゲッティ自体ではなく、その食べ方のマナーの方ではないかと私は言いたいのである。

 スパゲッティの食べ方にはコツがある。同様にプログラムの改造や変更の仕方にもコツがある。どんなに良いプログラムでも、変更の仕方が悪いと変更を重ねていくうちに、いつしか“もつれたスパゲッティ”のようになってしまうぞという警鐘の意味でなら、私にもある程度納得がいくのであるが。

 どんなものも最初は美しい。いじくりまわしているうちに段々とひどくなってしまうものなのだ。お互い気を付けたいものである。■
【追記】しかし本当のことを言えば、イタリア人はスパゲッティを食べるのにスプーンなど使ってはいなかった。スプーンを使ったそんなお上品ぶったマナーは無用なのだ。皿の上で存分にこねくり回し好きなように食するのが一番おいしい。そしておいしく食べることが、実は一番マナーにかなったことなのであろう。