法律家とシステムエンジニアの視点でみる現実社会の"例外処理"
世の中に「普通のこと」と「普通じゃないこと」の2つがあるとして、法律の世界と情報処理の世界は、どちらも主眼を「普通じゃないこと」に置く世界だ。
大学4年間では法学部で法律を学び、社会人4年間はSEとして働いているが、法律と情報処理は全く違う領域なので、周りからはどうしてこの道に進んだのかと尋ねられることは多い。それがどうしてかという問いに対する回答は今回は置いておくのだが、これら2種類の分野には共通した考え方があるというのは、一旦話しておきたいと思った。
法律の解釈が必要になる場面というのは、典型的には犯罪を起こしたり、契約が履行できなかったりという状況だ。それ自体も、現実の平和な生活や、円滑なビジネスが成り立っている状況に対して例外的な事象であるのだが、現実社会でトラブルが起きてしまった時に法律家が行う法解釈というアクションは、常に原則と例外の考え方で成り立つ。多くの法律の条文には但書きがあり、前段に該当する事象が、後段に該当することで否定されたりする。実際にその但書きが適用される場面は割合として低いが、法的安定性の確保という目的のために、あらゆるケースは事前に予測される。
同じ考え方を、システムエンジニアとして仕事をする上でも考えることになった。社内システムであれば、バッチファイルの取り込みで一番気を使うのはファイルのフォーマットのチェックだ。予想された入力されるべき値に対して異なる値が入ってきた場合、典型的には、数字のみを受け付けるべき項目で文字列が入ってくるとか、文字数オーバー、金額の桁数オーバー、あとは入力された値同士の整合性に問題がある場合は、エラー処理を行う。
仕事でプログラムのチェックを行うとき、ぼくたちは正しいデータが正しく登録されることと同等かそれ以上に、エラーデータについて正しいエラー処理が行われることについて気を使う。そして、正常データ、エラーデータともに、その後の処理には詳細な分岐処理が設計される。情報処理の世界における機能性や完全性のようなものは、適切な例外処理によって達成されるからだ。
法律と情報処理に共通するのは、大量に存在する「普通のもの」から外れたものに対して、外れたもの同士でのバランスを考える仕分け作業であるということだった。「入口において例外的な事象」を取扱うにあたって、この点を心の内に留めておかないと、現実を歪んだ形で捉えてしまうことになりかねない。法もシステムも現実に対して規制を加えるものだが、規制されない範囲に存在する自由と多様性を、ともすれば見落としがちになってしまうからだ。