2015年8月15日土曜日

読みにくいコード

道路交通法で駐停車の方法を定めた47条に「道路の左側端に沿い」という表現が使われています。

2015年8月16日追記



日本語の「道路」という語は、日常語では「車道」と同義に使われていて「歩道」は含みませんが、同法2条(用語の定義部)では車道や歩道、自転車道などを包含する概念として定義されています。

従って47条は、「道路」の最も端に位置するのが歩道であれば、歩道上に駐停車するのが正常であると言っているように見えます。

ところが同法は17条4項という中途半端な場所で
道路(歩道等と車道の区別のある道路においては、車道。以下第九節の二までにおいて同じ。)
という新たな定義を唐突に持ち出しており、これの適用範囲が47条にも及ぶので、結局、47条の「道路」は、歩道と車道が分かれている道路では「車道」を意味する事になります。

んなもん分かるかーい(笑)

全文を通読して内容を完全に把握しないと正しく理解できない法——書いた本人さえ分かっていれば良くて、他人が読む事なんて想定してないという感じですね。プログラムのコードなら障害復旧を無駄に遅らせる要因になりそうで、非難の集中砲火を浴びるんじゃないでしょうか?

2015年8月16日追記

というか、例えばC言語なら関数内で宣言した変数は自動的に、その関数内でしか効力を発揮しないローカル変数になるので、道路交通法のようなクソコードを書こうものなら即誤動作に繋がるんですけどね。グローバル変数は関数(法で言えば個別の条項)の外、ソースコードの冒頭に書かなければいけません。


現実の裁判でも、この法律の読みにくさが原因で誤判が下された事が有るようです:

道路交通執務研究会(編著)、野下文生(原著)、(2013)
『執務資料 道路交通法解説』15-2訂版4刷、東京法令出版、p. 446
(ア) 昭三七・六・一三 広島簡裁
法第四八条一項(現行第四七条二項)は、歩道と車道の区別のある道路では車道に駐車する場合に沿うべき線を示す趣旨と解すべく、駐車の場所は車道に限るということまで規定したものとは解しがたく車両は原則として歩道上に駐車できるものと解する。
2015年8月17日追記

簡裁判決も17条での定義変更を見落としていた訳ではなく、それを知った上で、「駐車の場所は車道に限るということまで規定したものとは解しがたく」と判断したようです。つまり私はここで、孫引きによる論旨の誤解という典型的な間違いを犯していたという訳ですね。


翌年に広島高裁が破棄した(p. 466)判決ですが、ここで簡易裁判所の裁判官の不注意さを責めるのは、ヒューマンエラーの観点から誤りです。誤解が起こって当然の、ぐちゃぐちゃに入り組んだ法を書いた担当省庁こそが責められるべきです。どうやら霞が関にもITエンジニア向けのセミナーのような場が必要みたいですね。

2015年8月17日追記 簡裁判決を破棄した高裁判決

ちなみに、今回の「道路」問題と同じように、2条(用語の定義)に独立した項目として立てず、法文の途中で唐突に定義を追加・変更してしまっている例が無いか気になったので、
  • (以下
  • 同じ。)
で検索してみた所、道路交通法の中だけで100箇所以上もヒットしました。多い!