素歩人徒然 ジグソーパズル 部品をつなぐ
素歩人徒然
(19)

ジグソーパズル


── 部品をつなぐ

 茶の間で新聞を読みながらふとテレビの方に目をやると、テレビでは海外からの地震被害のニュースを伝えていた。古い教会の礼拝堂の中らしきところが映っていたのだが、突然天井部分からばらばらと崩れはじめる画面へと変わったのである。

 崩れ落ちる壁と土砂、土煙りの中を逃げまどう人かげ。地震のため亀裂の入っていた礼拝堂の壁が、突然崩れてきたのである。もうもうたる土煙りがこちらにも迫ってくる。実にリアルで決定的なシーンがとらえられていた。う〜ん、すごい。思わず後ずさりしたくなるような場面である。しかしカメラのアングルは微動だにしていない。たいした度胸のカメラマンだと私は一瞬は感服したのだが、どうやらこれは望遠レンズを用いて礼拝堂の外から撮影したものらしい。そう思って見ると、むしろカメラが多少でもぶれた方がより迫真的であったろう、などと私はひと事のように考えていたのであった。

 しかし後日、新聞でこのときの事故の詳細を読んで驚いた。以前、自分が訪れたことのあるアッシジ(注1)のサン・フランチェスコ聖堂のことだったからである。
【注1】イタリア中部のウンブリア州の丘に広がる中世の町。

 その少し前からイタリアでは群発地震が多発していた。それが建物にどんな影響を及ぼしているかを調べている最中に、この崩落事故が起ってしまったのだ。三ヶ所の丸天井が崩落し、調査をしていた人や修道士ら四人が下敷きになって亡くなったという。テレビで見たのはその瞬間の映像だったのである。

 この聖堂には、中世の画家ジオットの描いた壁画があるので知られている。その代表作といわれる聖人フランチェスコの生涯を描いた二十八点の連作が、聖堂の上部の壁部分にあった。しかし、これは亀裂が入っただけで崩落は免れたという。私が訪れたとき、たまたま日本人の修道士がいて詳しく説明してくれたのが思い出された。一方、チマブーエの「福音者マタイ」が描かれた壁の方は崩落して粉々になってしまったという。惜しいことである。

 現在この壁画を修復すべく、毎日四十人程のボランティアの人達が破片の山を回収している最中だという。しかし修復するといっても、粉々になった壁画の破片をつなぎ合わせるのは、巨大なジグソーパズルに取り組むようなもので大変な作業であろう。彼らはこれを西暦2000年の聖年までには修復させたいといっている。しかし第二次大戦で破壊された天井画の復元に四十年もかかった例があるというから、こういう作業こそコンピュータの力を借りてやった方が早いのではないかと思う。

 もっとも、各々の破片の部位と位置関係が判明したとしても、それらをうまくつなぎ合わせることができるとは限らない。縁の部分が欠けてしまっているかもしれない。中には粉々になって土砂と化してしまった部位もあるであろう。そういうところは白い粘土の“のりしろ”で埋めることによってつないでいくしかない。よく博物館などで見かける復元された古代の壷などでは、破片をつないだ白い筋が無数に残っている酷い姿になったものがあるけれど、あんな具合になってしまうのだろうか。残念なことである。

 ところでジグソーパズルといえば、最近のソフトウェア作りの方法は巨大なジグソーパズルを作り上げるのと同じようになってきている。沢山のツールの断片(これを部品という)の中から自分の要求を満たすものを捜し出し、それらをうまくつなぎ合わせることによって全体を構成するという作り方である。この方法によれば、個々の部品をすべて自分でゼロから作り出さなくても済むので、全体的に生産性がよくなる。しかも、できあがったシステムの安定性は格段によいといわれている。しかし自分の望む“ぴったりの部品”を探し出すのは予想外に難しいものである。

 ジグソーパズルの場合も、断片の数が多くなればなるほど個々の場面にぴったりの断片を探し出すのは飛躍的に難しくなるものだ。
 私はいつも思うのだが、この世で大型のジグソーパズルほど贅沢な遊びはないのではないか。ジグソーパズルを一度でもやったことのある人なら分かると思うが、まず時間がふんだんに必要である。大きなものになると完成させるのに数日から数週間はかかる。その間(普通の人なら、仕事にも行かねばならぬから)作りかけのまま放置しておく場所がどうしても必要となる。家人に触られたり片づけられたりしない安全な場所が確保できなければならない。更に、運良く完成した暁には、その作品を完成したままの姿で保存できる場所が必要となる。折角苦労して完成させたものを、すぐさまとり崩して断片に戻して保存するというような人は極めてまれであろうと思う。そういう安全で広い場所を長期にわたって確保できる(時間的にも、空間的にも)余裕のある人でなければ、大型のジグソーパズルには挑戦できないのである。

 しかも、ジグソーパズルというのは決して妥協を許さない。これはちょっと形が違うようだが‥‥でも何とかなりそうだ、などと強引に枠に押し込んでみる。すると、これが結構入ってしまったりするのだ。しかしちょっと隙間が残ったりして、どうもしっくりしない。ここで「まぁ、いいか」(注2)と妥協するようだとジグソーパズルをやる資格はないといわざるをえない。同じ形の断片は二つと存在しないのだから(注3)、そこで使ってしまうといつか別の部分で破綻をきたすのは明白だからである。やはり全体をうまく完成させたければ、些細な違いも決して見過ごしにはできないものなのである。それがジグソーパズルの難しさであり、面白いところなのであろう。
【注2】発音に注意! 世の中にはこれを「マ、イッカ」と発音する人がいるやに聞いておる。ここは正確に発音してほしい。
【注3】個々に確かめた訳ではない。超大型のジグソーパズルでは同じ形の断片が存在するという。

 しかしソフトウェア開発においては、今はやりのオブジェクト指向の技術を使えば、少し形の違う断片でも強引に埋め込んでつなぐことができるようになる。自分の望むぴったりの部品ではないが、それに自分なりにコードをちょっと付加すれば使えるようになるのだ。それがオブジェクト指向におけるクラスの継承機能のよいところであろう。コードの付加は、いわば部品をつなぐための“のりしろ”だと思えばよい。適当なところで「まぁ、いいか」(くどいが、発音に注意)と妥協することが許されているのだ。素晴らしいことではないか。

 オブジェクト指向技術によるソフトウェア作りというのは、大型のジグソーパズルに取り組むのと同じで、事前の準備や環境の設定・維持・管理が必要である。しかも成果を出すにはかなりの時間を要するものなので、結構贅沢な開発方法であるともいえるであろう。
 ただ一般的に言って、オブジェクト指向プログラミングで作られたソフトウェアは図体の大きなものになり勝ちである。全体的な性能もいま一つというところがある。手早くできあがるという利点のある反面、本来必要としていない余計なコード部分までも目的コードとして抱え込んでしまうのが原因ではないかと思う。やはり、ぴったりの部品を捜し出す努力の方も怠ってはなるまい。ある場合にはゼロから自作することも必要になるのではないか。我々の作るソフトウェアは、修復された壁画と同じくできるだけ“のりしろ”の目立たない姿にしたいものである。■