由来
Here be Doragons
“Here be Doragons” という中世ヨーロッパのフレーズがある。
「ここにドラゴンがいる」と訳せるものだが、地図の用語である。
中世の装飾が施された地図には、いかにもファンタジーな生物が描かれている、と言うイメージがないだろうか。例えばドラゴンのような。
これには歴とした意味があり、未踏の地域を示すサインのようなものだったと言う。
「何があっても保証しませんよ、例えドラゴンがいてもね」を指すのだろう。
――――愚かな旅人はそんなエリアに迷いこむことができてしまう。
人間は少なからず愚かであるので、ドラゴンと遭遇せずにすむと言い切ることはできない。
ドラゴンと言う潜在的な危険に言葉の上でしか蓋がされていないのだ。
それならば、柵でも置いて封鎖をする方が確実で良いのではないだろうか。
――――このブログで扱うことの多い情報技術的な話でもそうだ。
それ風に言えば、未定義な動作は不可能であるべきなのだ。
変に触れて、こわ~いエラーメッセージですらゴブリン程度だ。ドラゴンとはそのコンソールの外側にいる。その存在にすら気づかないほどなのだ。あまりにも巨大だから。 [annotation: こわ~いエラーメッセージですらゴブリン程度だ。ドラゴンとはそのコンソールの外側にいる。その存在にすら気づかないほどなのだ。あまりにも巨大だから。] のである。
プログラミング言語に良くある仕組みであるJavaのNullPointerExceptionが有名だろう。やってはいけない操作をした際に、プログラムを停止させるための命令を送信するものだ。ここではNullポインタの参照が禁忌操作である。これらが発生するかどうかをソースコード上で確認するためには、実装を直接見るしか無いことが多い。 [annotation: JavaのNullPointerExceptionが有名だろう。やってはいけない操作をした際に、プログラムを停止させるための命令を送信するものだ。ここではNullポインタの参照が禁忌操作である。これらが発生するかどうかをソースコード上で確認するためには、実装を直接見るしか無いことが多い。] と言うのも、言語の仕様と言う側面においてはドラゴンの一種であろう。
「やらないでね」と言う注意だけであり、コードの文法を確認しただけでは、そのロジックを精査しなければ、発見できない存在なのである。
プログラムはコンパイラに止められなかったのに。許されたのに。 [annotation: コンパイラに止められなかったのに。許されたのに。] はずなのに、そのメモリの上だけにドラゴンは表われるのだ。
――――我々は科学文明に生きているので、ドラゴンが実際には存在しないであろうことを知っている。
道を調べ、舗装して、監視するシステムがあるのだ。ドラゴンを見逃すことなどないはずである。
プログラムでも同じだろう。
エラーハンドリングと呼ばれる概念だ。おかしな挙動になりかねない操作において、発生しうる危険性を列挙し、その対応を記述せねばならないと言う考えである。少し複雑になるが、危険な操作は慎重にすべきなのだ。 [annotation: エラーハンドリングと呼ばれる概念だ。おかしな挙動になりかねない操作において、発生しうる危険性を列挙し、その対応を記述せねばならないと言う考えである。少し複雑になるが、危険な操作は慎重にすべきなのだ。] はずなのだ。
だからここにドラゴンはいないはずなのである。