[えでぃっとはうすのときど記]

コンピュータにおける「0」という数

 詳しいことはよく知らないが、コンピュータというのは突き詰めれば「0」か「1」か、言い換えれば「×」か「○」か、あるいは「ウソ」か「マコト」かという世界らしい。そのなかでも「0」というのは特別の意味をもつらしく、この場合「1」というのは「0」以外の総称と言ってもいいようだ。

 それを実感したのはしばらく前、あるアクセス制限のCGIスクリプトを作った時のことだった。
 一定のポイント以上になったらアクセスできるというページで、事前に何度もテストしていたにもかかわらず、入れないはずのポイント「0」の人がアクセスできているという知らせがあった。当初は誰かからパスワードを借りたのではないかと疑った。しかし実際には、特に何もしなくても普通に入れたという。僕的には、そんなアホな……、という状態だった。

 ところが、いろいろテストしてみてこの「0」というのが特別な数として浮上してきた。
 実はアクセスを制限する条件を「ポイントを持っていて、かつ、それが一定数未満であるとき」としていた。二つの条件を同時に満たすよう求めたので、自分ではより丁寧にしたつもりだった。僕の感覚では、そこには「0」も数値のひとつとして含んでいたのだ。
 ところがこの「ポイントを持っている」という部分の条件式の書き方が、実は「0」以外で「真」となるものだったのだ。そうとは知らなかった。しかも思い起こせば、まさか「0」でアクセスする人もないだろうとテストもしていなかったように思う。
 おかげでポイント「0」の時は、二重にしたつもりの条件式がアダとなって真にならないため、あっさりアクセスできてしまったという、なんともお粗末な結果だった。

 ようするに、よけいなことをせずに素直に「ポイントが一定数未満のとき」という条件にしておけばよかったのだ。考えてみれば、アクセスを許可する方をこそ条件をきびしくするべきで、間違いの上塗りをしていたようなものでもあった。大事に至らなかったのは不幸中の幸いだったが、この失敗はかなり根本的な問題として脳裏に刻み込まれた。
 実は今日、似たようなケースに遭遇したので思い出した。もちろんそれは、僕のように無知の結果ではなくて、理由のある措置だったのだけれど……。

(記:2005/01/20)



][ときど記