カレンダー

2020/03
    
       

広告

Twitter

記事検索

ランダムボタン

ないものがある

by 唐草 [2024/03/26]



 無いものを見つけるのは難しい。
 出席を取るときに「いない人、挙手」と言う寒くて痛い先生がいただろう。学生の頃は「冗談のつもりなんだろう。これがジェネレーションギャップか」と考えて愛想笑いで口角を上げるも、目はゴミを見るようだったのを覚えている。
 だが、教員として教卓に立つようになって分かった。出席者を把握するのと欠席者を把握するのは別物なのだ。出席を取って分かるのは欠席者の人数だけ。誰がいないのかは分からない。だから、誰がいないのかを把握するために欠席者に挙手してもらいたいというのは、冗談ではなく本心なのだ。
 出席に限らず、いない人やなくなったものを把握するのは難しい。実態のある現実世界ですら困難なのだから、実態のないコンピュータの世界だと無いものの判定はさらに難しい。
 プログラムを書いていると、この「無いもの」の判定で底なしとも思える泥沼にハマることがよくある。
 事態をより複雑にするのは、コンピュータが「無い」と判断する条件が複数あること。分かりやすく現実の住所に例えると「指定の住所の建物にものを届けてほしい」と命令したものの、「指定された住所に建物がなかった」場合や「建物はあるが、住所が存在していなかった」というようなパターンがある。こういう事態にぶち当たると融通の効かない(だからこそ正確な)コンピュータはエラーを吐いて止まる。
 だから、ぼくらプログラマーはありとあらゆる場所で無いものを参照していないかどうかを確認し続ける。だがコンピューターには、先の住所の例よりも多くの「無い状態」がある。一様な方法では取りこぼしなく「無い状態」を確認できない。
 今日はUNITY固有の無い状態に振り回されてしまった。それをお手軽な方法で確認していたので致命的な取りこぼしがあった。
 ちなみにこれらの「無い状態」のことは一般的にヌルポインタと呼ぶ。昔のコピペにあった「ヌルポ」を叩くというのは、これに起因している。嘘みたいだけど本当の話。
 2000年頃をモチーフにしたゲームを作っているとは言え、ヌルポの恐怖をC#で追体験するとは夢にも思わなかった。