要否

「わざわざ難しい仕様を作らなくてもいいんぢゃない?」

ずいぶんと昔のことになるが、電話番号の入力について検討したことがある。市外局番、市内局番、局番、内線番号なんかで構成される電話番号をデータベースで管理するのだが、確か何かの担当者を管理するシステムだったと思う。

090 だったら携帯電話だから、市内局番、市外局番部分は 8 桁になるとか、内線番号の先頭が 0 なら、後ろは 4 桁だとか、まあ、なんだかんだ難しいルールをいろいろ調べたりして、数十パターンぐらいの書式チェックを行う仕様だったと思う。顧客から提示された難解な記述の仕様を見ても、すべて網羅されているのか、重複していないのか、本当に正しいのかとか、ちゃんと判断することのできないものだった。「こんなチェック、やらなくてもいいんぢゃないの?」そう思ったのだが、仕様を変えるプロセスが不明瞭だったため、結局は最後まで残っていたんぢゃないかと思う。

複雑な電話番号チェックをやったところで、正しい電話番号であることを保証することはできない。あり得ない書式の入力を防ぐことはできるが、鈴木さんのところに佐藤さんの電話番号を登録できてしまうのである。おそらく、誤入力率を下げる効果はあまり期待できないだろう。

正しいかどうか分からない複雑な仕様を理解し、組み込み、そしてテストをするのに、どのぐらいのコストがかかるだろうか? 市内局番が 4 桁に増えたりしたけど、そんな時はプログラムも変更しなくちゃならない。そんな負担を負ってまで、効果の薄い仕様を組み込む価値があるんだろうか?

数字とハイフンしか使われてなくって、15 桁以内なら OK とする。JIS 2 バイトコード圏の数字の場合は、わざわざエラーメッセージを出したりせずに、勝手に ascii コードに変換してしまう。そんな仕様で十分ぢゃないかと思うのだ。わざわざややこしい仕様を作り出すのは、IT 屋の陥りがちな罠。ちゃんと要否を検討し、仕様をシンプルに保つのも IT 屋に求められるテクニックだと言えるだろう。気を付けたいものだ。

偉そうに書いたけれど、"正規表現で一発チェックできるんぢゃないか?" と一所懸命に考えていたのは、他ならぬ私だ。