2016年10月21日

つっかえ棒

まだ木造住宅が主流だった僕の幼少期には、あちこちに「建て増し」した家があった。
「建て増し」とは要するに、住んでいるうちに狭く感じるようになった家に、追加の部屋を作る、ということだ。
もちろんほとんどの場合は大工さんに頼んでやってもらうのであろうが、素人が自分たちで建て増しする、ということもあった。

今思えば、建て増しというのはアジアそのもので、僕はそこに「都市は生命体である」と感じる。



素人が自分たちで建て増しをするとろくなことはない。
雨漏りをしたり、最初から形がいびつだったり、あるいは傾いてきたりする。

そういう時に素人は、目の前の"問題"への処置として、何らかの手段で対処しようとする。
雨漏りをするところには何らかの蓋をしたり、建物が傾いてきたら"つっかえ棒"で支えようとしたり。
そういう「その場しのぎ的」な処置を「つっかえ棒的」と呼ぼう。
つっかえ棒的なものは、人が目の前の問題に何とか対処しようとしている工夫が見られるのだが、そこに「その場しのぎ的」なものが見えるのと、その工夫があまりにも稚拙だったりするので時には笑いを誘うものであったりする。

よく地下鉄の駅で雨漏りをしている箇所があって、そこにビニール袋がガムテープで貼られて「蓋」がされている。さらに場合によっては、そのビニール袋の蓋に水が貯まったものが上手く流れるようにホースが繋げられていたりする。
僕はあれを見るといつも笑ってしまう。 あるいはただバケツで落ちてくる雨水を受けているだけとか。

この「つっかえ棒的」なるものは、コンピューター・プログラミングにおいても多々ある。

たとえばAという処理とBという処理を同時に実行する必要があるのだが、Aの処理が終わった後でないとBの処理を終えられない、ということがよくある。
簡単な例をあげると、、、会員登録フォームに記入する画面を開いて、ユーザーに登録してもらう(処理A)。その後の処理の速度を少しでも早くするため、ユーザーがフォームに記入している間に、裏で(ユーザーに見えないところで)別の処理(たとえば会員番号を発行する処理など)を先にスタートさせる(処理B)。
この二つの処理が両方終わって初めて次の処理(会員登録)に進むことができるわけだが、何らかの理由で会員番号を発行するのに非常に時間がかかってしまう場合があるとする。
このプログラムのつくり上、ユーザーが登録フォームを書き終わったときにまだ会員番号の発行が終わっていなかったら、会員登録に失敗してしまう、とする。(非常にひどいプログラムだ。)

そもそもこんな状況に陥るケースがありうるということは、そのプログラムの設計自体が間違っているのだが、これはあくまでも例なので。
こういうときにやるべき処理は、処理Bが終わった時点で処理Aが終わるのを待つようにするわけだが、この場合の「処理が終わるのを待つ」というやり方が色々とある。
やりようによっては複雑になることもあるのだが、試しに書いているプログラムなどでよく見られるのは、「◯秒止まる」というものだ。
つまり、処理Aが終わった時点で処理Bが終わっていなかったらまずいので、処理Aの最後に「10秒待つ」というものがある。実は僕も試しに何か書いてみるようなときにはこういうのを書いてしまったりする。

これはまさに「つっかえ棒的なるもの」だ。

他の部分の動作を確認するために試しに書かれたプログラムであれば仕方がない面もあるのだが、完成品のプログラムにこういうのが入っていたりすると笑ってしまう。
そこには「◯秒待つ」の◯が経験則的に求められた値であるのだが、それ自体が笑いを誘うものであるし、そのときの状態によっては◯という値が相応しくない場合も出てくるのではないだろうか?

もちろんプログラムが何をやっているか、というのはそれを使っているユーザーには見えないものであるから、「◯秒待つ」という処理が入っていようが、本当に処理Bが処理Aを待つように書かれていようが、外から見れば同じ動きをしているように見える。
これはまさにハリボテである。

つっかえ棒的なるものというのは、建築物やコンピューター・プログラミングだけの話ではなく、あらゆる分野に見られるものであろう。
そしてその分野の素人である僕たちは、それがハリボテであるということに気づかないまま、普通に生活しているのだ。 

OLランキングで1位になりたい!賛同していただける方は下記をクリック!
myinnerasia at 08:03│Comments(0)創ることについて 

コメントする

名前
URL
 
  絵文字